knxdisplay/prodxml/Display.xml
2026-01-27 10:34:08 +01:00

268 lines
19 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<KNX xmlns="http://knx.org/xml/project/20" CreatedBy="KNX MT" ToolVersion="5.1.255.16695">
<ManufacturerData>
<Manufacturer RefId="M-00FA">
<Catalog>
<CatalogSection Id="M-00FA_CS-1" Name="Geräte" Number="1" DefaultLanguage="de">
<CatalogItem Id="%CatalogItemId%" Name="SmartHomeDisplay" Number="1" ProductRefId="%ProductId%" Hardware2ProgramRefId="%Hardware2ProgramId%" DefaultLanguage="de" />
</CatalogSection>
</Catalog>
<ApplicationPrograms>
<ApplicationProgram Id="%AID%" ApplicationNumber="712" ApplicationVersion="1" ReplacesVersions="0" ProgramType="ApplicationProgram" MaskVersion="MV-07B0" Name="SmartHomeDisplay" LoadProcedureStyle="MergedProcedure" PeiType="0" DefaultLanguage="de" DynamicTableManagement="false" Linkable="true" MinEtsVersion="5.0">
<Static>
<Code>
<RelativeSegment Id="%AID%_RS-04-00000" Name="Parameters" Offset="0" Size="%MemorySize%" LoadStateMachine="4" />
</Code>
<ParameterTypes>
<!-- the following ParameterTypes are from a productive example -->
<!-- simple integer type -->
<ParameterType Id="%AID%_PT-DelaySeconds" Name="DelaySeconds">
<TypeNumber SizeInBit="32" Type="signedInt" minInclusive="0" maxInclusive="86400" />
</ParameterType>
<!-- enumeration with 16-bit (word) values -->
<ParameterType Id="%AID%_PT-DelaySelection" Name="DelaySelection">
<TypeRestriction Base="Value" SizeInBit="16">
<Enumeration Text="1 Sekunde" Value="1" Id="%AID%_PT-DelaySelection_EN-0" />
<Enumeration Text="2 Sekunden" Value="2" Id="%AID%_PT-DelaySelection_EN-1" />
<Enumeration Text="5 Sekunden" Value="5" Id="%AID%_PT-DelaySelection_EN-2" />
<Enumeration Text="10 Sekunden" Value="10" Id="%AID%_PT-DelaySelection_EN-3" />
<Enumeration Text="30 Sekunden" Value="30" Id="%AID%_PT-DelaySelection_EN-4" />
<Enumeration Text="1 Minute" Value="60" Id="%AID%_PT-DelaySelection_EN-5" />
<Enumeration Text="2 Minuten" Value="120" Id="%AID%_PT-DelaySelection_EN-6" />
<Enumeration Text="5 Minuten" Value="300" Id="%AID%_PT-DelaySelection_EN-7" />
<Enumeration Text="10 Minuten" Value="600" Id="%AID%_PT-DelaySelection_EN-8" />
<Enumeration Text="30 Minuten" Value="1800" Id="%AID%_PT-DelaySelection_EN-9" />
<Enumeration Text="manuelle Eingabe (Sekundengenau)" Value="0" Id="%AID%_PT-DelaySelection_EN-10" />
</TypeRestriction>
</ParameterType>
<!-- Demo ParameterTypes to show available possibilities -->
<!-- Parameter type for text parameter, just for descriptions in ETS, is not transferred to device -->
<ParameterType Id="%AID%_PT-Text40Byte" Name="Text40Byte">
<TypeText SizeInBit="320" />
</ParameterType>
<!-- Parameter type for 1 bit parameter, presented as checkbox -->
<ParameterType Id="%AID%_PT-CheckBox" Name="CheckBox">
<TypeNumber SizeInBit="1" Type="unsignedInt" minInclusive="0" maxInclusive="1" UIHint="CheckBox" />
</ParameterType>
<!-- Parameter type for 1 bit parameter, presented as radio button -->
<ParameterType Id="%AID%_PT-YesNo" Name="YesNo">
<TypeRestriction Base="Value" SizeInBit="1">
<Enumeration Text="Nein" Value="0" Id="%AID%_PT-YesNo_EN-0" />
<Enumeration Text="Ja" Value="1" Id="%AID%_PT-YesNo_EN-1" />
</TypeRestriction>
</ParameterType>
<!-- Parameter type for an 8 bit percent parameter -->
<ParameterType Id="%AID%_PT-Percentage" Name="Percentage">
<TypeNumber SizeInBit="8" Type="signedInt" minInclusive="0" maxInclusive="100" />
</ParameterType>
<!-- Parameter type for an 16 bit float value like temperature -->
<ParameterType Id="%AID%_PT-ValueDpt9" Name="ValueDpt9">
<TypeFloat Encoding="IEEE-754 Single" minInclusive="-671088" maxInclusive="670760" />
</ParameterType>
<!-- Parameter type for an 8 bit enumeration -->
<ParameterType Id="%AID%_PT-DptSelect" Name="DptSelect">
<TypeRestriction Base="Value" SizeInBit="8">
<Enumeration Text="DPT 5.001 (1 Byte, Prozentwert)" Value="5" Id="%AID%_PT-DptSelect_EN-0" />
<Enumeration Text="DPT 9.007 (2 Byte, Fließkommawert)" Value="9" Id="%AID%_PT-DptSelect_EN-1" />
</TypeRestriction>
</ParameterType>
</ParameterTypes>
<Parameters>
<!-- the follwoing 3 parameters represent a productive example -->
<!-- A parameter to enter manually a number of seconds -->
<Parameter Id="%AID%_P-1" Name="StartupDelay" ParameterType="%AID%_PT-DelaySeconds" Text=" Zeit (Sekundengenau)" SuffixText="Sekunden" Value="10">
<!-- offset has always to start with 0 -->
<Memory CodeSegment="%AID%_RS-04-00000" Offset="0" BitOffset="0" />
</Parameter>
<!-- A parameter to choose predefined seconds from a dropdown -->
<Parameter Id="%AID%_P-2" Name="StartupDelaySelection" ParameterType="%AID%_PT-DelaySelection" Text="Zeit bis das Gerät nach einem Neustart aktiv wird" Value="10">
<!-- you have to calculate the right offset according to size of the used type -->
<Memory CodeSegment="%AID%_RS-04-00000" Offset="4" BitOffset="0" />
</Parameter>
<!-- A parameter to enter manually a number of seconds -->
<Parameter Id="%AID%_P-3" Name="Heartbeat" ParameterType="%AID%_PT-DelaySeconds" Text="'In Betrieb'-Telegramm senden alle" SuffixText="Sekunden" Value="300">
<Memory CodeSegment="%AID%_RS-04-00000" Offset="6" BitOffset="0" />
</Parameter>
<!-- additional demo parametes to show available possibilities -->
<!-- 1-Bit parameter usage, to choose, which sensors are attached -->
<Parameter Id="%AID%_P-4" Name="TemperatureSensor" ParameterType="%AID%_PT-CheckBox" Text="Temperatursensor" Value="0">
<Memory CodeSegment="%AID%_RS-04-00000" Offset="10" BitOffset="0" />
</Parameter>
<!-- Both parameters write into the same parameter byte, but at different BitOffsets!!! -->
<Parameter Id="%AID%_P-5" Name="HumiditySensor" ParameterType="%AID%_PT-CheckBox" Text="Luftfeuchtesensor" Value="0">
<Memory CodeSegment="%AID%_RS-04-00000" Offset="10" BitOffset="1" />
</Parameter>
<!-- A parameter to enter (informational) text, this parameter is not transferred to the device (no memory block reference) -->
<Parameter Id="%AID%_P-6" Name="TemperatureText" ParameterType="%AID%_PT-Text40Byte" Text="Bezeichnung des Temperatursensors" Value="Temperatur" />
<!-- A parameter for a float value -->
<Parameter Id="%AID%_P-7" Name="TemperatureAlign" ParameterType="%AID%_PT-ValueDpt9" Text="Temperaturwert anpassen" Value="0">
<Memory CodeSegment="%AID%_RS-04-00000" Offset="11" BitOffset="0" />
</Parameter>
<Parameter Id="%AID%_P-8" Name="HumidityText" ParameterType="%AID%_PT-Text40Byte" Text="Bezeichnung des Luftfeuchtesensors" Value="Luftfeuchte" />
<Parameter Id="%AID%_P-9" Name="HumidityAlign" ParameterType="%AID%_PT-ValueDpt9" Text="Luftfeuchte anpassen" Value="0">
<Memory CodeSegment="%AID%_RS-04-00000" Offset="13" BitOffset="0" />
</Parameter>
<!-- A parameter with a 8 bit dropdown, allows selection of a dpt for output -->
<Parameter Id="%AID%_P-10" Name="HumiditySend" ParameterType="%AID%_PT-DptSelect" Text="Wert senden als" Value="9">
<Memory CodeSegment="%AID%_RS-04-00000" Offset="15" BitOffset="0" />
</Parameter>
</Parameters>
<ParameterRefs>
<!-- ParameterRef have to be defined for each parameter, pay attention, that the ID-part (number) after R- is unique! -->
<!-- ParameterRef are used in the ETS UI -->
<ParameterRef Id="%AID%_P-1_R-1" RefId="%AID%_P-1" />
<ParameterRef Id="%AID%_P-2_R-2" RefId="%AID%_P-2" />
<ParameterRef Id="%AID%_P-3_R-3" RefId="%AID%_P-3" />
<ParameterRef Id="%AID%_P-4_R-4" RefId="%AID%_P-4" />
<ParameterRef Id="%AID%_P-5_R-5" RefId="%AID%_P-5" />
<ParameterRef Id="%AID%_P-6_R-6" RefId="%AID%_P-6" />
<ParameterRef Id="%AID%_P-7_R-7" RefId="%AID%_P-7" />
<ParameterRef Id="%AID%_P-8_R-8" RefId="%AID%_P-8" />
<ParameterRef Id="%AID%_P-9_R-9" RefId="%AID%_P-9" />
<ParameterRef Id="%AID%_P-10_R-10" RefId="%AID%_P-10" />
</ParameterRefs>
<ComObjectTable>
<!-- ComObject sending a 'still alive' signal, DPT 1 (1 bit) -->
<ComObject Id="%AID%_O-1" Name="Heartbeat" Text="In Betieb" Number="1" FunctionText="Ausgang (zyklisch)" ObjectSize="1 Bit" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" DatapointType="DPST-1-2" />
<!-- ComOject sending a temperature (float) value, DPT 9.001 (2 Bytes) -->
<ComObject Id="%AID%_O-2" Name="Temperature" Text="Temperaturmesswert" Number="2" FunctionText="Ausgang" ObjectSize="2 Bytes" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" DatapointType="DPST-9-1" />
<!-- ComObject sending a humidity value, DPT and Size are taken from according ComObjectRef, see comment there -->
<ComObject Id="%AID%_O-3" Name="Humidity" Text="Luftfeuchtemesswert" Number="3" FunctionText="Ausgang" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" />
<!-- ComObject as an input example, alows the requert of all measured values at once -->
<ComObject Id="%AID%_O-4" Name="Request" Text="Alle Messwerte anfordern" Number="4" FunctionText="Eingang" ObjectSize="1 Bit" ReadFlag="Disabled" WriteFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" UpdateFlag="Enabled" ReadOnInitFlag="Disabled" DatapointType="DPST-1-16" />
</ComObjectTable>
<ComObjectRefs>
<!-- A ComObjecdtRef is necessary for each ComObject, ComObjectRef are used in the ETS UI -->
<ComObjectRef Id="%AID%_O-1_R-1" RefId="%AID%_O-1" />
<ComObjectRef Id="%AID%_O-2_R-2" RefId="%AID%_O-2" />
<!-- There mitght be more that one ComObjectRef for a ComObject, like here, the two different ComObjectRef define different Size and DPT for ComObject 3 -->
<!-- If there is more than one ComObjectRef for a specific ComObject, you have to ensure, that exactly one of them is visible in the UI -->
<ComObjectRef Id="%AID%_O-3_R-31" RefId="%AID%_O-3" ObjectSize="1 Byte" DatapointType="DPST-5-1" />
<ComObjectRef Id="%AID%_O-3_R-32" RefId="%AID%_O-3" ObjectSize="2 Bytes" DatapointType="DPST-9-7" />
<ComObjectRef Id="%AID%_O-4_R-4" RefId="%AID%_O-4" />
</ComObjectRefs>
<AddressTable MaxEntries="65535" />
<AssociationTable MaxEntries="65535" />
<LoadProcedures>
<LoadProcedure MergeId="2">
<LdCtrlRelSegment LsmIdx="4" Size="%MemorySize%" Mode="1" Fill="0" AppliesTo="full" />
<LdCtrlRelSegment LsmIdx="4" Size="%MemorySize%" Mode="0" Fill="0" AppliesTo="par" />
</LoadProcedure>
<LoadProcedure MergeId="4">
<LdCtrlWriteRelMem ObjIdx="4" Offset="0" Size="%MemorySize%" Verify="true" AppliesTo="full,par" />
</LoadProcedure>
<LoadProcedure MergeId="7">
<LdCtrlLoadImageProp ObjIdx="1" PropId="27" />
<LdCtrlLoadImageProp ObjIdx="2" PropId="27" />
<LdCtrlLoadImageProp ObjIdx="3" PropId="27" />
<LdCtrlLoadImageProp ObjIdx="4" PropId="27" />
</LoadProcedure>
</LoadProcedures>
<Options />
</Static>
<!-- Here statrs the UI definition -->
<Dynamic>
<!-- The following block is always there -->
<ChannelIndependentBlock>
<!-- A parameter block represents a tab on the left side, showing a page full of parameters -->
<ParameterBlock Id="%AID%_PB-1" Name="Docu" Text="Documentation">
<!-- In this example the first Tab shows some documentation -->
<ParameterSeparator Id="%AID%_PS-1" Text="Kurze Einführung:" />
<!-- A parameter seperator shows just some text -->
<ParameterSeparator Id="%AID%_PS-2" Text="Das Gerät kann ein 'In Betrieb'-Telegramm in einstellbarer Zeit senden." />
<ParameterSeparator Id="%AID%_PS-3" Text="Die Zeit, bis das Gerät nach einem Neustart erstmals meldet, ist einstellbar." />
<ParameterSeparator Id="%AID%_PS-4" Text="Es erlaubt die Auswahl der installierten Sensoren." />
<ParameterSeparator Id="%AID%_PS-5" Text="Pro Sensor können weitere Einstellugnen auf den dann erscheinenden Tabs gemacht werden." />
</ParameterBlock>
<!-- A tab page with general settings -->
<ParameterBlock Id="%AID%_PB-2" Name="General" Text="Allgemeine Parameter">
<!-- The first Parameter allows the entry of heartbeat cycle -->
<ParameterRefRef RefId="%AID%_P-3_R-3" />
<!-- conditional element referencing the content of above parameter -->
<choose ParamRefId="%AID%_P-3_R-3">
<!-- if the content of the parameter is not equal zero, the following block is shown -->
<when test="!=0">
<!-- this means: ComObject 'Heartbeat' is just shown, if the user entered a valid cycle time -->
<ComObjectRefRef RefId="%AID%_O-1_R-1" />
</when>
</choose>
<!-- Parameter to choose startup delay -->
<ParameterRefRef RefId="%AID%_P-2_R-2" />
<choose ParamRefId="%AID%_P-2_R-2">
<when test="0">
<!-- This means: If the user cooses manual entry in the dropdown, we display the 'manual entry' parameter -->
<ParameterRefRef RefId="%AID%_P-1_R-1" />
</when>
</choose>
<!-- A ParameterSeparator with an empty text is presented as a line -->
<ParameterSeparator Id="%AID%_PS-1" Text=" " />
<ParameterSeparator Id="%AID%_PS-2" Text="Angeschlossene Sensoren:" />
<!-- Checkboxes for sensor selection -->
<ParameterRefRef RefId="%AID%_P-4_R-4" />
<ParameterRefRef RefId="%AID%_P-5_R-5" />
</ParameterBlock>
</ChannelIndependentBlock>
<choose ParamRefId="%AID%_P-4_R-4">
<when test="1">
<!-- Channels are used to present group of tabs, here just as an example with one tab -->
<!-- this channel is within a choose block, it is displayed just in case the temperaturesensor is installed -->
<Channel Id="%AID%_CH-1" Name="Temperature" Number="1" Text="Temperatursensor">
<!-- This is a tab within a channel -->
<ParameterBlock Id="%AID%_PB-3" Name="Temp" Text="Einstellungen">
<!-- Display temperature settings -->
<ParameterRefRef RefId="%AID%_P-6_R-6" />
<ParameterRefRef RefId="%AID%_P-7_R-7" />
<!-- ...and according ComObjects -->
<ComObjectRefRef RefId="%AID%_O-2_R-2" />
<ComObjectRefRef RefId="%AID%_O-4_R-4" />
</ParameterBlock>
</Channel>
</when>
</choose>
<!-- same as above for humidity -->
<choose ParamRefId="%AID%_P-5_R-5">
<when test="1">
<Channel Id="%AID%_CH-2" Name="Humidity" Number="2" Text="Luftfeuchtesensor">
<ParameterBlock Id="%AID%_PB-4" Name="Hum" Text="Einstellungen">
<!-- display humidity settings -->
<ParameterRefRef RefId="%AID%_P-8_R-8" />
<ParameterRefRef RefId="%AID%_P-9_R-9" />
<ParameterRefRef RefId="%AID%_P-10_R-10" />
<!-- The output DPT depends on the chosen value in the dropdown -->
<choose ParamRefId="%AID%_P-10_R-10">
<when test="5">
<!-- Use DPT 5 ComOjbect -->
<ComObjectRefRef RefId="%AID%_O-3_R-31" />
</when>
<when test="9">
<!-- Use DPT 9 ComObject -->
<ComObjectRefRef RefId="%AID%_O-3_R-32" />
</when>
</choose>
<!-- ComObjects might be enabled more than once, they appear of course just once -->
<ComObjectRefRef RefId="%AID%_O-4_R-4" />
</ParameterBlock>
</Channel>
</when>
</choose>
</Dynamic>
</ApplicationProgram>
</ApplicationPrograms>
<Hardware>
<Hardware Id="%HardwareId%" Name="SmartHomeDisplay" SerialNumber="712" VersionNumber="1" BusCurrent="10" HasIndividualAddress="true" HasApplicationProgram="true">
<Products>
<Product Id="%ProductId%" Text="SmartHomeDisplay" OrderNumber="712" IsRailMounted="false" DefaultLanguage="de">
<RegistrationInfo RegistrationStatus="Registered" />
</Product>
</Products>
<Hardware2Programs>
<Hardware2Program Id="%Hardware2ProgramId%" MediumTypes="MT-0">
<ApplicationProgramRef RefId="%AID%" />
<RegistrationInfo RegistrationStatus="Registered" RegistrationNumber="0001/%HardwareVersionEncoded%1" />
</Hardware2Program>
</Hardware2Programs>
</Hardware>
</Hardware>
</Manufacturer>
</ManufacturerData>
</KNX>