You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/10/23 21:14:15 UTC

[plc4x] 01/01: feat: Moved the code-generation into a separate profile in preparation to supporting reproducible builds

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/code-generation-in-profile
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit f6708c21035f4a0fff0b7b9ff287946ee95c81f9
Author: Christofer Dutz <cd...@apache.org>
AuthorDate: Mon Oct 23 23:14:05 2023 +0200

    feat: Moved the code-generation into a separate profile in preparation to supporting reproducible builds
---
 plc4c/pom.xml                                      |   225 +-
 plc4go/pom.xml                                     |   365 +-
 plc4j/drivers/ab-eth/pom.xml                       |    48 +-
 plc4j/drivers/ads/pom.xml                          |    74 +-
 plc4j/drivers/bacnet/pom.xml                       |    61 +-
 plc4j/drivers/c-bus/pom.xml                        |    58 +-
 plc4j/drivers/can/pom.xml                          |   148 +-
 plc4j/drivers/canopen/pom.xml                      |   169 +-
 plc4j/drivers/eip/pom.xml                          |    54 +-
 plc4j/drivers/firmata/pom.xml                      |    48 +-
 plc4j/drivers/iec-60870/pom.xml                    |    48 +-
 plc4j/drivers/knxnetip/pom.xml                     |    48 +-
 plc4j/drivers/modbus/pom.xml                       |    48 +-
 plc4j/drivers/opcua/pom.xml                        |    48 +-
 plc4j/drivers/open-protocol/pom.xml                |    48 +-
 plc4j/drivers/plc4x/pom.xml                        |    50 +-
 plc4j/drivers/profinet-ng/pom.xml                  |    58 +-
 plc4j/drivers/profinet/pom.xml                     |    58 +-
 plc4j/drivers/s7/pom.xml                           |    48 +-
 plc4j/drivers/simulated/pom.xml                    |    54 +-
 plc4j/tools/plc4x-server/pom.xml                   |    50 +-
 plc4j/transports/socketcan/pom.xml                 |    86 +-
 plc4net/pom.xml                                    |    52 +-
 pom.xml                                            |    12 +-
 protocols/bacnetip/pom.xml                         |   167 +-
 .../bacnetip/bacnet-bit-strings-tagged.mspec       |   152 +
 .../protocols/bacnetip/bacnet-enums-tagged.mspec   |   842 +
 .../bacnetip/bacnet-private-enums-tagged.mspec     |   568 +
 .../protocols/bacnetip/bacnet-vendorids.mspec      |  1492 ++
 .../bacnetip/src/main/script/getVendorIds.groovy   |     8 +-
 .../src/main/script/produceTaggedBitStrings.groovy |     8 +-
 .../src/main/script/produceTaggedEnums.groovy      |     6 +-
 .../main/script/produceTaggedPrivateEnums.groovy   |     6 +-
 protocols/knxnetip/pom.xml                         |   156 +-
 .../protocols/knxnetip/knx-master-data.mspec       |  4700 ++++
 protocols/knxnetip/src/main/xslt/knx-types.xsl     |     3 +
 protocols/opcua/pom.xml                            |   320 +-
 .../generated/protocols/opcua/opc-manual.mspec     |  3224 +++
 .../generated/protocols/opcua/opc-services.mspec   | 21209 +++++++++++++++++++
 .../generated/protocols/opcua/opc-status.mspec     |   290 +
 .../main/generated/protocols/opcua/opc-types.mspec |    23 +
 protocols/opcua/src/main/xslt/opc-manual.xsl       |    21 +
 protocols/opcua/src/main/xslt/opc-services.xsl     |    20 +
 protocols/opcua/src/main/xslt/opc-status.xsl       |    20 +
 protocols/opcua/src/main/xslt/opc-types.xsl        |    22 +-
 .../plc4py/protocols/modbus/readwrite/DataItem.py  |   778 +-
 .../protocols/modbus/readwrite/DriverType.py       |     7 +-
 .../plc4py/protocols/modbus/readwrite/ModbusADU.py |    66 +-
 .../protocols/modbus/readwrite/ModbusAsciiADU.py   |    63 +-
 .../protocols/modbus/readwrite/ModbusConstants.py  |    28 +-
 .../protocols/modbus/readwrite/ModbusDataType.py   |    62 +-
 .../ModbusDeviceInformationConformityLevel.py      |     7 +-
 .../readwrite/ModbusDeviceInformationLevel.py      |     7 +-
 .../ModbusDeviceInformationMoreFollows.py          |     7 +-
 .../readwrite/ModbusDeviceInformationObject.py     |    27 +-
 .../protocols/modbus/readwrite/ModbusErrorCode.py  |     7 +-
 .../plc4py/protocols/modbus/readwrite/ModbusPDU.py |   486 +-
 .../modbus/readwrite/ModbusPDUDiagnosticRequest.py |    37 +-
 .../readwrite/ModbusPDUDiagnosticResponse.py       |    37 +-
 .../protocols/modbus/readwrite/ModbusPDUError.py   |    41 +-
 .../ModbusPDUGetComEventCounterRequest.py          |    25 +-
 .../ModbusPDUGetComEventCounterResponse.py         |    41 +-
 .../readwrite/ModbusPDUGetComEventLogRequest.py    |    25 +-
 .../readwrite/ModbusPDUGetComEventLogResponse.py   |    56 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.py    |    52 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.py   |    52 +-
 .../modbus/readwrite/ModbusPDUReadCoilsRequest.py  |    41 +-
 .../modbus/readwrite/ModbusPDUReadCoilsResponse.py |    29 +-
 .../ModbusPDUReadDeviceIdentificationRequest.py    |    64 +-
 .../ModbusPDUReadDeviceIdentificationResponse.py   |   166 +-
 .../ModbusPDUReadDiscreteInputsRequest.py          |    41 +-
 .../ModbusPDUReadDiscreteInputsResponse.py         |    33 +-
 .../ModbusPDUReadExceptionStatusRequest.py         |    29 +-
 .../ModbusPDUReadExceptionStatusResponse.py        |    32 +-
 .../readwrite/ModbusPDUReadFifoQueueRequest.py     |    40 +-
 .../readwrite/ModbusPDUReadFifoQueueResponse.py    |    39 +-
 .../readwrite/ModbusPDUReadFileRecordRequest.py    |    43 +-
 .../ModbusPDUReadFileRecordRequestItem.py          |    50 +-
 .../readwrite/ModbusPDUReadFileRecordResponse.py   |    43 +-
 .../ModbusPDUReadFileRecordResponseItem.py         |    43 +-
 .../ModbusPDUReadHoldingRegistersRequest.py        |    45 +-
 .../ModbusPDUReadHoldingRegistersResponse.py       |    33 +-
 .../ModbusPDUReadInputRegistersRequest.py          |    41 +-
 .../ModbusPDUReadInputRegistersResponse.py         |    33 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.py |    81 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.py |    33 +-
 .../readwrite/ModbusPDUReportServerIdRequest.py    |    25 +-
 .../readwrite/ModbusPDUReportServerIdResponse.py   |    29 +-
 .../readwrite/ModbusPDUWriteFileRecordRequest.py   |    43 +-
 .../ModbusPDUWriteFileRecordRequestItem.py         |    55 +-
 .../readwrite/ModbusPDUWriteFileRecordResponse.py  |    43 +-
 .../ModbusPDUWriteFileRecordResponseItem.py        |    55 +-
 .../ModbusPDUWriteMultipleCoilsRequest.py          |    49 +-
 .../ModbusPDUWriteMultipleCoilsResponse.py         |    45 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.py |    51 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.py |    47 +-
 .../readwrite/ModbusPDUWriteSingleCoilRequest.py   |    37 +-
 .../readwrite/ModbusPDUWriteSingleCoilResponse.py  |    37 +-
 .../ModbusPDUWriteSingleRegisterRequest.py         |    41 +-
 .../ModbusPDUWriteSingleRegisterResponse.py        |    41 +-
 .../protocols/modbus/readwrite/ModbusRtuADU.py     |    60 +-
 .../protocols/modbus/readwrite/ModbusTcpADU.py     |    91 +-
 .../protocols/simulated/readwrite/DataItem.py      |   745 +-
 .../plc4py/protocols/simulated/readwrite/Dummy.py  |    24 +-
 .../simulated/readwrite/SimulatedDataTypeSizes.py  |    62 +-
 sandbox/plc4py/pom.xml                             |    76 +-
 sandbox/test-java-df1-driver/pom.xml               |    57 +-
 107 files changed, 35929 insertions(+), 3869 deletions(-)

diff --git a/plc4c/pom.xml b/plc4c/pom.xml
index 5104d8ed7c..cb725c77ff 100644
--- a/plc4c/pom.xml
+++ b/plc4c/pom.xml
@@ -42,66 +42,6 @@
     <option.with-proxies>OFF</option.with-proxies>
   </properties>
 
-  <profiles>
-    <!-- When running on jenkins, download the sonar build-wrapper, so we can do a code analysis -->
-    <profile>
-      <id>jenkins-build</id>
-      <!-- This is needed by the groovy hack script -->
-      <properties>
-        <cmake.root>${project.build.directory}/dependency/cmake/bin</cmake.root>
-      </properties>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>com.googlecode.maven-download-plugin</groupId>
-            <artifactId>download-maven-plugin</artifactId>
-            <executions>
-              <!-- Get the build-wrapper from our sonarcloud server -->
-              <execution>
-                <id>get-build-wrapper</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>wget</goal>
-                </goals>
-                <configuration>
-                  <skipCache>true</skipCache>
-                  <url>https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip</url>
-                  <unpack>true</unpack>
-                  <outputDirectory>${project.build.directory}</outputDirectory>
-                  <skipCache>true</skipCache>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.codehaus.gmaven</groupId>
-            <artifactId>groovy-maven-plugin</artifactId>
-            <executions>
-              <!-- rename the cmake binary and generate a script that adds the sonar build-wrapper -->
-              <execution>
-                <id>modify-cmake</id>
-                <phase>process-test-sources</phase>
-                <goals>
-                  <goal>execute</goal>
-                </goals>
-                <configuration>
-                  <source>${project.basedir}/SonarcloudBuildWrapperHack.groovy</source>
-                </configuration>
-              </execution>
-            </executions>
-            <dependencies>
-              <dependency>
-                <groupId>org.apache.groovy</groupId>
-                <artifactId>groovy</artifactId>
-                <version>${groovy.version}</version>
-              </dependency>
-            </dependencies>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
   <build>
     <plugins>
       <plugin>
@@ -140,55 +80,6 @@
           </execution-->
         </executions>
       </plugin>
-      <!--
-        Generate the driver code.
-      -->
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver-modbus</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>modbus</protocolName>
-              <languageName>c</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/generated-sources</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-plc4x</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>plc4x</protocolName>
-              <protocolVersion>0</protocolVersion>
-              <languageName>c</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/generated-sources</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-s7</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>s7</protocolName>
-              <languageName>c</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/generated-sources</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
 
       <!-- Transform the ParserSerializer tests into c code -->
       <plugin>
@@ -412,4 +303,120 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <!--
+            Generate the driver code.
+          -->
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver-modbus</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>modbus</protocolName>
+                  <languageName>c</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/generated-sources</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-plc4x</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>plc4x</protocolName>
+                  <protocolVersion>0</protocolVersion>
+                  <languageName>c</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/generated-sources</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-s7</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>s7</protocolName>
+                  <languageName>c</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/generated-sources</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <!-- When running on jenkins, download the sonar build-wrapper, so we can do a code analysis -->
+    <profile>
+      <id>jenkins-build</id>
+      <!-- This is needed by the groovy hack script -->
+      <properties>
+        <cmake.root>${project.build.directory}/dependency/cmake/bin</cmake.root>
+      </properties>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.googlecode.maven-download-plugin</groupId>
+            <artifactId>download-maven-plugin</artifactId>
+            <executions>
+              <!-- Get the build-wrapper from our sonarcloud server -->
+              <execution>
+                <id>get-build-wrapper</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>wget</goal>
+                </goals>
+                <configuration>
+                  <skipCache>true</skipCache>
+                  <url>https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip</url>
+                  <unpack>true</unpack>
+                  <outputDirectory>${project.build.directory}</outputDirectory>
+                  <skipCache>true</skipCache>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.codehaus.gmaven</groupId>
+            <artifactId>groovy-maven-plugin</artifactId>
+            <executions>
+              <!-- rename the cmake binary and generate a script that adds the sonar build-wrapper -->
+              <execution>
+                <id>modify-cmake</id>
+                <phase>process-test-sources</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>${project.basedir}/SonarcloudBuildWrapperHack.groovy</source>
+                </configuration>
+              </execution>
+            </executions>
+            <dependencies>
+              <dependency>
+                <groupId>org.apache.groovy</groupId>
+                <artifactId>groovy</artifactId>
+                <version>${groovy.version}</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
\ No newline at end of file
diff --git a/plc4go/pom.xml b/plc4go/pom.xml
index fcd6970613..3ca00ae4fb 100644
--- a/plc4go/pom.xml
+++ b/plc4go/pom.xml
@@ -192,185 +192,6 @@
         </executions>
       </plugin>
 
-      <!--
-        Generate the driver code.
-      -->
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver-ab-eth</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>ab-eth</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-ads</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>ads</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-ads-discovery</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>ads.discovery</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-bacnetip</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>bacnetip</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-c-bus</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>c-bus</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-df1</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>df1</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-eip</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>eip</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-firmata</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>firmata</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-knxnetip</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>knxnetip</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-modbus</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>modbus</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-opcua</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>opcua</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-s7</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>s7</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-driver-simulated</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>simulated</protocolName>
-              <languageName>go</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/protocols</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
       <plugin>
         <groupId>com.igormaznitsa</groupId>
         <artifactId>mvn-golang-wrapper</artifactId>
@@ -730,6 +551,192 @@
         <go.cover.flag>-v</go.cover.flag>
       </properties>
     </profile>
+
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <!--
+            Generate the driver code.
+          -->
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver-ab-eth</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>ab-eth</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-ads</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>ads</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-ads-discovery</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>ads.discovery</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-bacnetip</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>bacnetip</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-c-bus</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>c-bus</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-df1</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>df1</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-eip</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>eip</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-firmata</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>firmata</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-knxnetip</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>knxnetip</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-modbus</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>modbus</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-opcua</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>opcua</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-s7</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>s7</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-driver-simulated</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>simulated</protocolName>
+                  <languageName>go</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/protocols</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 
 </project>
\ No newline at end of file
diff --git a/plc4j/drivers/ab-eth/pom.xml b/plc4j/drivers/ab-eth/pom.xml
index 787c3980b2..1b97773cfa 100644
--- a/plc4j/drivers/ab-eth/pom.xml
+++ b/plc4j/drivers/ab-eth/pom.xml
@@ -32,25 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>ab-eth</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -169,4 +150,33 @@
     </dependency>
   </dependencies>
 
+   <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>test</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>ab-eth</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/ads/pom.xml b/plc4j/drivers/ads/pom.xml
index 01d59903ba..3a7f74cee5 100644
--- a/plc4j/drivers/ads/pom.xml
+++ b/plc4j/drivers/ads/pom.xml
@@ -32,38 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-ams-structs</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>ads</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-ams-discovery-structs</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>ads.discovery</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -205,4 +173,46 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-ams-structs</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>ads</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-ams-discovery-structs</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>ads.discovery</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/bacnet/pom.xml b/plc4j/drivers/bacnet/pom.xml
index 6d195b426d..7b679a4b58 100644
--- a/plc4j/drivers/bacnet/pom.xml
+++ b/plc4j/drivers/bacnet/pom.xml
@@ -30,35 +30,6 @@
 
   <name>PLC4J: Driver: BACNet/IP Driver</name>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-bacnet-structs</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>bacnetip</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-              <options>
-                <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
-                <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
-                <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
-              </options>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
@@ -188,6 +159,38 @@
         </plugins>
       </build>
     </profile>
+
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-bacnet-structs</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>bacnetip</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                  <options>
+                    <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+                    <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+                    <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+                  </options>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 
 </project>
diff --git a/plc4j/drivers/c-bus/pom.xml b/plc4j/drivers/c-bus/pom.xml
index f95fe4b95c..e3440aa105 100644
--- a/plc4j/drivers/c-bus/pom.xml
+++ b/plc4j/drivers/c-bus/pom.xml
@@ -33,30 +33,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>c-bus</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-              <options>
-                <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
-                <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
-                <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
-              </options>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -180,4 +156,38 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>test</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>c-bus</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                  <options>
+                    <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+                    <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+                    <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+                  </options>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/can/pom.xml b/plc4j/drivers/can/pom.xml
index 5c483c6efd..61d8e59824 100644
--- a/plc4j/drivers/can/pom.xml
+++ b/plc4j/drivers/can/pom.xml
@@ -32,6 +32,57 @@
 
   <packaging>bundle</packaging>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.karaf.tooling</groupId>
+        <artifactId>karaf-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate-feature-xml</id>
+            <phase>compile</phase>
+            <goals>
+              <!-- Generate the feature.xml -->
+              <goal>features-generate-descriptor</goal>
+              <!-- Check the feature.xml -->
+              <goal>verify</goal>
+            </goals>
+            <configuration>
+              <enableGeneration>true</enableGeneration>
+              <aggregateFeatures>true</aggregateFeatures>
+            </configuration>
+          </execution>
+          <execution>
+            <id>build-kar</id>
+            <phase>package</phase>
+            <goals>
+              <!--
+                Build a kar archive (Jar containing the feature.xml
+                as well as the module content and it's dependencies.
+              -->
+              <goal>kar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+            <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
+            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.can.CANPlcDriver</Export-Service>
+            <Import-Package>
+              *
+            </Import-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
@@ -104,74 +155,33 @@
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>canopen</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>genericcan</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.karaf.tooling</groupId>
-        <artifactId>karaf-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-feature-xml</id>
-            <phase>compile</phase>
-            <goals>
-              <!-- Generate the feature.xml -->
-              <goal>features-generate-descriptor</goal>
-              <!-- Check the feature.xml -->
-              <goal>verify</goal>
-            </goals>
-            <configuration>
-              <enableGeneration>true</enableGeneration>
-              <aggregateFeatures>true</aggregateFeatures>
-            </configuration>
-          </execution>
-          <execution>
-            <id>build-kar</id>
-            <phase>package</phase>
-            <goals>
-              <!--
-                Build a kar archive (Jar containing the feature.xml
-                as well as the module content and it's dependencies.
-              -->
-              <goal>kar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
-            <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
-            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.can.CANPlcDriver</Export-Service>
-            <Import-Package>
-              *
-            </Import-Package>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>canopen</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>genericcan</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
 </project>
diff --git a/plc4j/drivers/canopen/pom.xml b/plc4j/drivers/canopen/pom.xml
index d43beb2f27..2ce989666e 100644
--- a/plc4j/drivers/canopen/pom.xml
+++ b/plc4j/drivers/canopen/pom.xml
@@ -32,6 +32,67 @@
 
   <packaging>bundle</packaging>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.karaf.tooling</groupId>
+        <artifactId>karaf-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate-feature-xml</id>
+            <phase>compile</phase>
+            <goals>
+              <!-- Generate the feature.xml -->
+              <goal>features-generate-descriptor</goal>
+              <!-- Check the feature.xml -->
+              <goal>verify</goal>
+            </goals>
+            <configuration>
+              <enableGeneration>true</enableGeneration>
+              <aggregateFeatures>true</aggregateFeatures>
+            </configuration>
+          </execution>
+          <execution>
+            <id>build-kar</id>
+            <phase>package</phase>
+            <goals>
+              <!--
+                Build a kar archive (Jar containing the feature.xml
+                as well as the module content and it's dependencies.
+              -->
+              <goal>kar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+            <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
+            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.canopen.CANOpenPlcDriver</Export-Service>
+            <Import-Package>
+              *
+            </Import-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies combine.children="append">
+            <usedDependency>org.apache.plc4x:plc4x-code-generation-language-java</usedDependency>
+            <usedDependency>org.apache.plc4x:plc4x-protocols-canopen</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
@@ -117,85 +178,33 @@
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>canopen</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>canopen</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.karaf.tooling</groupId>
-        <artifactId>karaf-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-feature-xml</id>
-            <phase>compile</phase>
-            <goals>
-              <!-- Generate the feature.xml -->
-              <goal>features-generate-descriptor</goal>
-              <!-- Check the feature.xml -->
-              <goal>verify</goal>
-            </goals>
-            <configuration>
-              <enableGeneration>true</enableGeneration>
-              <aggregateFeatures>true</aggregateFeatures>
-            </configuration>
-          </execution>
-          <execution>
-            <id>build-kar</id>
-            <phase>package</phase>
-            <goals>
-              <!--
-                Build a kar archive (Jar containing the feature.xml
-                as well as the module content and it's dependencies.
-              -->
-              <goal>kar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
-            <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
-            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.canopen.CANOpenPlcDriver</Export-Service>
-            <Import-Package>
-              *
-            </Import-Package>
-          </instructions>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <configuration>
-          <usedDependencies combine.children="append">
-            <usedDependency>org.apache.plc4x:plc4x-code-generation-language-java</usedDependency>
-            <usedDependency>org.apache.plc4x:plc4x-protocols-canopen</usedDependency>
-          </usedDependencies>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>canopen</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>canopen</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
 </project>
diff --git a/plc4j/drivers/eip/pom.xml b/plc4j/drivers/eip/pom.xml
index 4be52cc0b5..f8049ab1f0 100644
--- a/plc4j/drivers/eip/pom.xml
+++ b/plc4j/drivers/eip/pom.xml
@@ -33,28 +33,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>eip</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-              <!--options>
-                <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
-              </options-->
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -185,4 +163,36 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>test</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>eip</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                  <!--options>
+                    <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+                  </options-->
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/firmata/pom.xml b/plc4j/drivers/firmata/pom.xml
index b08ea01161..11bda29dea 100644
--- a/plc4j/drivers/firmata/pom.xml
+++ b/plc4j/drivers/firmata/pom.xml
@@ -31,25 +31,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>firmata</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -174,4 +155,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>test</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>firmata</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/iec-60870/pom.xml b/plc4j/drivers/iec-60870/pom.xml
index f63993b963..813f12e158 100644
--- a/plc4j/drivers/iec-60870/pom.xml
+++ b/plc4j/drivers/iec-60870/pom.xml
@@ -32,25 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>iec-60870-5-104</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -178,4 +159,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>iec-60870-5-104</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/knxnetip/pom.xml b/plc4j/drivers/knxnetip/pom.xml
index 1a8693d75c..54f7e70214 100644
--- a/plc4j/drivers/knxnetip/pom.xml
+++ b/plc4j/drivers/knxnetip/pom.xml
@@ -31,25 +31,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>knxnetip</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -205,4 +186,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>knxnetip</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/modbus/pom.xml b/plc4j/drivers/modbus/pom.xml
index 216908e72b..77154e2022 100644
--- a/plc4j/drivers/modbus/pom.xml
+++ b/plc4j/drivers/modbus/pom.xml
@@ -32,25 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>modbus</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -194,4 +175,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>modbus</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/opcua/pom.xml b/plc4j/drivers/opcua/pom.xml
index 314a759b78..52a25087d1 100644
--- a/plc4j/drivers/opcua/pom.xml
+++ b/plc4j/drivers/opcua/pom.xml
@@ -33,25 +33,6 @@
 
   <build>
     <plugins>
-        <plugin>
-          <groupId>org.apache.plc4x.plugins</groupId>
-          <artifactId>plc4x-maven-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>generate-driver</id>
-              <phase>generate-sources</phase>
-              <goals>
-                <goal>generate-driver</goal>
-              </goals>
-              <configuration>
-                <protocolName>opcua</protocolName>
-                <languageName>java</languageName>
-                <outputFlavor>read-write</outputFlavor>
-                <outputDir>src/main/generated</outputDir>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -250,4 +231,33 @@
     </dependencies>
   </dependencyManagement>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>opcua</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/open-protocol/pom.xml b/plc4j/drivers/open-protocol/pom.xml
index feecd03404..411314372b 100644
--- a/plc4j/drivers/open-protocol/pom.xml
+++ b/plc4j/drivers/open-protocol/pom.xml
@@ -32,25 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>open-protocol</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -171,4 +152,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>open-protocol</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/plc4x/pom.xml b/plc4j/drivers/plc4x/pom.xml
index 129e5637a2..ea86536de9 100644
--- a/plc4j/drivers/plc4x/pom.xml
+++ b/plc4j/drivers/plc4x/pom.xml
@@ -33,26 +33,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>plc4x</protocolName>
-              <protocolVersion>0</protocolVersion>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -189,4 +169,34 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>plc4x</protocolName>
+                  <protocolVersion>0</protocolVersion>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/profinet-ng/pom.xml b/plc4j/drivers/profinet-ng/pom.xml
index b7a8e8fa92..c0ed06830e 100644
--- a/plc4j/drivers/profinet-ng/pom.xml
+++ b/plc4j/drivers/profinet-ng/pom.xml
@@ -32,30 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>profinet</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-              <options>
-                <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
-                <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
-                <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
-              </options>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -217,4 +193,38 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>profinet</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                  <options>
+                    <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+                    <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+                    <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+                  </options>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/profinet/pom.xml b/plc4j/drivers/profinet/pom.xml
index 09c1045554..eb38e4cb42 100644
--- a/plc4j/drivers/profinet/pom.xml
+++ b/plc4j/drivers/profinet/pom.xml
@@ -32,30 +32,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>profinet</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-              <options>
-                <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
-                <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
-                <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
-              </options>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -217,4 +193,38 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>profinet</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                  <options>
+                    <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+                    <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+                    <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+                  </options>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index beaed99889..b45a5e4c4d 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -33,25 +33,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>s7</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -222,4 +203,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>s7</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/drivers/simulated/pom.xml b/plc4j/drivers/simulated/pom.xml
index 2480dd40fe..97095f0d23 100644
--- a/plc4j/drivers/simulated/pom.xml
+++ b/plc4j/drivers/simulated/pom.xml
@@ -17,7 +17,8 @@
   specific language governing permissions and limitations
   under the License.
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
   <modelVersion>4.0.0</modelVersion>
 
@@ -33,25 +34,6 @@
 
   <build>
     <plugins>
-        <plugin>
-          <groupId>org.apache.plc4x.plugins</groupId>
-          <artifactId>plc4x-maven-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>generate-driver</id>
-              <phase>generate-sources</phase>
-              <goals>
-                <goal>generate-driver</goal>
-              </goals>
-              <configuration>
-                <protocolName>simulated</protocolName>
-                <languageName>java</languageName>
-                <outputFlavor>read-write</outputFlavor>
-                <outputDir>src/main/generated</outputDir>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
       <plugin>
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
@@ -91,7 +73,8 @@
           <instructions>
             <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
             <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
-            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.simulated.SimulatedDriver</Export-Service>
+            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.simulated.SimulatedDriver
+            </Export-Service>
           </instructions>
         </configuration>
       </plugin>
@@ -150,4 +133,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>simulated</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/plc4j/tools/plc4x-server/pom.xml b/plc4j/tools/plc4x-server/pom.xml
index ab38fc7f63..d6810b78bf 100644
--- a/plc4j/tools/plc4x-server/pom.xml
+++ b/plc4j/tools/plc4x-server/pom.xml
@@ -34,26 +34,6 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>plc4x</protocolName>
-              <protocolVersion>0</protocolVersion>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
       <!-- Build a fat jar containing all dependencies -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -190,4 +170,34 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>plc4x</protocolName>
+                  <protocolVersion>0</protocolVersion>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
\ No newline at end of file
diff --git a/plc4j/transports/socketcan/pom.xml b/plc4j/transports/socketcan/pom.xml
index 6d582e95a7..c5e9b8975d 100644
--- a/plc4j/transports/socketcan/pom.xml
+++ b/plc4j/transports/socketcan/pom.xml
@@ -31,6 +31,26 @@
   <name>PLC4J: Transports: SocketCAN</name>
   <description>Base classes needed to implement plc4x drivers based on SocketCAN connections. Powered by javacan library.</description>
 
+  <build>
+    <plugins>
+      <!--
+       Generate an OSGI compatible MANIFEST file.
+      -->
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+            <Bundle-Activator>org.apache.plc4x.java.osgi.TransportActivator</Bundle-Activator>
+            <Export-Service>org.apache.plc4x.java.spi.transport.Transport,org.apache.plc4x.java.transport.socketcan.SocketCANTransport</Export-Service>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
@@ -75,43 +95,33 @@
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>socketcan</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>socketcan</protocolName>
-              <languageName>java</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>src/main/generated</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <!--
-       Generate an OSGI compatible MANIFEST file.
-      -->
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
-            <Bundle-Activator>org.apache.plc4x.java.osgi.TransportActivator</Bundle-Activator>
-            <Export-Service>org.apache.plc4x.java.spi.transport.Transport,org.apache.plc4x.java.transport.socketcan.SocketCANTransport</Export-Service>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>socketcan</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>socketcan</protocolName>
+                  <languageName>java</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>src/main/generated</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
 </project>
diff --git a/plc4net/pom.xml b/plc4net/pom.xml
index 2be19ede18..9fe1f3d49d 100644
--- a/plc4net/pom.xml
+++ b/plc4net/pom.xml
@@ -68,29 +68,6 @@
         </executions>
       </plugin>
 
-      <!--
-        Generate the driver code.
-      -->
-      <plugin>
-        <groupId>org.apache.plc4x.plugins</groupId>
-        <artifactId>plc4x-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-driver-knxnetip</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>generate-driver</goal>
-            </goals>
-            <configuration>
-              <protocolName>knxnetip</protocolName>
-              <languageName>C#</languageName>
-              <outputFlavor>read-write</outputFlavor>
-              <outputDir>${project.basedir}/drivers/knxnetip/src</outputDir>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
       <!-- Build the project -->
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
@@ -137,4 +114,33 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.plc4x.plugins</groupId>
+            <artifactId>plc4x-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-driver-knxnetip</id>
+                <phase>generate-sources</phase>
+                <goals>
+                  <goal>generate-driver</goal>
+                </goals>
+                <configuration>
+                  <protocolName>knxnetip</protocolName>
+                  <languageName>C#</languageName>
+                  <outputFlavor>read-write</outputFlavor>
+                  <outputDir>${project.basedir}/drivers/knxnetip/src</outputDir>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index c9f574a1ec..9bdd1a4c9b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,8 +166,6 @@
   </properties>
 
   <modules>
-    <module>code-generation</module>
-
     <!-- Definition of the protocol message formats -->
     <module>protocols</module>
 
@@ -1053,9 +1051,6 @@
           <groupId>org.apache.plc4x.plugins</groupId>
           <artifactId>plc4x-maven-plugin</artifactId>
           <version>${plc4x-code-generation.version}</version>
-          <configuration>
-            <skip>${skip-code-generation}</skip>
-          </configuration>
         </plugin>
 
         <plugin>
@@ -1503,6 +1498,13 @@
   </pluginRepositories>
 
   <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <modules>
+        <module>code-generation</module>
+      </modules>
+    </profile>
+
     <!-- Allows skipping of the pre-flight-check as needed when deploying on jenkins -->
     <profile>
       <id>skip-prerequisite-check</id>
diff --git a/protocols/bacnetip/pom.xml b/protocols/bacnetip/pom.xml
index 8360deca6d..702d0fba24 100644
--- a/protocols/bacnetip/pom.xml
+++ b/protocols/bacnetip/pom.xml
@@ -32,6 +32,17 @@
   <name>Protocols: BACNet/IP</name>
   <description>Base protocol specifications for the BACNet/IP protocol</description>
 
+  <build>
+    <resources>
+      <resource>
+        <directory>src/main/generated</directory>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+    </resources>
+  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
@@ -46,83 +57,89 @@
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <!-- Fetch the vendor ids which will be used to translate venmdor ids to readable names -->
-      <!--
-        We're intentionally not using the download plugin as this would either download only once
-        and not get any updates or it would try downloading for every build. This however might result
-        in getting banned on the bacnet server.
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <!-- Fetch the vendor ids which will be used to translate venmdor ids to readable names -->
+          <!--
+            We're intentionally not using the download plugin as this would either download only once
+            and not get any updates or it would try downloading for every build. This however might result
+            in getting banned on the bacnet server.
 
-        So this script makes sure the bacnet-vendorid.mspec is updated at most every 24h
-      -->
-      <plugin>
-        <groupId>org.codehaus.gmaven</groupId>
-        <artifactId>groovy-maven-plugin</artifactId>
-        <version>2.1.1</version>
-        <executions>
-          <!-- Do some pre-build checks and report any findings to the user -->
-          <execution>
-            <id>fetch-bacnet-vendor-ids</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-            <configuration>
-              <source>${project.basedir}/src/main/script/getVendorIds.groovy</source>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-tagged-enums</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-            <configuration>
-              <source>${project.basedir}/src/main/script/produceTaggedEnums.groovy</source>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-tagged-private-enums</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-            <configuration>
-              <source>${project.basedir}/src/main/script/produceTaggedPrivateEnums.groovy</source>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-tagged-bit-strings</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
+            So this script makes sure the bacnet-vendorid.mspec is updated at most every 24h
+          -->
+          <plugin>
+            <groupId>org.codehaus.gmaven</groupId>
+            <artifactId>groovy-maven-plugin</artifactId>
+            <version>2.1.1</version>
+            <executions>
+              <!-- Do some pre-build checks and report any findings to the user -->
+              <execution>
+                <id>fetch-bacnet-vendor-ids</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>${project.basedir}/src/main/script/getVendorIds.groovy</source>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-tagged-enums</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>${project.basedir}/src/main/script/produceTaggedEnums.groovy</source>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-tagged-private-enums</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>${project.basedir}/src/main/script/produceTaggedPrivateEnums.groovy</source>
+                </configuration>
+              </execution>
+              <execution>
+                <id>generate-tagged-bit-strings</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>${project.basedir}/src/main/script/produceTaggedBitStrings.groovy</source>
+                </configuration>
+              </execution>
+            </executions>
+            <dependencies>
+              <dependency>
+                <groupId>org.apache.groovy</groupId>
+                <artifactId>groovy</artifactId>
+                <version>${groovy.version}</version>
+              </dependency>
+              <dependency>
+                <groupId>org.jsoup</groupId>
+                <artifactId>jsoup</artifactId>
+                <version>1.16.2</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
             <configuration>
-              <source>${project.basedir}/src/main/script/produceTaggedBitStrings.groovy</source>
+              <excludedGroups>just-output</excludedGroups>
             </configuration>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.jsoup</groupId>
-            <artifactId>jsoup</artifactId>
-            <version>1.16.2</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <excludedGroups>just-output</excludedGroups>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
 </project>
\ No newline at end of file
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-bit-strings-tagged.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-bit-strings-tagged.mspec
new file mode 100644
index 0000000000..3e85b0e57b
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-bit-strings-tagged.mspec
@@ -0,0 +1,152 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+ // Code generated by code-generation. DO NOT EDIT.
+
+[type BACnetDaysOfWeekTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit monday         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit tuesday         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit wednesday         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+    [virtual    bit thursday         '(COUNT(payload.data)>3)?payload.data[3]:false'          ]
+    [virtual    bit friday         '(COUNT(payload.data)>4)?payload.data[4]:false'          ]
+    [virtual    bit saturday         '(COUNT(payload.data)>5)?payload.data[5]:false'          ]
+    [virtual    bit sunday         '(COUNT(payload.data)>6)?payload.data[6]:false'          ]
+
+]
+
+[type BACnetEventTransitionBitsTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit toOffnormal         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit toFault         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit toNormal         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+
+]
+
+[type BACnetLimitEnableTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit lowLimitEnable         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit highLimitEnable         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+
+]
+
+[type BACnetLogStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit logDisabled         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit bufferPurged         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit logInterrupted         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+
+]
+
+[type BACnetObjectTypesSupportedTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit timeValue         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit notificationForwarder         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit alertEnrollment         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+    [virtual    bit channel         '(COUNT(payload.data)>3)?payload.data[3]:false'          ]
+    [virtual    bit lightingOutput         '(COUNT(payload.data)>4)?payload.data[4]:false'          ]
+    [virtual    bit binaryLightingOutput         '(COUNT(payload.data)>5)?payload.data[5]:false'          ]
+    [virtual    bit networkPort         '(COUNT(payload.data)>6)?payload.data[6]:false'          ]
+    [virtual    bit elevatorGroup         '(COUNT(payload.data)>7)?payload.data[7]:false'          ]
+    [virtual    bit escalator         '(COUNT(payload.data)>8)?payload.data[8]:false'          ]
+    [virtual    bit lift         '(COUNT(payload.data)>9)?payload.data[9]:false'          ]
+
+]
+
+[type BACnetResultFlagsTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit firstItem         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit lastItem         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit moreItems         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+
+]
+
+[type BACnetServicesSupportedTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit writeGroup         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit subscribeCovPropertyMultiple         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit confirmedCovNotificationMultiple         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+    [virtual    bit unconfirmedCovNotificationMultiple         '(COUNT(payload.data)>3)?payload.data[3]:false'          ]
+    [virtual    bit whoIs         '(COUNT(payload.data)>4)?payload.data[4]:false'          ]
+    [virtual    bit readRange         '(COUNT(payload.data)>5)?payload.data[5]:false'          ]
+    [virtual    bit utcTimeSynchronization         '(COUNT(payload.data)>6)?payload.data[6]:false'          ]
+    [virtual    bit lifeSafetyOperation         '(COUNT(payload.data)>7)?payload.data[7]:false'          ]
+    [virtual    bit subscribeCovProperty         '(COUNT(payload.data)>8)?payload.data[8]:false'          ]
+    [virtual    bit getEventInformation         '(COUNT(payload.data)>9)?payload.data[9]:false'          ]
+
+]
+
+[type BACnetStatusFlagsTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [simple BACnetTagPayloadBitString('header.actualLength')
+                    payload                                                                                     ]
+    [virtual    bit inAlarm         '(COUNT(payload.data)>0)?payload.data[0]:false'          ]
+    [virtual    bit fault         '(COUNT(payload.data)>1)?payload.data[1]:false'          ]
+    [virtual    bit overridden         '(COUNT(payload.data)>2)?payload.data[2]:false'          ]
+    [virtual    bit outOfService         '(COUNT(payload.data)>3)?payload.data[3]:false'          ]
+
+]
+
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-enums-tagged.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-enums-tagged.mspec
new file mode 100644
index 0000000000..f95ce76289
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-enums-tagged.mspec
@@ -0,0 +1,842 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ 
+ // Code generated by code-generation. DO NOT EDIT.
+
+[type ErrorClassTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   ErrorClass
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, ErrorClass.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == ErrorClass.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type ErrorCodeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   ErrorCode
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, ErrorCode.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == ErrorCode.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAccessAuthenticationFactorDisableTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAccessAuthenticationFactorDisable
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessAuthenticationFactorDisable.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAccessAuthenticationFactorDisable.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAccessCredentialDisableTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAccessCredentialDisable
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessCredentialDisable.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAccessCredentialDisable.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAccessCredentialDisableReasonTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAccessCredentialDisableReason
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessCredentialDisableReason.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAccessCredentialDisableReason.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAccessEventTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAccessEvent
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessEvent.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAccessEvent.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAccessUserTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAccessUserType
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessUserType.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAccessUserType.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAccessZoneOccupancyStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAccessZoneOccupancyState
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessZoneOccupancyState.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAccessZoneOccupancyState.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAuthorizationExemptionTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAuthorizationExemption
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAuthorizationExemption.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAuthorizationExemption.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetAuthorizationModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetAuthorizationMode
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAuthorizationMode.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetAuthorizationMode.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetBinaryLightingPVTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetBinaryLightingPV
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetBinaryLightingPV.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetBinaryLightingPV.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetDeviceStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetDeviceStatus
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetDeviceStatus.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetDeviceStatus.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetDoorAlarmStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetDoorAlarmState
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetDoorAlarmState.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetDoorAlarmState.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetDoorStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetDoorStatus
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetDoorStatus.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetDoorStatus.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetEngineeringUnitsTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetEngineeringUnits
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEngineeringUnits.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetEngineeringUnits.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetEscalatorFaultTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetEscalatorFault
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEscalatorFault.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetEscalatorFault.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetEscalatorModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetEscalatorMode
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEscalatorMode.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetEscalatorMode.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetEscalatorOperationDirectionTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetEscalatorOperationDirection
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEscalatorOperationDirection.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetEscalatorOperationDirection.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetEventStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetEventState
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEventState.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetEventState.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetEventTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetEventType
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEventType.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetEventType.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLifeSafetyModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLifeSafetyMode
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLifeSafetyMode.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLifeSafetyMode.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLifeSafetyOperationTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLifeSafetyOperation
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLifeSafetyOperation.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLifeSafetyOperation.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLifeSafetyStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLifeSafetyState
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLifeSafetyState.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLifeSafetyState.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLiftCarDirectionTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLiftCarDirection
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftCarDirection.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLiftCarDirection.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLiftCarDriveStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLiftCarDriveStatus
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftCarDriveStatus.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLiftCarDriveStatus.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLiftCarModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLiftCarMode
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftCarMode.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLiftCarMode.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLiftFaultTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLiftFault
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftFault.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLiftFault.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLightingOperationTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLightingOperation
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLightingOperation.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLightingOperation.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLightingTransitionTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLightingTransition
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLightingTransition.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLightingTransition.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetLoggingTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetLoggingType
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLoggingType.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetLoggingType.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetMaintenanceTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetMaintenance
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetMaintenance.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetMaintenance.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetNetworkPortCommandTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetNetworkPortCommand
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetNetworkPortCommand.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetNetworkPortCommand.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetNetworkTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetNetworkType
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetNetworkType.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetNetworkType.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetObjectTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetObjectType
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetObjectType.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetObjectType.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetProgramErrorTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetProgramError
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetProgramError.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetProgramError.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetPropertyIdentifierTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetPropertyIdentifier
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetRelationshipTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetRelationship
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetRelationship.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetRelationship.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetReliabilityTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetReliability
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetReliability.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetReliability.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetRestartReasonTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetRestartReason
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetRestartReason.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetRestartReason.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetSilencedStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetSilencedState
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetSilencedState.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetSilencedState.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
+[type BACnetVTClassTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetVTClass
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetVTClass.VENDOR_PROPRIETARY_VALUE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isProprietary?0:(header.actualLength * 8)'                                   ]
+    [virtual  bit   isProprietary
+                        'value == BACnetVTClass.VENDOR_PROPRIETARY_VALUE'                                 ]
+    [manual   uint 32
+                    proprietaryValue
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+                        '_value.isProprietary?(header.actualLength * 8):0'                                   ]
+]
+
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-private-enums-tagged.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-private-enums-tagged.mspec
new file mode 100644
index 0000000000..83d801968b
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-private-enums-tagged.mspec
@@ -0,0 +1,568 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ 
+ // Code generated by code-generation. DO NOT EDIT.
+
+[type BACnetActionTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAction
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAction.DIRECT)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetAccessPassbackModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAccessPassbackMode
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccessPassbackMode.PASSBACK_OFF)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetAccessRuleLocationSpecifierTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAccessRuleLocationSpecifier
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccessRuleLocationSpecifier.SPECIFIED)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetAccessRuleTimeRangeSpecifierTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAccessRuleTimeRangeSpecifier
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccessRuleTimeRangeSpecifier.SPECIFIED)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetAccumulatorRecordAccumulatorStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAccumulatorRecordAccumulatorStatus
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccumulatorRecordAccumulatorStatus.NORMAL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetAuthenticationFactorTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAuthenticationFactorType
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAuthenticationFactorType.UNDEFINED)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetAuthenticationStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetAuthenticationStatus
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAuthenticationStatus.NOT_READY)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetBackupStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetBackupState
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetBackupState.IDLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetBinaryPVTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetBinaryPV
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetBinaryPV.INACTIVE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority.NORMAL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.ENABLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilter
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilter.ALL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilter
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilter.OFFNORMAL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.COLDSTART)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetDoorSecuredStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetDoorSecuredStatus
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetDoorSecuredStatus.SECURED)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetDoorValueTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetDoorValue
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetDoorValue.LOCK)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetFaultTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetFaultType
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetFaultType.NONE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetFileAccessMethodTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetFileAccessMethod
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetFileAccessMethod.RECORD_ACCESS)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetIPModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetIPMode
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetIPMode.NORMAL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetLiftCarDoorCommandTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetLiftCarDoorCommand
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLiftCarDoorCommand.NONE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetLiftGroupModeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetLiftGroupMode
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLiftGroupMode.UNKNOWN)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetLightingInProgressTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetLightingInProgress
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLightingInProgress.IDLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetLockStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetLockStatus
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLockStatus.LOCKED)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetNetworkNumberQualityTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetNetworkNumberQuality
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetNetworkNumberQuality.UNKNOWN)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetNodeTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetNodeType
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetNodeType.UNKNOWN)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetNotifyTypeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetNotifyType
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetNotifyType.ALARM)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetPolarityTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetPolarity
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetPolarity.NORMAL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetProgramRequestTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetProgramRequest
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetProgramRequest.READY)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetProgramStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetProgramState
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetProgramState.IDLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetProtocolLevelTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetProtocolLevel
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetProtocolLevel.PHYSICAL)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetRouterEntryStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetRouterEntryStatus
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetRouterEntryStatus.AVAILABLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetSecurityLevelTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetSecurityLevel
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetSecurityLevel.INCAPABLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetSecurityPolicyTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetSecurityPolicy
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetSecurityPolicy.PLAIN_NON_TRUSTED)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetSegmentationTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetSegmentation
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetSegmentation.SEGMENTED_BOTH)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetShedStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetShedState
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetShedState.SHED_INACTIVE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetTimerStateTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetTimerState
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetTimerState.IDLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetTimerTransitionTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetTimerTransition
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetTimerTransition.NONE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetUnconfirmedServiceChoiceTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetUnconfirmedServiceChoice
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetUnconfirmedServiceChoice.I_AM)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BACnetWriteStatusTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BACnetWriteStatus
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetWriteStatus.IDLE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type BVLCResultCodeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   BVLCResultCode
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BVLCResultCode.SUCCESSFUL_COMPLETION)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type NPDUNetworkPriorityTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   NPDUNetworkPriority
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, NPDUNetworkPriority.LIFE_SAVETY_MESSAGE)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
+[type SecurityResponseCodeTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                                  ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                   ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false                  ]
+    [manual   SecurityResponseCode
+                    value
+                        'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, SecurityResponseCode.SUCCESS)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        'header.actualLength * 8'                                                               ]
+]
+
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
new file mode 100644
index 0000000000..931ea40961
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
@@ -0,0 +1,1492 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ 
+ // Code generated by code-generation. DO NOT EDIT.
+
+[enum uint 16 BACnetVendorId(uint 16 vendorId, string 8 vendorName)
+ ['0' ASHRAE ['0', '"ASHRAE"']]
+  ['1' NIST ['1', '"NIST"']]
+  ['2' THE_TRANE_COMPANY ['2', '"The Trane Company"']]
+  ['3' DAIKIN_APPLIED_AMERICAS ['3', '"Daikin Applied Americas"']]
+  ['4' POLAR_SOFT ['4', '"PolarSoft"']]
+  ['5' JOHNSON_CONTROLS_INC ['5', '"Johnson Controls, Inc."']]
+  ['6' ABB_FORMERLY_AMERICAN_AUTO_MATRIX ['6', '"ABB (Formerly American Auto-Matrix)"']]
+  ['7' SIEMENS_SCHWEIZAG_FORMERLY_LANDIS_STAEFA_DIVISION_EUROPE ['7', '"Siemens Schweiz AG (Formerly: Landis & Staefa Division Europe)"']]
+  ['8' DELTA_CONTROLS ['8', '"Delta Controls"']]
+  ['9' SIEMENS_SCHWEIZAG ['9', '"Siemens Schweiz AG"']]
+  ['10' SCHNEIDER_ELECTRIC ['10', '"Schneider Electric"']]
+  ['11' TAC ['11', '"TAC"']]
+  ['12' ORION_ANALYSIS_CORPORATION ['12', '"Orion Analysis Corporation"']]
+  ['13' TELETROL_SYSTEMS_INC ['13', '"Teletrol Systems Inc."']]
+  ['14' CIMETRICS_TECHNOLOGY ['14', '"Cimetrics Technology"']]
+  ['15' CORNELL_UNIVERSITY ['15', '"Cornell University"']]
+  ['16' UNITED_TECHNOLOGIES_CARRIER ['16', '"United Technologies Carrier"']]
+  ['17' HONEYWELL_INC ['17', '"Honeywell Inc."']]
+  ['18' ALERTON_HONEYWELL ['18', '"Alerton / Honeywell"']]
+  ['19' TACAB ['19', '"TAC AB"']]
+  ['20' HEWLETT_PACKARD_COMPANY ['20', '"Hewlett-Packard Company"']]
+  ['21' DORSETTES_INC ['21', '"Dorsette’s Inc."']]
+  ['22' SIEMENS_SCHWEIZAG_FORMERLY_CERBERUSAG ['22', '"Siemens Schweiz AG (Formerly: Cerberus AG)"']]
+  ['23' YORK_CONTROLS_GROUP ['23', '"York Controls Group"']]
+  ['24' AUTOMATED_LOGIC_CORPORATION ['24', '"Automated Logic Corporation"']]
+  ['25' CSI_CONTROL_SYSTEMS_INTERNATIONAL ['25', '"CSI Control Systems International"']]
+  ['26' PHOENIX_CONTROLS_CORPORATION ['26', '"Phoenix Controls Corporation"']]
+  ['27' INNOVEX_TECHNOLOGIES_INC ['27', '"Innovex Technologies, Inc."']]
+  ['28' KMC_CONTROLS_INC ['28', '"KMC Controls, Inc."']]
+  ['29' XN_TECHNOLOGIES_INC ['29', '"Xn Technologies, Inc."']]
+  ['30' HYUNDAI_INFORMATION_TECHNOLOGY_CO_LTD ['30', '"Hyundai Information Technology Co., Ltd."']]
+  ['31' TOKIMEC_INC ['31', '"Tokimec Inc."']]
+  ['32' SIMPLEX ['32', '"Simplex"']]
+  ['33' NORTH_BUILDING_TECHNOLOGIES_LIMITED ['33', '"North Building Technologies Limited"']]
+  ['34' NOTIFIER ['34', '"Notifier"']]
+  ['35' RELIABLE_CONTROLS_CORPORATION ['35', '"Reliable Controls Corporation"']]
+  ['36' TRIDIUM_INC ['36', '"Tridium Inc."']]
+  ['37' MSA_SAFETY ['37', '"MSA Safety"']]
+  ['38' SILICON_ENERGY ['38', '"Silicon Energy"']]
+  ['39' KIEBACK_PETER_GMBH_COKG ['39', '"Kieback & Peter GmbH & Co KG"']]
+  ['40' ANACON_SYSTEMS_INC ['40', '"Anacon Systems, Inc."']]
+  ['41' SYSTEMS_CONTROLS_INSTRUMENTSLLC ['41', '"Systems Controls & Instruments, LLC"']]
+  ['42' ACUITY_BRANDS_LIGHTING_INC ['42', '"Acuity Brands Lighting, Inc."']]
+  ['43' MICROPOWER_MANUFACTURING ['43', '"Micropower Manufacturing"']]
+  ['44' MATRIX_CONTROLS ['44', '"Matrix Controls"']]
+  ['45' METALAIRE ['45', '"METALAIRE"']]
+  ['46' ESS_ENGINEERING ['46', '"ESS Engineering"']]
+  ['47' SPHERE_SYSTEMS_PTY_LTD ['47', '"Sphere Systems Pty Ltd."']]
+  ['48' WALKER_TECHNOLOGIES_CORPORATION ['48', '"Walker Technologies Corporation"']]
+  ['49' HI_SOLUTIONS_INC ['49', '"H I Solutions, Inc."']]
+  ['50' MBS_GMBH ['50', '"MBS GmbH"']]
+  ['51' SAMSONAG ['51', '"SAMSON AG"']]
+  ['52' BADGER_METER_INC ['52', '"Badger Meter Inc."']]
+  ['53' DAIKIN_INDUSTRIES_LTD ['53', '"DAIKIN Industries Ltd."']]
+  ['54' NARA_CONTROLS_INC ['54', '"NARA Controls Inc."']]
+  ['55' MAMMOTH_INC ['55', '"Mammoth Inc."']]
+  ['56' LIEBERT_CORPORATION ['56', '"Liebert Corporation"']]
+  ['57' SEMCO_INCORPORATED ['57', '"SEMCO Incorporated"']]
+  ['58' AIR_MONITOR_CORPORATION ['58', '"Air Monitor Corporation"']]
+  ['59' TRIATEKLLC ['59', '"TRIATEK, LLC"']]
+  ['60' NEX_LIGHT ['60', '"NexLight"']]
+  ['61' MULTISTACK ['61', '"Multistack"']]
+  ['62' TSI_INCORPORATED ['62', '"TSI Incorporated"']]
+  ['63' WEATHER_RITE_INC ['63', '"Weather-Rite, Inc."']]
+  ['64' DUNHAM_BUSH ['64', '"Dunham-Bush"']]
+  ['65' RELIANCE_ELECTRIC ['65', '"Reliance Electric"']]
+  ['66' LCS_INC ['66', '"LCS Inc."']]
+  ['67' REGULATOR_AUSTRALIAPTY_LTD ['67', '"Regulator Australia PTY Ltd."']]
+  ['68' TOUCH_PLATE_LIGHTING_CONTROLS ['68', '"Touch-Plate Lighting Controls"']]
+  ['69' AMANN_GMBH ['69', '"Amann GmbH"']]
+  ['70' RLE_TECHNOLOGIES ['70', '"RLE Technologies"']]
+  ['71' CARDKEY_SYSTEMS ['71', '"Cardkey Systems"']]
+  ['72' SECOM_CO_LTD ['72', '"SECOM Co., Ltd."']]
+  ['73' ABB_GEBUDETECHNIKAG_BEREICH_NET_SERV ['73', '"ABB Gebäudetechnik AG Bereich NetServ"']]
+  ['74' KNX_ASSOCIATIONCVBA ['74', '"KNX Association cvba"']]
+  ['75' INSTITUTEOF_ELECTRICAL_INSTALLATION_ENGINEERSOF_JAPANIEIEJ ['75', '"Institute of Electrical Installation Engineers of Japan (IEIEJ)"']]
+  ['76' NOHMI_BOSAI_LTD ['76', '"Nohmi Bosai, Ltd."']]
+  ['77' CAREL_INDUSTRIES_SPA ['77', '"Carel Industries S.p.A."']]
+  ['78' UTC_FIRE_SECURITY_ESPAASL ['78', '"UTC Fire & Security España, S.L."']]
+  ['79' HOCHIKI_CORPORATION ['79', '"Hochiki Corporation"']]
+  ['80' FR_SAUTERAG ['80', '"Fr. Sauter AG"']]
+  ['81' MATSUSHITA_ELECTRIC_WORKS_LTD ['81', '"Matsushita Electric Works, Ltd."']]
+  ['82' MITSUBISHI_ELECTRIC_CORPORATION_INAZAWA_WORKS ['82', '"Mitsubishi Electric Corporation, Inazawa Works"']]
+  ['83' MITSUBISHI_HEAVY_INDUSTRIES_LTD ['83', '"Mitsubishi Heavy Industries, Ltd."']]
+  ['84' XYLEM_INC ['84', '"Xylem, Inc."']]
+  ['85' YAMATAKE_BUILDING_SYSTEMS_CO_LTD ['85', '"Yamatake Building Systems Co., Ltd."']]
+  ['86' THE_WATT_STOPPER_INC ['86', '"The Watt Stopper, Inc."']]
+  ['87' AICHI_TOKEI_DENKI_CO_LTD ['87', '"Aichi Tokei Denki Co., Ltd."']]
+  ['88' ACTIVATION_TECHNOLOGIESLLC ['88', '"Activation Technologies, LLC"']]
+  ['89' SAIA_BURGESS_CONTROLS_LTD ['89', '"Saia-Burgess Controls, Ltd."']]
+  ['90' HITACHI_LTD ['90', '"Hitachi, Ltd."']]
+  ['91' NOVAR_CORP_TREND_CONTROL_SYSTEMS_LTD ['91', '"Novar Corp./Trend Control Systems Ltd."']]
+  ['92' MITSUBISHI_ELECTRIC_LIGHTING_CORPORATION ['92', '"Mitsubishi Electric Lighting Corporation"']]
+  ['93' ARGUS_CONTROL_SYSTEMS_LTD ['93', '"Argus Control Systems, Ltd."']]
+  ['94' KYUKI_CORPORATION ['94', '"Kyuki Corporation"']]
+  ['95' RICHARDS_ZETA_BUILDING_INTELLIGENCE_INC ['95', '"Richards-Zeta Building Intelligence, Inc."']]
+  ['96' SCIENTECHRD_INC ['96', '"Scientech R&D, Inc."']]
+  ['97' VCI_CONTROLS_INC ['97', '"VCI Controls, Inc."']]
+  ['98' TOSHIBA_CORPORATION ['98', '"Toshiba Corporation"']]
+  ['99' MITSUBISHI_ELECTRIC_CORPORATION_AIR_CONDITIONING_REFRIGERATION_SYSTEMS_WORKS ['99', '"Mitsubishi Electric Corporation Air Conditioning & Refrigeration Systems Works"']]
+  ['100' CUSTOM_MECHANICAL_EQUIPMENTLLC ['100', '"Custom Mechanical Equipment, LLC"']]
+  ['101' CLIMATE_MASTER ['101', '"ClimateMaster"']]
+  ['102' ICP_PANEL_TEC_INC ['102', '"ICP Panel-Tec, Inc."']]
+  ['103' D_TEK_CONTROLS ['103', '"D-Tek Controls"']]
+  ['104' NEC_ENGINEERING_LTD ['104', '"NEC Engineering, Ltd."']]
+  ['105' PRIVABV ['105', '"PRIVA BV"']]
+  ['106' MEIDENSHA_CORPORATION ['106', '"Meidensha Corporation"']]
+  ['107' JCI_SYSTEMS_INTEGRATION_SERVICES ['107', '"JCI Systems Integration Services"']]
+  ['108' FREEDOM_CORPORATION ['108', '"Freedom Corporation"']]
+  ['109' NEUBERGER_GEBUDEAUTOMATION_GMBH ['109', '"Neuberger Gebäudeautomation GmbH"']]
+  ['110' E_ZI_CONTROLS ['110', '"eZi Controls"']]
+  ['111' LEVITON_MANUFACTURING ['111', '"Leviton Manufacturing"']]
+  ['112' FUJITSU_LIMITED ['112', '"Fujitsu Limited"']]
+  ['113' VERTIV_FORMERLY_EMERSON_NETWORK_POWER ['113', '"Vertiv (Formerly Emerson Network Power)"']]
+  ['114' SA_ARMSTRONG_LTD ['114', '"S. A. Armstrong, Ltd."']]
+  ['115' VISONETAG ['115', '"Visonet AG"']]
+  ['116' MM_SYSTEMS_INC ['116', '"M&M Systems, Inc."']]
+  ['117' CUSTOM_SOFTWARE_ENGINEERING ['117', '"Custom Software Engineering"']]
+  ['118' NITTAN_COMPANY_LIMITED ['118', '"Nittan Company, Limited"']]
+  ['119' ELUTIONS_INC_WIZCON_SYSTEMSSAS ['119', '"Elutions Inc. (Wizcon Systems SAS)"']]
+  ['120' PACOM_SYSTEMS_PTY_LTD ['120', '"Pacom Systems Pty., Ltd."']]
+  ['121' UNICO_INC ['121', '"Unico, Inc."']]
+  ['122' EBTRON_INC ['122', '"Ebtron, Inc."']]
+  ['123' SCADA_ENGINE ['123', '"Scada Engine"']]
+  ['124' LENZE_AMERICAS_FORMERLYAC_TECHNOLOGY_CORPORATION ['124', '"Lenze Americas (Formerly: AC Technology Corporation)"']]
+  ['125' EAGLE_TECHNOLOGY ['125', '"Eagle Technology"']]
+  ['126' DATA_AIRE_INC ['126', '"Data Aire, Inc."']]
+  ['127' ABB_INC ['127', '"ABB, Inc."']]
+  ['128' TRANSBIT_SPZOO ['128', '"Transbit Sp. z o. o."']]
+  ['129' TOSHIBA_CARRIER_CORPORATION ['129', '"Toshiba Carrier Corporation"']]
+  ['130' SHENZHEN_JUNZHI_HI_TECH_CO_LTD ['130', '"Shenzhen Junzhi Hi-Tech Co., Ltd."']]
+  ['131' TOKAI_SOFT ['131', '"Tokai Soft"']]
+  ['132' BLUE_RIDGE_TECHNOLOGIES ['132', '"Blue Ridge Technologies"']]
+  ['133' VERIS_INDUSTRIES ['133', '"Veris Industries"']]
+  ['134' CENTAURUS_PRIME ['134', '"Centaurus Prime"']]
+  ['135' SAND_NETWORK_SYSTEMS ['135', '"Sand Network Systems"']]
+  ['136' REGULVAR_INC ['136', '"Regulvar, Inc."']]
+  ['137' AF_DTEK_DIVISIONOF_FASTEK_INTERNATIONAL_INC ['137', '"AFDtek Division of Fastek International Inc."']]
+  ['138' POWER_COLD_COMFORT_AIR_SOLUTIONS_INC ['138', '"PowerCold Comfort Air Solutions, Inc."']]
+  ['139' I_CONTROLS ['139', '"I Controls"']]
+  ['140' VICONICS_ELECTRONICS_INC ['140', '"Viconics Electronics, Inc."']]
+  ['141' YASKAWA_AMERICA_INC ['141', '"Yaskawa America, Inc."']]
+  ['142' DEO_SCONTROLSYSTEMS_GMBH ['142', '"DEOS control systems GmbH"']]
+  ['143' DIGITALE_MESSUND_STEUERSYSTEMEAG ['143', '"Digitale Mess- und Steuersysteme AG"']]
+  ['144' FUJITSU_GENERAL_LIMITED ['144', '"Fujitsu General Limited"']]
+  ['145' PROJECT_ENGINEERING_SRL ['145', '"Project Engineering S.r.l."']]
+  ['146' SANYO_ELECTRIC_CO_LTD ['146', '"Sanyo Electric Co., Ltd."']]
+  ['147' INTEGRATED_INFORMATION_SYSTEMS_INC ['147', '"Integrated Information Systems, Inc."']]
+  ['148' TEMCO_CONTROLS_LTD ['148', '"Temco Controls, Ltd."']]
+  ['149' AIRTEK_INTERNATIONAL_INC ['149', '"Airtek International Inc."']]
+  ['150' ADVANTECH_CORPORATION ['150', '"Advantech Corporation"']]
+  ['151' TITAN_PRODUCTS_LTD ['151', '"Titan Products, Ltd."']]
+  ['152' REGEL_PARTNERS ['152', '"Regel Partners"']]
+  ['153' NATIONAL_ENVIRONMENTAL_PRODUCT ['153', '"National Environmental Product"']]
+  ['154' UNITEC_CORPORATION ['154', '"Unitec Corporation"']]
+  ['155' KANDEN_ENGINEERING_COMPANY ['155', '"Kanden Engineering Company"']]
+  ['156' MESSNER_GEBUDETECHNIK_GMBH ['156', '"Messner Gebäudetechnik GmbH"']]
+  ['157' INTEGRATEDCH ['157', '"Integrated.CH"']]
+  ['158' PRICE_INDUSTRIES ['158', '"Price Industries"']]
+  ['159' SE_ELEKTRONIC_GMBH ['159', '"SE-Elektronic GmbH"']]
+  ['160' ROCKWELL_AUTOMATION ['160', '"Rockwell Automation"']]
+  ['161' ENFLEX_CORP ['161', '"Enflex Corp."']]
+  ['162' ASI_CONTROLS ['162', '"ASI Controls"']]
+  ['163' SYS_MIK_GMBH_DRESDEN ['163', '"SysMik GmbH Dresden"']]
+  ['164' HSC_REGELUNGSTECHNIK_GMBH ['164', '"HSC Regelungstechnik GmbH"']]
+  ['165' SMART_TEMP_AUSTRALIA_PTY_LTD ['165', '"Smart Temp Australia Pty. Ltd."']]
+  ['166' COOPER_CONTROLS ['166', '"Cooper Controls"']]
+  ['167' DUKSAN_MECASYS_CO_LTD ['167', '"Duksan Mecasys Co., Ltd."']]
+  ['168' FUJIIT_CO_LTD ['168', '"Fuji IT Co., Ltd."']]
+  ['169' VACON_PLC ['169', '"Vacon Plc"']]
+  ['170' LEADER_CONTROLS ['170', '"Leader Controls"']]
+  ['171' ABB_FORMERLY_CYLON_CONTROLS_LTD ['171', '"ABB (Formerly Cylon Controls, Ltd)"']]
+  ['172' COMPAS ['172', '"Compas"']]
+  ['173' MITSUBISHI_ELECTRIC_BUILDING_TECHNO_SERVICE_CO_LTD ['173', '"Mitsubishi Electric Building Techno-Service Co., Ltd."']]
+  ['174' BUILDING_CONTROL_INTEGRATORS ['174', '"Building Control Integrators"']]
+  ['175' ITG_WORLDWIDEM_SDN_BHD ['175', '"ITG Worldwide (M) Sdn Bhd"']]
+  ['176' LUTRON_ELECTRONICS_CO_INC ['176', '"Lutron Electronics Co., Inc."']]
+  ['177' COOPER_ATKINS_CORPORATION ['177', '"Cooper-Atkins Corporation"']]
+  ['178' LOYTEC_ELECTRONICS_GMBH ['178', '"LOYTEC Electronics GmbH"']]
+  ['179' PRO_LON ['179', '"ProLon"']]
+  ['180' MEGA_CONTROLS_LIMITED ['180', '"Mega Controls Limited"']]
+  ['181' MICRO_CONTROL_SYSTEMS_INC ['181', '"Micro Control Systems, Inc."']]
+  ['182' KIYON_INC ['182', '"Kiyon, Inc."']]
+  ['183' DUST_NETWORKS ['183', '"Dust Networks"']]
+  ['184' ADVANCED_BUILDING_AUTOMATION_SYSTEMS ['184', '"Advanced Building Automation Systems"']]
+  ['185' HERMOSAG ['185', '"Hermos AG"']]
+  ['186' CEZIM ['186', '"CEZIM"']]
+  ['187' SOFTING ['187', '"Softing"']]
+  ['188' LYNXSPRING_INC ['188', '"Lynxspring, Inc."']]
+  ['189' SCHNEIDER_TOSHIBA_INVERTER_EUROPE ['189', '"Schneider Toshiba Inverter Europe"']]
+  ['190' DANFOSS_DRIVESAS ['190', '"Danfoss Drives A/S"']]
+  ['191' EATON_CORPORATION ['191', '"Eaton Corporation"']]
+  ['192' MATYCASA ['192', '"Matyca S.A."']]
+  ['193' BOTECHAB ['193', '"Botech AB"']]
+  ['194' NOVEO_INC ['194', '"Noveo, Inc."']]
+  ['195' AMEV ['195', '"AMEV"']]
+  ['196' YOKOGAWA_ELECTRIC_CORPORATION ['196', '"Yokogawa Electric Corporation"']]
+  ['197' BOSCH_BUILDING_AUTOMATION_GMBH ['197', '"Bosch Building Automation GmbH"']]
+  ['198' EXACT_LOGIC ['198', '"Exact Logic"']]
+  ['199' MASS_ELECTRONICS_PTY_LTDDBA_INNOTECH_CONTROL_SYSTEMS_AUSTRALIA ['199', '"Mass Electronics Pty Ltd dba Innotech Control Systems Australia"']]
+  ['200' KANDENKO_CO_LTD ['200', '"Kandenko Co., Ltd."']]
+  ['201' DTF_DATEN_TECHNIK_FRIES ['201', '"DTF, Daten-Technik Fries"']]
+  ['202' KLIMASOFT_LTD ['202', '"Klimasoft, Ltd."']]
+  ['203' TOSHIBA_SCHNEIDER_INVERTER_CORPORATION ['203', '"Toshiba Schneider Inverter Corporation"']]
+  ['204' CONTROL_APPLICATIONS_LTD ['204', '"Control Applications, Ltd."']]
+  ['205' CIMONCO_LTD ['205', '"CIMON CO., Ltd."']]
+  ['206' ONICON_INCORPORATED ['206', '"Onicon Incorporated"']]
+  ['207' AUTOMATION_DISPLAYS_INC ['207', '"Automation Displays, Inc."']]
+  ['208' CONTROL_SOLUTIONS_INC ['208', '"Control Solutions, Inc."']]
+  ['209' REMSDAQ_LIMITED ['209', '"Remsdaq Limited"']]
+  ['210' NTT_FACILITIES_INC ['210', '"NTT Facilities, Inc."']]
+  ['211' VIPA_GMBH ['211', '"VIPA GmbH"']]
+  ['212' TSC1_ASSOCIATIONOF_JAPAN ['212', '"TSC21 Association of Japan"']]
+  ['213' STRATO_AUTOMATION ['213', '"Strato Automation"']]
+  ['214' HRW_LIMITED ['214', '"HRW Limited"']]
+  ['215' LIGHTING_CONTROL_DESIGN_INC ['215', '"Lighting Control & Design, Inc."']]
+  ['216' MERCY_ELECTRONICAND_ELECTRICAL_INDUSTRIES ['216', '"Mercy Electronic and Electrical Industries"']]
+  ['217' SAMSUNGSDS_CO_LTD ['217', '"Samsung SDS Co., Ltd"']]
+  ['218' IMPACT_FACILITY_SOLUTIONS_INC ['218', '"Impact Facility Solutions, Inc."']]
+  ['219' AIRCUITY ['219', '"Aircuity"']]
+  ['220' CONTROL_TECHNIQUES_LTD ['220', '"Control Techniques, Ltd."']]
+  ['221' OPEN_GENERAL_PTY_LTD ['221', '"OpenGeneral Pty., Ltd."']]
+  ['222' WAGO_KONTAKTTECHNIK_GMBH_COKG ['222', '"WAGO Kontakttechnik GmbH & Co. KG"']]
+  ['223' FRANKLIN_ELECTRIC ['223', '"Franklin Electric"']]
+  ['224' CHLORIDE_POWER_PROTECTION_COMPANY ['224', '"Chloride Power Protection Company"']]
+  ['225' COMPUTROLS_INC ['225', '"Computrols, Inc."']]
+  ['226' PHOENIX_CONTACT_GMBH_COKG ['226', '"Phoenix Contact GmbH & Co. KG"']]
+  ['227' GRUNDFOS_MANAGEMENTAS ['227', '"Grundfos Management A/S"']]
+  ['228' RIDDER_DRIVE_SYSTEMS ['228', '"Ridder Drive Systems"']]
+  ['229' SOFT_DEVICESDNBHD ['229', '"Soft Device SDN BHD"']]
+  ['230' INTEGRATED_CONTROL_TECHNOLOGY_LIMITED ['230', '"Integrated Control Technology Limited"']]
+  ['231' AI_RXPERT_SYSTEMS_INC ['231', '"AIRxpert Systems, Inc."']]
+  ['232' MICROTROL_LIMITED ['232', '"Microtrol Limited"']]
+  ['233' RED_LION_CONTROLS ['233', '"Red Lion Controls"']]
+  ['234' DIGITAL_ELECTRONICS_CORPORATION ['234', '"Digital Electronics Corporation"']]
+  ['235' ENNOVATIS_GMBH ['235', '"Ennovatis GmbH"']]
+  ['236' SEROTONIN_SOFTWARE_TECHNOLOGIES_INC ['236', '"Serotonin Software Technologies, Inc."']]
+  ['237' LS_INDUSTRIAL_SYSTEMS_CO_LTD ['237', '"LS Industrial Systems Co., Ltd."']]
+  ['238' SQUARED_COMPANY ['238', '"Square D Company"']]
+  ['239' S_SQUARED_INNOVATIONS_INC ['239', '"S Squared Innovations, Inc."']]
+  ['240' ARICENT_LTD ['240', '"Aricent Ltd."']]
+  ['241' ETHER_METRICSLLC ['241', '"EtherMetrics, LLC"']]
+  ['242' INDUSTRIAL_CONTROL_COMMUNICATIONS_INC ['242', '"Industrial Control Communications, Inc."']]
+  ['243' PARAGON_CONTROLS_INC ['243', '"Paragon Controls, Inc."']]
+  ['244' AO_SMITH_CORPORATION ['244', '"A. O. Smith Corporation"']]
+  ['245' CONTEMPORARY_CONTROL_SYSTEMS_INC ['245', '"Contemporary Control Systems, Inc."']]
+  ['246' HMS_INDUSTRIAL_NETWORKSSLU ['246', '"HMS Industrial Networks SLU"']]
+  ['247' INGENIEURGESELLSCHAFTN_HARTLEBMBH ['247', '"Ingenieurgesellschaft N. Hartleb mbH"']]
+  ['248' HEAT_TIMER_CORPORATION ['248', '"Heat-Timer Corporation"']]
+  ['249' INGRASYS_TECHNOLOGY_INC ['249', '"Ingrasys Technology, Inc."']]
+  ['250' COSTERM_BUILDING_AUTOMATION ['250', '"Costerm Building Automation"']]
+  ['251' WILOSE ['251', '"WILO SE"']]
+  ['252' EMBEDIA_TECHNOLOGIES_CORP ['252', '"Embedia Technologies Corp."']]
+  ['253' TECHNILOG ['253', '"Technilog"']]
+  ['254' HR_CONTROLS_LTD_COKG ['254', '"HR Controls Ltd. & Co. KG"']]
+  ['255' LENNOX_INTERNATIONAL_INC ['255', '"Lennox International, Inc."']]
+  ['256' RK_TEC_RAUCHKLAPPEN_STEUERUNGSSYSTEME_GMBH_COKG ['256', '"RK-Tec Rauchklappen-Steuerungssysteme GmbH & Co. KG"']]
+  ['257' THERMOMAX_LTD ['257', '"Thermomax, Ltd."']]
+  ['258' ELCON_ELECTRONIC_CONTROL_LTD ['258', '"ELCON Electronic Control, Ltd."']]
+  ['259' LARMIA_CONTROLAB ['259', '"Larmia Control AB"']]
+  ['260' BA_CNET_STACKAT_SOURCE_FORGE ['260', '"BACnet Stack at SourceForge"']]
+  ['261' GS_SECURITY_SERVICESAS ['261', '"G4S Security Services A/S"']]
+  ['262' EXOR_INTERNATIONAL_SPA ['262', '"Exor International S.p.A."']]
+  ['263' CRISTAL_CONTROLES ['263', '"Cristal Controles"']]
+  ['264' REGINAB ['264', '"Regin AB"']]
+  ['265' DIMENSION_SOFTWARE_INC ['265', '"Dimension Software, Inc."']]
+  ['266' SYNAP_SENSE_CORPORATION ['266', '"SynapSense Corporation"']]
+  ['267' BEIJING_NANTREE_ELECTRONIC_CO_LTD ['267', '"Beijing Nantree Electronic Co., Ltd."']]
+  ['268' CAMUS_HYDRONICS_LTD ['268', '"Camus Hydronics Ltd."']]
+  ['269' KAWASAKI_HEAVY_INDUSTRIES_LTD ['269', '"Kawasaki Heavy Industries, Ltd."']]
+  ['270' CRITICAL_ENVIRONMENT_TECHNOLOGIES ['270', '"Critical Environment Technologies"']]
+  ['271' ILSHINIBS_CO_LTD ['271', '"ILSHIN IBS Co., Ltd."']]
+  ['272' ELESTA_ENERGY_CONTROLAG ['272', '"ELESTA Energy Control AG"']]
+  ['273' KROPMAN_INSTALLATIETECHNIEK ['273', '"KROPMAN Installatietechniek"']]
+  ['274' BALDOR_ELECTRIC_COMPANY ['274', '"Baldor Electric Company"']]
+  ['275' ING_AMBH ['275', '"INGA mbH"']]
+  ['276' GE_CONSUMER_INDUSTRIAL ['276', '"GE Consumer & Industrial"']]
+  ['277' FUNCTIONAL_DEVICES_INC ['277', '"Functional Devices, Inc."']]
+  ['278' STUDIOSC ['278', '"StudioSC"']]
+  ['279' M_SYSTEM_CO_LTD ['279', '"M-System Co., Ltd."']]
+  ['280' YOKOTA_CO_LTD ['280', '"Yokota Co., Ltd."']]
+  ['281' HITRANSE_TECHNOLOGY_COLTD ['281', '"Hitranse Technology Co., LTD"']]
+  ['282' VIGILENT_CORPORATION ['282', '"Vigilent Corporation"']]
+  ['283' KELE_INC ['283', '"Kele, Inc."']]
+  ['284' BELIMO_AUTOMATIONAG ['284', '"BELIMO Automation AG"']]
+  ['285' GENTEC ['285', '"Gentec"']]
+  ['286' EMBEDDED_SCIENCE_LABSLLC ['286', '"Embedded Science Labs, LLC"']]
+  ['287' PARKER_HANNIFIN_CORPORATION ['287', '"Parker Hannifin Corporation"']]
+  ['288' MA_CAPS_INTERNATIONAL_LIMITED ['288', '"MaCaPS International Limited"']]
+  ['289' LINK_CORPORATION ['289', '"Link4 Corporation"']]
+  ['290' ROMUTEC_STEUERU_REGELSYSTEME_GMBH ['290', '"Romutec Steuer-u. Regelsysteme GmbH"']]
+  ['291' PRIBUSIN_INC ['291', '"Pribusin, Inc."']]
+  ['292' ADVANTAGE_CONTROLS ['292', '"Advantage Controls"']]
+  ['293' CRITICAL_ROOM_CONTROL ['293', '"Critical Room Control"']]
+  ['294' LEGRAND ['294', '"LEGRAND"']]
+  ['295' TONGDY_CONTROL_TECHNOLOGY_CO_LTD ['295', '"Tongdy Control Technology Co., Ltd."']]
+  ['296' ISSARO_INTEGRIERTE_SYSTEMTECHNIK ['296', '"ISSARO Integrierte Systemtechnik"']]
+  ['297' PRO_DEV_INDUSTRIES ['297', '"Pro-Dev Industries"']]
+  ['298' DRISTEEM ['298', '"DRI-STEEM"']]
+  ['299' CREATIVE_ELECTRONIC_GMBH ['299', '"Creative Electronic GmbH"']]
+  ['300' SWEGONAB ['300', '"Swegon AB"']]
+  ['301' FIRVEN_ASRO ['301', '"FIRVENA s.r.o."']]
+  ['302' HITACHI_APPLIANCES_INC ['302', '"Hitachi Appliances, Inc."']]
+  ['303' REAL_TIME_AUTOMATION_INC ['303', '"Real Time Automation, Inc."']]
+  ['304' ITEC_HANKYU_HANSHIN_CO ['304', '"ITEC Hankyu-Hanshin Co."']]
+  ['305' CYRUSEM_ENGINEERING_CO_LTD ['305', '"Cyrus E&M Engineering Co., Ltd."']]
+  ['306' BADGER_METER ['306', '"Badger Meter"']]
+  ['307' CIRRASCALE_CORPORATION ['307', '"Cirrascale Corporation"']]
+  ['308' ELESTA_GMBH_BUILDING_AUTOMATION ['308', '"Elesta GmbH Building Automation"']]
+  ['309' SECURITON ['309', '"Securiton"']]
+  ['310' O_SLSOFT_INC ['310', '"OSlsoft, Inc."']]
+  ['311' HANAZEDER_ELECTRONIC_GMBH ['311', '"Hanazeder Electronic GmbH"']]
+  ['312' HONEYWELL_SECURITY_DEUTSCHLAND_NOVAR_GMBH ['312', '"Honeywell Security Deutschland, Novar GmbH"']]
+  ['313' SIEMENS_INDUSTRY_INC ['313', '"Siemens Industry, Inc."']]
+  ['314' ETM_PROFESSIONAL_CONTROL_GMBH ['314', '"ETM Professional Control GmbH"']]
+  ['315' MEITAVTEC_LTD ['315', '"Meitav-tec, Ltd."']]
+  ['316' JANITZA_ELECTRONICS_GMBH ['316', '"Janitza Electronics GmbH"']]
+  ['317' MKS_NORDHAUSEN ['317', '"MKS Nordhausen"']]
+  ['318' DE_GIER_DRIVE_SYSTEMSBV ['318', '"De Gier Drive Systems B.V."']]
+  ['319' CYPRESS_ENVIROSYSTEMS ['319', '"Cypress Envirosystems"']]
+  ['320' SMAR_TRONSRO ['320', '"SMARTron s.r.o."']]
+  ['321' VERARI_SYSTEMS_INC ['321', '"Verari Systems, Inc."']]
+  ['322' KW_ELECTRONIC_SERVICE_INC ['322', '"K-W Electronic Service, Inc."']]
+  ['323' ALFASMART_ENERGY_MANAGEMENT ['323', '"ALFA-SMART Energy Management"']]
+  ['324' TELKONET_INC ['324', '"Telkonet, Inc."']]
+  ['325' SECURITON_GMBH ['325', '"Securiton GmbH"']]
+  ['326' CEMTREX_INC ['326', '"Cemtrex, Inc."']]
+  ['327' PERFORMANCE_TECHNOLOGIES_INC ['327', '"Performance Technologies, Inc."']]
+  ['328' XTRALIS_AUST_PTY_LTD ['328', '"Xtralis (Aust) Pty Ltd"']]
+  ['329' TROX_GMBH ['329', '"TROX GmbH"']]
+  ['330' BEIJING_HYSINE_TECHNOLOGY_CO_LTD ['330', '"Beijing Hysine Technology Co., Ltd"']]
+  ['331' RCK_CONTROLS_INC ['331', '"RCK Controls, Inc."']]
+  ['332' DISTECH_CONTROLSSAS ['332', '"Distech Controls SAS"']]
+  ['333' NOVAR_HONEYWELL ['333', '"Novar/Honeywell"']]
+  ['334' S_INTEGRATION_SOLUTIONS ['334', '"S4 Integration Solutions"']]
+  ['335' SCHNEIDER_ELECTRIC1 ['335', '"Schneider Electric"']]
+  ['336' LHA_SYSTEMS ['336', '"LHA Systems"']]
+  ['337' GH_MENGINEERING_GROUP_INC ['337', '"GHM engineering Group, Inc."']]
+  ['338' CLLIMALUXSA ['338', '"Cllimalux S.A."']]
+  ['339' VAISALA_OYJ ['339', '"VAISALA Oyj"']]
+  ['340' COMPLEX_BEIJING_TECHNOLOGY_COLTD ['340', '"COMPLEX (Beijing) Technology, Co., LTD."']]
+  ['341' SCAD_AMETRICS ['341', '"SCADAmetrics"']]
+  ['342' POWERPEGNSI_LIMITED ['342', '"POWERPEG NSI Limited"']]
+  ['343' BA_CNET_INTEROPERABILITY_TESTING_SERVICES_INC ['343', '"BACnet Interoperability Testing Services, Inc."']]
+  ['344' TECOAS ['344', '"Teco a.s."']]
+  ['345' PLEXUS_TECHNOLOGY_INC ['345', '"Plexus Technology, Inc."']]
+  ['346' ENERGY_FOCUS_INC ['346', '"Energy Focus, Inc."']]
+  ['347' POWERSMITHS_INTERNATIONAL_CORP ['347', '"Powersmiths International Corp."']]
+  ['348' NICHIBEI_CO_LTD ['348', '"Nichibei Co., Ltd."']]
+  ['349' HKC_TECHNOLOGY_LTD ['349', '"HKC Technology Ltd."']]
+  ['350' OVATION_NETWORKS_INC ['350', '"Ovation Networks, Inc."']]
+  ['351' SETRA_SYSTEMS ['351', '"Setra Systems"']]
+  ['352' AVG_AUTOMATION ['352', '"AVG Automation"']]
+  ['353' ZXC_LTD ['353', '"ZXC Ltd."']]
+  ['354' BYTE_SPHERE ['354', '"Byte Sphere"']]
+  ['355' GENERITON_CO_LTD ['355', '"Generiton Co., Ltd."']]
+  ['356' HOLTER_REGELARMATUREN_GMBH_COKG ['356', '"Holter Regelarmaturen GmbH & Co. KG"']]
+  ['357' BEDFORD_INSTRUMENTSLLC ['357', '"Bedford Instruments, LLC"']]
+  ['358' STANDAIR_INC ['358', '"Standair Inc."']]
+  ['359' WEG_AUTOMATIONRD ['359', '"WEG Automation – R&D"']]
+  ['360' PROLON_CONTROL_SYSTEMS_APS ['360', '"Prolon Control Systems ApS"']]
+  ['361' INNEASOFT ['361', '"Inneasoft"']]
+  ['362' CONNEX_SOFT_GMBH ['362', '"ConneXSoft GmbH"']]
+  ['363' CEAG_NOTLICHTSYSTEME_GMBH ['363', '"CEAG Notlichtsysteme GmbH"']]
+  ['364' DISTECH_CONTROLS_INC ['364', '"Distech Controls Inc."']]
+  ['365' INDUSTRIAL_TECHNOLOGY_RESEARCH_INSTITUTE ['365', '"Industrial Technology Research Institute"']]
+  ['366' ICONICS_INC ['366', '"ICONICS, Inc."']]
+  ['367' IQ_CONTROLSSC ['367', '"IQ Controls s.c."']]
+  ['368' OJ_ELECTRONICSAS ['368', '"OJ Electronics A/S"']]
+  ['369' ROLBIT_LTD ['369', '"Rolbit Ltd."']]
+  ['370' SYNAPSYS_SOLUTIONS_LTD ['370', '"Synapsys Solutions Ltd."']]
+  ['371' ACME_ENGINEERING_PROD_LTD ['371', '"ACME Engineering Prod. Ltd."']]
+  ['372' ZENER_ELECTRIC_PTY_LTD ['372', '"Zener Electric Pty, Ltd."']]
+  ['373' SELECTRONIX_INC ['373', '"Selectronix, Inc."']]
+  ['374' GORBET_BANERJEELLC ['374', '"Gorbet & Banerjee, LLC."']]
+  ['375' IME ['375', '"IME"']]
+  ['376' STEPHENH_DAWSON_COMPUTER_SERVICE ['376', '"Stephen H. Dawson Computer Service"']]
+  ['377' ACCUTROLLLC ['377', '"Accutrol, LLC"']]
+  ['378' SCHNEIDER_ELEKTRONIK_GMBH ['378', '"Schneider Elektronik GmbH"']]
+  ['379' ALPHA_INNO_TEC_GMBH ['379', '"Alpha-Inno Tec GmbH"']]
+  ['380' ADM_MICRO_INC ['380', '"ADMMicro, Inc."']]
+  ['381' GREYSTONE_ENERGY_SYSTEMS_INC ['381', '"Greystone Energy Systems, Inc."']]
+  ['382' CAP_TECHNOLOGIE ['382', '"CAP Technologie"']]
+  ['383' KE_RO_SYSTEMS ['383', '"KeRo Systems"']]
+  ['384' DOMAT_CONTROL_SYSTEMSRO ['384', '"Domat Control System s.r.o."']]
+  ['385' EFEKTRONICS_PTY_LTD ['385', '"Efektronics Pty. Ltd."']]
+  ['386' HEKATRON_VERTRIEBS_GMBH ['386', '"Hekatron Vertriebs GmbH"']]
+  ['387' SECURITONAG ['387', '"Securiton AG"']]
+  ['388' CARLO_GAVAZZI_CONTROLS_SPA ['388', '"Carlo Gavazzi Controls SpA"']]
+  ['389' CHIPKIN_AUTOMATION_SYSTEMS ['389', '"Chipkin Automation Systems"']]
+  ['390' SAVANT_SYSTEMSLLC ['390', '"Savant Systems, LLC"']]
+  ['391' SIMMTRONIC_LIGHTING_CONTROLS ['391', '"Simmtronic Lighting Controls"']]
+  ['392' ABELKO_INNOVATIONAB ['392', '"Abelko Innovation AB"']]
+  ['393' SERESCO_TECHNOLOGIES_INC ['393', '"Seresco Technologies Inc."']]
+  ['394' IT_WATCHDOGS ['394', '"IT Watchdogs"']]
+  ['395' AUTOMATION_ASSIST_JAPAN_CORP ['395', '"Automation Assist Japan Corp."']]
+  ['396' THERMOKON_SENSORTECHNIK_GMBH ['396', '"Thermokon Sensortechnik GmbH"']]
+  ['397' E_GAUGE_SYSTEMSLLC ['397', '"EGauge Systems, LLC"']]
+  ['398' QUANTUM_AUTOMATIONASIAPTE_LTD ['398', '"Quantum Automation (ASIA) PTE, Ltd."']]
+  ['399' TOSHIBA_LIGHTING_TECHNOLOGY_CORP ['399', '"Toshiba Lighting & Technology Corp."']]
+  ['400' SPIN_ENGENHARIADE_AUTOMAO_LTDA ['400', '"SPIN Engenharia de Automação Ltda."']]
+  ['401' LOGISTICS_SYSTEMS_SOFTWARE_SERVICES_INDIAPVT_LTD ['401', '"Logistics Systems & Software Services India PVT. Ltd."']]
+  ['402' DELTA_CONTROLS_INTEGRATION_PRODUCTS ['402', '"Delta Controls Integration Products"']]
+  ['403' FOCUS_MEDIA ['403', '"Focus Media"']]
+  ['404' LUM_ENERGI_INC ['404', '"LUMEnergi Inc."']]
+  ['405' KARA_SYSTEMS ['405', '"Kara Systems"']]
+  ['406' RF_CODE_INC ['406', '"RF Code, Inc."']]
+  ['407' FATEK_AUTOMATION_CORP ['407', '"Fatek Automation Corp."']]
+  ['408' JANDA_SOFTWARE_COMPANYLLC ['408', '"JANDA Software Company, LLC"']]
+  ['409' OPEN_SYSTEM_SOLUTIONS_LIMITED ['409', '"Open System Solutions Limited"']]
+  ['410' INTELEC_SYSTEMSPTY_LTD ['410', '"Intelec Systems PTY Ltd."']]
+  ['411' ECOLODGIXLLC ['411', '"Ecolodgix, LLC"']]
+  ['412' DOUGLAS_LIGHTING_CONTROLS ['412', '"Douglas Lighting Controls"']]
+  ['413' IS_ATECH_GMBH ['413', '"iSAtech GmbH"']]
+  ['414' AREAL ['414', '"AREAL"']]
+  ['415' BECKHOFF_AUTOMATION ['415', '"Beckhoff Automation"']]
+  ['416' IPAS_GMBH ['416', '"IPAS GmbH"']]
+  ['417' KE_THERM_SOLUTIONS ['417', '"KE2 Therm Solutions"']]
+  ['418' BASE_PRODUCTS ['418', '"Base2Products"']]
+  ['419' DTL_CONTROLSLLC ['419', '"DTL Controls, LLC"']]
+  ['420' INNCOM_INTERNATIONAL_INC ['420', '"INNCOM International, Inc."']]
+  ['421' METZCONNECT_GMBH ['421', '"METZ CONNECT GmbH"']]
+  ['422' GREENTROL_AUTOMATION_INC ['422', '"Greentrol Automation, Inc"']]
+  ['423' BELIMO_AUTOMATIONAG1 ['423', '"BELIMO Automation AG"']]
+  ['424' SAMSUNG_HEAVY_INDUSTRIES_CO_LTD ['424', '"Samsung Heavy Industries Co, Ltd"']]
+  ['425' TRIACTA_POWER_TECHNOLOGIES_INC ['425', '"Triacta Power Technologies, Inc."']]
+  ['426' GLOBESTAR_SYSTEMS ['426', '"Globestar Systems"']]
+  ['427' MLB_ADVANCED_MEDIALP ['427', '"MLB Advanced Media, LP"']]
+  ['428' SWG_STUCKMANN_WIRTSCHAFTLICHE_GEBUDESYSTEME_GMBH ['428', '"SWG Stuckmann Wirtschaftliche Gebäudesysteme GmbH"']]
+  ['429' SENSOR_SWITCH ['429', '"SensorSwitch"']]
+  ['430' MULTITEK_POWER_LIMITED ['430', '"Multitek Power Limited"']]
+  ['431' AQUAMETROAG ['431', '"Aquametro AG"']]
+  ['432' LG_ELECTRONICS_INC ['432', '"LG Electronics Inc."']]
+  ['433' ELECTRONIC_THEATRE_CONTROLS_INC ['433', '"Electronic Theatre Controls, Inc."']]
+  ['434' MITSUBISHI_ELECTRIC_CORPORATION_NAGOYA_WORKS ['434', '"Mitsubishi Electric Corporation Nagoya Works"']]
+  ['435' DELTA_ELECTRONICS_INC ['435', '"Delta Electronics, Inc."']]
+  ['436' ELMA_KURTALJ_LTD ['436', '"Elma Kurtalj, Ltd."']]
+  ['437' TYCO_FIRE_SECURITY_GMBH ['437', '"Tyco Fire & Security GmbH"']]
+  ['438' NEDAP_SECURITY_MANAGEMENT ['438', '"Nedap Security Management"']]
+  ['439' ESC_AUTOMATION_INC ['439', '"ESC Automation Inc."']]
+  ['440' DSPYOU_LTD ['440', '"DSP4YOU Ltd."']]
+  ['441' GE_SENSINGAND_INSPECTION_TECHNOLOGIES ['441', '"GE Sensing and Inspection Technologies"']]
+  ['442' EMBEDDED_SYSTEMSSIA ['442', '"Embedded Systems SIA"']]
+  ['443' BEFEGA_GMBH ['443', '"BEFEGA GmbH"']]
+  ['444' BASELINE_INC ['444', '"Baseline Inc."']]
+  ['445' KEY_ACT ['445', '"Key2Act"']]
+  ['446' OEM_CTRL ['446', '"OEMCtrl"']]
+  ['447' CLARKSON_CONTROLS_LIMITED ['447', '"Clarkson Controls Limited"']]
+  ['448' ROGERWELL_CONTROL_SYSTEM_LIMITED ['448', '"Rogerwell Control System Limited"']]
+  ['449' SCL_ELEMENTS ['449', '"SCL Elements"']]
+  ['450' HITACHI_LTD1 ['450', '"Hitachi Ltd."']]
+  ['451' NEWRON_SYSTEMSA ['451', '"Newron System SA"']]
+  ['452' BEVECO_GEBOUWAUTOMATISERINGBV ['452', '"BEVECO Gebouwautomatisering BV"']]
+  ['453' STREAMSIDE_SOLUTIONS ['453', '"Streamside Solutions"']]
+  ['454' YELLOWSTONE_SOFT ['454', '"Yellowstone Soft"']]
+  ['455' OZTECH_INTELLIGENT_SYSTEMS_PTY_LTD ['455', '"Oztech Intelligent Systems Pty Ltd."']]
+  ['456' NOVELAN_GMBH ['456', '"Novelan GmbH"']]
+  ['457' FLEXIM_AMERICAS_CORPORATION ['457', '"Flexim Americas Corporation"']]
+  ['458' ICPDAS_CO_LTD ['458', '"ICP DAS Co., Ltd."']]
+  ['459' CARMA_INDUSTRIES_INC ['459', '"CARMA Industries Inc."']]
+  ['460' LOG_ONE_LTD ['460', '"Log-One Ltd."']]
+  ['461' TECO_ELECTRIC_MACHINERY_CO_LTD ['461', '"TECO Electric & Machinery Co., Ltd."']]
+  ['462' CONNECT_EX_INC ['462', '"ConnectEx, Inc."']]
+  ['463' TURBODDC_SDWEST ['463', '"Turbo DDC Südwest"']]
+  ['464' QUATROSENSE_ENVIRONMENTAL_LTD ['464', '"Quatrosense Environmental Ltd."']]
+  ['465' FIFTH_LIGHT_TECHNOLOGY_LTD ['465', '"Fifth Light Technology Ltd."']]
+  ['466' SCIENTIFIC_SOLUTIONS_LTD ['466', '"Scientific Solutions, Ltd."']]
+  ['467' CONTROLLER_AREA_NETWORK_SOLUTIONSM_SDN_BHD ['467', '"Controller Area Network Solutions (M) Sdn Bhd"']]
+  ['468' RESOL_ELEKTRONISCHE_REGELUNGEN_GMBH ['468', '"RESOL – Elektronische Regelungen GmbH"']]
+  ['469' RPBUSLLC ['469', '"RPBUS LLC"']]
+  ['470' BRS_SISTEMAS_ELETRONICOS ['470', '"BRS Sistemas Eletronicos"']]
+  ['471' WINDOW_MASTERAS ['471', '"WindowMaster A/S"']]
+  ['472' SUNLUX_TECHNOLOGIES_LTD ['472', '"Sunlux Technologies Ltd."']]
+  ['473' MEASURLOGIC ['473', '"Measurlogic"']]
+  ['474' FRIMAT_GMBH ['474', '"Frimat GmbH"']]
+  ['475' SPIRAX_SARCO ['475', '"Spirax Sarco"']]
+  ['476' LUXTRON ['476', '"Luxtron"']]
+  ['477' RAYPAK_INC ['477', '"Raypak Inc"']]
+  ['478' AIR_MONITOR_CORPORATION1 ['478', '"Air Monitor Corporation"']]
+  ['479' REGLER_OCH_WEBBTEKNIK_SVERIGEROWS ['479', '"Regler Och Webbteknik Sverige (ROWS)"']]
+  ['480' INTELLIGENT_LIGHTING_CONTROLS_INC ['480', '"Intelligent Lighting Controls Inc."']]
+  ['481' SANYO_ELECTRIC_INDUSTRY_CO_LTD ['481', '"Sanyo Electric Industry Co., Ltd"']]
+  ['482' E_MON_ENERGY_MONITORING_PRODUCTS ['482', '"E-Mon Energy Monitoring Products"']]
+  ['483' DIGITAL_CONTROL_SYSTEMS ['483', '"Digital Control Systems"']]
+  ['484' ATI_AIRTEST_TECHNOLOGIES_INC ['484', '"ATI Airtest Technologies, Inc."']]
+  ['485' SCSSA ['485', '"SCS SA"']]
+  ['486' HMS_INDUSTRIAL_NETWORKSAB ['486', '"HMS Industrial Networks AB"']]
+  ['487' SHENZHEN_UNIVERSAL_INTELLISYS_CO_LTD ['487', '"Shenzhen Universal Intellisys Co Ltd"']]
+  ['488' EK_INTELLISYS_SDN_BHD ['488', '"EK Intellisys Sdn Bhd"']]
+  ['489' SYS_COM ['489', '"SysCom"']]
+  ['490' FIRECOM_INC ['490', '"Firecom, Inc."']]
+  ['491' ESA_ELEKTROSCHALTANLAGEN_GRIMMA_GMBH ['491', '"ESA Elektroschaltanlagen Grimma GmbH"']]
+  ['492' KUMAHIRA_CO_LTD ['492', '"Kumahira Co Ltd"']]
+  ['493' HOTRACO ['493', '"Hotraco"']]
+  ['494' SABO_ELEKTRONIK_GMBH ['494', '"SABO Elektronik GmbH"']]
+  ['495' EQUIP_TRANS ['495', '"Equip’Trans"']]
+  ['496' TEMPERATURE_CONTROL_SPECIALITIES_CO_INCTCS ['496', '"Temperature Control Specialities Co., Inc (TCS)"']]
+  ['497' FLOW_CON_INTERNATIONALAS ['497', '"FlowCon International A/S"']]
+  ['498' THYSSEN_KRUPP_ELEVATOR_AMERICAS ['498', '"ThyssenKrupp Elevator Americas"']]
+  ['499' ABATEMENT_TECHNOLOGIES ['499', '"Abatement Technologies"']]
+  ['500' CONTINENTAL_CONTROL_SYSTEMSLLC ['500', '"Continental Control Systems, LLC"']]
+  ['501' WISAG_AUTOMATISIERUNGSTECHNIK_GMBH_COKG ['501', '"WISAG Automatisierungstechnik GmbH & Co KG"']]
+  ['502' EASYIO ['502', '"EasyIO"']]
+  ['503' EAP_ELECTRIC_GMBH ['503', '"EAP-Electric GmbH"']]
+  ['504' HARDMEIER ['504', '"Hardmeier"']]
+  ['505' MIRCOM_GROUPOF_COMPANIES ['505', '"Mircom Group of Companies"']]
+  ['506' QUEST_CONTROLS ['506', '"Quest Controls"']]
+  ['507' MESTEK_INC ['507', '"Mestek, Inc"']]
+  ['508' PULSE_ENERGY ['508', '"Pulse Energy"']]
+  ['509' TACHIKAWA_CORPORATION ['509', '"Tachikawa Corporation"']]
+  ['510' UNIVERSITYOF_NEBRASKA_LINCOLN ['510', '"University of Nebraska-Lincoln"']]
+  ['511' REDWOOD_SYSTEMS ['511', '"Redwood Systems"']]
+  ['512' PAS_STEC_INDUSTRIE_ELEKTRONIK_GMBH ['512', '"PASStec Industrie-Elektronik GmbH"']]
+  ['513' NGEK_INC ['513', '"NgEK, Inc."']]
+  ['514' TMAC_TECHNOLOGIES ['514', '"t-mac Technologies"']]
+  ['515' JIREH_ENERGY_TECH_CO_LTD ['515', '"Jireh Energy Tech Co., Ltd."']]
+  ['516' ENLIGHTED_INC ['516', '"Enlighted Inc."']]
+  ['517' EL_PIAST_SP_ZOO ['517', '"El-Piast Sp. Z o.o"']]
+  ['518' NETX_AUTOMATION_SOFTWARE_GMBH ['518', '"NetxAutomation Software GmbH"']]
+  ['519' INVERTEK_DRIVES ['519', '"Invertek Drives"']]
+  ['520' DEUTSCHMANN_AUTOMATION_GMBH_COKG ['520', '"Deutschmann Automation GmbH & Co. KG"']]
+  ['521' EMU_ELECTRONICAG ['521', '"EMU Electronic AG"']]
+  ['522' PHAEDRUS_LIMITED ['522', '"Phaedrus Limited"']]
+  ['523' SIGMATEK_GMBH_COKG ['523', '"Sigmatek GmbH & Co KG"']]
+  ['524' MARLIN_CONTROLS ['524', '"Marlin Controls"']]
+  ['525' CIRCUTORSA ['525', '"Circutor, SA"']]
+  ['526' UTC_FIRE_SECURITY ['526', '"UTC Fire & Security"']]
+  ['527' DENT_INSTRUMENTS_INC ['527', '"DENT Instruments, Inc."']]
+  ['528' FHP_MANUFACTURING_COMPANY_BOSCH_GROUP ['528', '"FHP Manufacturing Company – Bosch Group"']]
+  ['529' GE_INTELLIGENT_PLATFORMS ['529', '"GE Intelligent Platforms"']]
+  ['530' INNER_RANGE_PTY_LTD ['530', '"Inner Range Pty Ltd"']]
+  ['531' GLAS_ENERGY_TECHNOLOGY ['531', '"GLAS Energy Technology"']]
+  ['532' MSR_ELECTRONIC_GMBH ['532', '"MSR-Electronic-GmbH"']]
+  ['533' ENERGY_CONTROL_SYSTEMS_INC ['533', '"Energy Control Systems, Inc."']]
+  ['534' EMT_CONTROLS ['534', '"EMT Controls"']]
+  ['535' DAINTREE ['535', '"Daintree"']]
+  ['536' EUROIC_CDOO ['536', '"EURO ICC d.o.o"']]
+  ['537' TE_CONNECTIVITY_ENERGY ['537', '"TE Connectivity Energy"']]
+  ['538' GEZE_GMBH ['538', '"GEZE GmbH"']]
+  ['539' NEC_CORPORATION ['539', '"NEC Corporation"']]
+  ['540' HO_CHEUNG_INTERNATIONAL_COMPANY_LIMITED ['540', '"Ho Cheung International Company Limited"']]
+  ['541' SHARP_MANUFACTURING_SYSTEMS_CORPORATION ['541', '"Sharp Manufacturing Systems Corporation"']]
+  ['542' DOTCONTROL_SAS ['542', '"DOT CONTROLS a.s."']]
+  ['543' BEACON_MEDS ['543', '"BeaconMedæs"']]
+  ['544' MIDEA_COMMERCIAL_AIRCON ['544', '"Midea Commercial Aircon"']]
+  ['545' WATT_MASTER_CONTROLS ['545', '"WattMaster Controls"']]
+  ['546' KAMSTRUPAS ['546', '"Kamstrup A/S"']]
+  ['547' CA_COMPUTER_AUTOMATION_GMBH ['547', '"CA Computer Automation GmbH"']]
+  ['548' LAARS_HEATING_SYSTEMS_COMPANY ['548', '"Laars Heating Systems Company"']]
+  ['549' HITACHI_SYSTEMS_LTD ['549', '"Hitachi Systems, Ltd."']]
+  ['550' FUSHANAKE_ELECTRONIC_ENGINEERING_CO_LTD ['550', '"Fushan AKE Electronic Engineering Co., Ltd."']]
+  ['551' TOSHIBA_INTERNATIONAL_CORPORATION ['551', '"Toshiba International Corporation"']]
+  ['552' STARMAN_SYSTEMSLLC ['552', '"Starman Systems, LLC"']]
+  ['553' SAMSUNG_TECHWIN_CO_LTD ['553', '"Samsung Techwin Co., Ltd."']]
+  ['554' ISAS_INTEGRATED_SWITCHGEARAND_SYSTEMSPL ['554', '"ISAS-Integrated Switchgear and Systems P/L"']]
+  ['556' OBVIUS ['556', '"Obvius"']]
+  ['557' MAREK_GUZIK ['557', '"Marek Guzik"']]
+  ['558' VORTEK_INSTRUMENTSLLC ['558', '"Vortek Instruments, LLC"']]
+  ['559' UNIVERSAL_LIGHTING_TECHNOLOGIES ['559', '"Universal Lighting Technologies"']]
+  ['560' MYERS_POWER_PRODUCTS_INC ['560', '"Myers Power Products, Inc."']]
+  ['561' VECTOR_CONTROLS_GMBH ['561', '"Vector Controls GmbH"']]
+  ['562' CRESTRON_ELECTRONICS_INC ['562', '"Crestron Electronics, Inc."']]
+  ['563' AE_CONTROLS_LIMITED ['563', '"A&E Controls Limited"']]
+  ['564' PROJEKTOMONTAZAAD ['564', '"Projektomontaza A.D."']]
+  ['565' FREEAIRE_REFRIGERATION ['565', '"Freeaire Refrigeration"']]
+  ['566' AQUA_COOLER_PTY_LIMITED ['566', '"Aqua Cooler Pty Limited"']]
+  ['567' BASIC_CONTROLS ['567', '"Basic Controls"']]
+  ['568' GE_MEASUREMENTAND_CONTROL_SOLUTIONS_ADVANCED_SENSORS ['568', '"GE Measurement and Control Solutions Advanced Sensors"']]
+  ['569' EQUAL_NETWORKS ['569', '"EQUAL Networks"']]
+  ['570' MILLENNIAL_NET ['570', '"Millennial Net"']]
+  ['571' APLI_LTD ['571', '"APLI Ltd"']]
+  ['572' ELECTRO_INDUSTRIES_GAUGE_TECH ['572', '"Electro Industries/GaugeTech"']]
+  ['573' SANG_MYUNG_UNIVERSITY ['573', '"SangMyung University"']]
+  ['574' COPPERTREE_ANALYTICS_INC ['574', '"Coppertree Analytics, Inc."']]
+  ['575' CORE_NETIX_GMBH ['575', '"CoreNetiX GmbH"']]
+  ['576' ACUTHERM ['576', '"Acutherm"']]
+  ['577' DR_RIEDEL_AUTOMATISIERUNGSTECHNIK_GMBH ['577', '"Dr. Riedel Automatisierungstechnik GmbH"']]
+  ['578' SHINA_SYSTEM_CO_LTD ['578', '"Shina System Co., Ltd"']]
+  ['579' IQAPERTUS ['579', '"Iqapertus"']]
+  ['580' PSE_TECHNOLOGY ['580', '"PSE Technology"']]
+  ['581' BA_SYSTEMS ['581', '"BA Systems"']]
+  ['582' BTICINO ['582', '"BTICINO"']]
+  ['583' MONICO_INC ['583', '"Monico, Inc."']]
+  ['584' I_CUE ['584', '"iCue"']]
+  ['585' TEKMAR_CONTROL_SYSTEMS_LTD ['585', '"tekmar Control Systems Ltd."']]
+  ['586' CONTROL_TECHNOLOGY_CORPORATION ['586', '"Control Technology Corporation"']]
+  ['587' GFAE_GMBH ['587', '"GFAE GmbH"']]
+  ['588' BE_KA_SOFTWARE_GMBH ['588', '"BeKa Software GmbH"']]
+  ['589' ISOIL_INDUSTRIA_SPA ['589', '"Isoil Industria SpA"']]
+  ['590' HOME_SYSTEMS_CONSULTING_SPA ['590', '"Home Systems Consulting SpA"']]
+  ['591' SOCOMEC ['591', '"Socomec"']]
+  ['592' EVEREX_COMMUNICATIONS_INC ['592', '"Everex Communications, Inc."']]
+  ['593' CEIEC_ELECTRIC_TECHNOLOGY ['593', '"Ceiec Electric Technology"']]
+  ['594' ATRILA_GMBH ['594', '"Atrila GmbH"']]
+  ['595' WING_TECHS ['595', '"WingTechs"']]
+  ['596' SHENZHEN_MEK_INTELLISYS_PTE_LTD ['596', '"Shenzhen Mek Intellisys Pte Ltd."']]
+  ['597' NESTFIELD_CO_LTD ['597', '"Nestfield Co., Ltd."']]
+  ['598' SWISSPHONE_TELECOMAG ['598', '"Swissphone Telecom AG"']]
+  ['599' PNTECHJSC ['599', '"PNTECH JSC"']]
+  ['600' HORNERAPGLLC ['600', '"Horner APG, LLC"']]
+  ['601' PVI_INDUSTRIESLLC ['601', '"PVI Industries, LLC"']]
+  ['602' ELACOMPIL ['602', '"Ela-compil"']]
+  ['603' PEGASUS_AUTOMATION_INTERNATIONALLLC ['603', '"Pegasus Automation International LLC"']]
+  ['604' WIGHT_ELECTRONIC_SERVICES_LTD ['604', '"Wight Electronic Services Ltd."']]
+  ['605' MARCOM ['605', '"Marcom"']]
+  ['606' EXHAUSTOAS ['606', '"Exhausto A/S"']]
+  ['607' DWYER_INSTRUMENTS_INC ['607', '"Dwyer Instruments, Inc."']]
+  ['608' LINK_GMBH ['608', '"Link GmbH"']]
+  ['609' OPPERMANN_REGELGERATE_GMBH ['609', '"Oppermann Regelgerate GmbH"']]
+  ['610' NU_AIRE_INC ['610', '"NuAire, Inc."']]
+  ['611' NORTEC_HUMIDITY_INC ['611', '"Nortec Humidity, Inc."']]
+  ['612' BIGWOOD_SYSTEMS_INC ['612', '"Bigwood Systems, Inc."']]
+  ['613' ENBALA_POWER_NETWORKS ['613', '"Enbala Power Networks"']]
+  ['614' INTER_ENERGY_CO_LTD ['614', '"Inter Energy Co., Ltd."']]
+  ['615' ETC ['615', '"ETC"']]
+  ['616' COMELECSARL ['616', '"COMELEC S.A.R.L"']]
+  ['617' PYTHIA_TECHNOLOGIES ['617', '"Pythia Technologies"']]
+  ['618' TREND_POINT_SYSTEMS_INC ['618', '"TrendPoint Systems, Inc."']]
+  ['619' AWEX ['619', '"AWEX"']]
+  ['620' EUREVIA ['620', '"Eurevia"']]
+  ['621' KONGSBERGELONAS ['621', '"Kongsberg E-lon AS"']]
+  ['622' FLAKT_WOODS ['622', '"FlaktWoods"']]
+  ['623' EE_ELEKTRONIKGESMBH ['623', '"E + E Elektronik GES M.B.H."']]
+  ['624' ARC_INFORMATIQUE ['624', '"ARC Informatique"']]
+  ['625' SKIDATAAG ['625', '"SKIDATA AG"']]
+  ['626' WSW_SOLUTIONS ['626', '"WSW Solutions"']]
+  ['627' TREFON_ELECTRONIC_GMBH ['627', '"Trefon Electronic GmbH"']]
+  ['628' DONGSEO_SYSTEM ['628', '"Dongseo System"']]
+  ['629' KANONTEC_INTELLIGENCE_TECHNOLOGY_CO_LTD ['629', '"Kanontec Intelligence Technology Co., Ltd."']]
+  ['630' EVCO_SPA ['630', '"EVCO S.p.A."']]
+  ['631' ACCUENERGY_CANADA_INC ['631', '"Accuenergy (Canada) Inc."']]
+  ['632' SOFTDEL ['632', '"SoftDEL"']]
+  ['633' ORION_ENERGY_SYSTEMS_INC ['633', '"Orion Energy Systems, Inc."']]
+  ['634' ROBOTICSWARE ['634', '"Roboticsware"']]
+  ['635' DOMIQ_SPZOO ['635', '"DOMIQ Sp. z o.o."']]
+  ['636' SOLIDYNE ['636', '"Solidyne"']]
+  ['637' ELECSYS_CORPORATION ['637', '"Elecsys Corporation"']]
+  ['638' CONDITIONAIRE_INTERNATIONAL_PTY_LIMITED ['638', '"Conditionaire International Pty. Limited"']]
+  ['639' QUEBEC_INC ['639', '"Quebec, Inc."']]
+  ['640' HOMERUN_HOLDINGS ['640', '"Homerun Holdings"']]
+  ['641' MURATA_AMERICAS ['641', '"Murata Americas"']]
+  ['642' COMPTEK ['642', '"Comptek"']]
+  ['643' WESTCO_SYSTEMS_INC ['643', '"Westco Systems, Inc."']]
+  ['644' ADVANCIS_SOFTWARE_SERVICES_GMBH ['644', '"Advancis Software & Services GmbH"']]
+  ['645' INTERGRIDLLC ['645', '"Intergrid, LLC"']]
+  ['646' MARKERR_CONTROLS_INC ['646', '"Markerr Controls, Inc."']]
+  ['647' TOSHIBA_ELEVATORAND_BUILDING_SYSTEMS_CORPORATION ['647', '"Toshiba Elevator and Building Systems Corporation"']]
+  ['648' SPECTRUM_CONTROLS_INC ['648', '"Spectrum Controls, Inc."']]
+  ['649' MKSERVICE ['649', '"Mkservice"']]
+  ['650' FOX_THERMAL_INSTRUMENTS ['650', '"Fox Thermal Instruments"']]
+  ['651' SYXTH_SENSE_LTD ['651', '"SyxthSense Ltd"']]
+  ['652' DUHA_SYSTEMSRO ['652', '"DUHA System S R.O."']]
+  ['653' NIBE ['653', '"NIBE"']]
+  ['654' MELINK_CORPORATION ['654', '"Melink Corporation"']]
+  ['655' FRITZ_HABER_INSTITUT ['655', '"Fritz-Haber-Institut"']]
+  ['656' MTU_ONSITE_ENERGY_GMBH_GAS_POWER_SYSTEMS ['656', '"MTU Onsite Energy GmbH, Gas Power Systems"']]
+  ['657' OMEGA_ENGINEERING_INC ['657', '"Omega Engineering, Inc."']]
+  ['658' AVELON ['658', '"Avelon"']]
+  ['659' YWIRE_TECHNOLOGIES_INC ['659', '"Ywire Technologies, Inc."']]
+  ['660' MR_ENGINEERING_CO_LTD ['660', '"M.R. Engineering Co., Ltd."']]
+  ['661' LOCHINVARLLC ['661', '"Lochinvar, LLC"']]
+  ['662' SONTAY_LIMITED ['662', '"Sontay Limited"']]
+  ['663' GRUPA_SLAWOMIR_CHELMINSKI ['663', '"GRUPA Slawomir Chelminski"']]
+  ['664' ARCH_METER_CORPORATION ['664', '"Arch Meter Corporation"']]
+  ['665' SENVA_INC ['665', '"Senva, Inc."']]
+  ['667' FM_TEC ['667', '"FM-Tec"']]
+  ['668' SYSTEMS_SPECIALISTS_INC ['668', '"Systems Specialists, Inc."']]
+  ['669' SENSE_AIR ['669', '"SenseAir"']]
+  ['670' AB_INDUSTRIE_TECHNIK_SRL ['670', '"AB IndustrieTechnik Srl"']]
+  ['671' CORTLAND_RESEARCHLLC ['671', '"Cortland Research, LLC"']]
+  ['672' MEDIA_VIEW ['672', '"MediaView"']]
+  ['673' VDA_ELETTRONICA ['673', '"VDA Elettronica"']]
+  ['674' CSS_INC ['674', '"CSS, Inc."']]
+  ['675' TEK_AIR_SYSTEMS_INC ['675', '"Tek-Air Systems, Inc."']]
+  ['676' ICDT ['676', '"ICDT"']]
+  ['677' THE_ARMSTRONG_MONITORING_CORPORATION ['677', '"The Armstrong Monitoring Corporation"']]
+  ['678' DIXELL_SRL ['678', '"DIXELL S.r.l"']]
+  ['679' LEAD_SYSTEM_INC ['679', '"Lead System, Inc."']]
+  ['680' ISM_EURO_CENTERSA ['680', '"ISM EuroCenter S.A."']]
+  ['681' TDIS ['681', '"TDIS"']]
+  ['682' TRADEFIDES ['682', '"Trade FIDES"']]
+  ['683' KNRR_GMBH_EMERSON_NETWORK_POWER ['683', '"Knürr GmbH (Emerson Network Power)"']]
+  ['684' RESOURCE_DATA_MANAGEMENT ['684', '"Resource Data Management"']]
+  ['685' ABIES_TECHNOLOGY_INC ['685', '"Abies Technology, Inc."']]
+  ['686' UAB_KOMFOVENT ['686', '"UAB Komfovent"']]
+  ['687' MIRAE_ELECTRICAL_MFG_CO_LTD ['687', '"MIRAE Electrical Mfg. Co., Ltd."']]
+  ['688' HUNTER_DOUGLAS_ARCHITECTURAL_PROJECTS_SCANDINAVIA_APS ['688', '"HunterDouglas Architectural Projects Scandinavia ApS"']]
+  ['689' RUNPAQ_GROUP_CO_LTD ['689', '"RUNPAQ Group Co., Ltd"']]
+  ['690' UNICARDSA ['690', '"Unicard SA"']]
+  ['691' IE_TECHNOLOGIES ['691', '"IE Technologies"']]
+  ['692' RUSKIN_MANUFACTURING ['692', '"Ruskin Manufacturing"']]
+  ['693' CALON_ASSOCIATES_LIMITED ['693', '"Calon Associates Limited"']]
+  ['694' CONTEC_CO_LTD ['694', '"Contec Co., Ltd."']]
+  ['695' IT_GMBH ['695', '"iT GmbH"']]
+  ['696' AUTANI_CORPORATION ['696', '"Autani Corporation"']]
+  ['697' CHRISTIAN_FORTIN ['697', '"Christian Fortin"']]
+  ['698' HDL ['698', '"HDL"']]
+  ['699' IPID_SPZOO_LIMITED ['699', '"IPID Sp. Z.O.O Limited"']]
+  ['700' FUJI_ELECTRIC_CO_LTD ['700', '"Fuji Electric Co., Ltd"']]
+  ['701' VIEW_INC ['701', '"View, Inc."']]
+  ['702' SAMSUNGS1_CORPORATION ['702', '"Samsung S1 Corporation"']]
+  ['703' NEW_LIFT ['703', '"New Lift"']]
+  ['704' VRT_SYSTEMS ['704', '"VRT Systems"']]
+  ['705' MOTION_CONTROL_ENGINEERING_INC ['705', '"Motion Control Engineering, Inc."']]
+  ['706' WEISS_KLIMATECHNIK_GMBH ['706', '"Weiss Klimatechnik GmbH"']]
+  ['707' ELKON ['707', '"Elkon"']]
+  ['708' ELIWELL_CONTROLS_SRL ['708', '"Eliwell Controls S.r.l."']]
+  ['709' JAPAN_COMPUTER_TECHNOS_CORP ['709', '"Japan Computer Technos Corp"']]
+  ['710' RATIONAL_NETWORKEHF ['710', '"Rational Network ehf"']]
+  ['711' MAGNUM_ENERGY_SOLUTIONSLLC ['711', '"Magnum Energy Solutions, LLC"']]
+  ['712' MEL_ROK ['712', '"MelRok"']]
+  ['713' VAE_GROUP ['713', '"VAE Group"']]
+  ['714' LGCNS ['714', '"LGCNS"']]
+  ['715' BERGHOF_AUTOMATIONSTECHNIK_GMBH ['715', '"Berghof Automationstechnik GmbH"']]
+  ['716' QUARK_COMMUNICATIONS_INC ['716', '"Quark Communications, Inc."']]
+  ['717' SONTEX ['717', '"Sontex"']]
+  ['718' MIVUNEAG ['718', '"mivune AG"']]
+  ['719' PANDUIT ['719', '"Panduit"']]
+  ['720' SMART_CONTROLSLLC ['720', '"Smart Controls, LLC"']]
+  ['721' COMPU_AIRE_INC ['721', '"Compu-Aire, Inc."']]
+  ['722' SIERRA ['722', '"Sierra"']]
+  ['723' PROTO_SENSE_TECHNOLOGIES ['723', '"ProtoSense Technologies"']]
+  ['724' ELTRAC_TECHNOLOGIES_PVT_LTD ['724', '"Eltrac Technologies Pvt Ltd"']]
+  ['725' BEKTAS_INVISIBLE_CONTROLS_GMBH ['725', '"Bektas Invisible Controls GmbH"']]
+  ['726' ENTELEC ['726', '"Entelec"']]
+  ['727' INNEXIV ['727', '"INNEXIV"']]
+  ['728' COVENANT ['728', '"Covenant"']]
+  ['729' DAVITORAB ['729', '"Davitor AB"']]
+  ['730' TONG_FANG_TECHNOVATOR ['730', '"TongFang Technovator"']]
+  ['731' BUILDING_ROBOTICS_INC ['731', '"Building Robotics, Inc."']]
+  ['732' HSSMSRUG ['732', '"HSS-MSR UG"']]
+  ['733' FRAM_TACKLLC ['733', '"FramTack LLC"']]
+  ['734' BL_ACOUSTICS_LTD ['734', '"B. L. Acoustics, Ltd."']]
+  ['735' TRAXXON_ROCK_DRILLS_LTD ['735', '"Traxxon Rock Drills, Ltd"']]
+  ['736' FRANKE ['736', '"Franke"']]
+  ['737' WURM_GMBH_CO ['737', '"Wurm GmbH & Co"']]
+  ['738' ADDENERGIE ['738', '"AddENERGIE"']]
+  ['739' MIRLE_AUTOMATION_CORPORATION ['739', '"Mirle Automation Corporation"']]
+  ['740' IBIS_NETWORKS ['740', '"Ibis Networks"']]
+  ['741' IDKART_ASRO ['741', '"ID-KARTA s.r.o."']]
+  ['742' ANAREN_INC ['742', '"Anaren, Inc."']]
+  ['743' SPAN_INCORPORATED ['743', '"Span, Incorporated"']]
+  ['744' BOSCH_THERMOTECHNOLOGY_CORP ['744', '"Bosch Thermotechnology Corp"']]
+  ['745' DRC_TECHNOLOGYSA ['745', '"DRC Technology S.A."']]
+  ['746' SHANGHAI_ENERGY_BUILDING_TECHNOLOGY_CO_LTD ['746', '"Shanghai Energy Building Technology Co, Ltd"']]
+  ['747' FRAPORTAG ['747', '"Fraport AG"']]
+  ['748' FLOWGROUP ['748', '"Flowgroup"']]
+  ['749' SKYTRON_ENERGY_GMBH ['749', '"Skytron Energy, GmbH"']]
+  ['750' ALTEL_WICHA_GOLDA_SPJ ['750', '"ALTEL Wicha, Golda Sp. J."']]
+  ['751' DRUPAL ['751', '"Drupal"']]
+  ['752' AXIOMATIC_TECHNOLOGY_LTD ['752', '"Axiomatic Technology, Ltd"']]
+  ['753' BOHNKE_PARTNER ['753', '"Bohnke + Partner"']]
+  ['754' FUNCTION1 ['754', '"Function1"']]
+  ['755' OPTERGY_PTY_LTD ['755', '"Optergy Pty, Ltd"']]
+  ['756' LSI_VIRTICUS ['756', '"LSI Virticus"']]
+  ['757' KONZEPTPARK_GMBH ['757', '"Konzeptpark GmbH"']]
+  ['758' NX_LIGHTING_CONTROLS ['758', '"NX Lighting Controls"']]
+  ['759' E_CURV_INC ['759', '"eCurv, Inc."']]
+  ['760' AGNOSYS_GMBH ['760', '"Agnosys GmbH"']]
+  ['761' SHANGHAI_SUNFULL_AUTOMATION_COLTD ['761', '"Shanghai Sunfull Automation Co., LTD"']]
+  ['762' KURZ_INSTRUMENTS_INC ['762', '"Kurz Instruments, Inc."']]
+  ['763' CIAS_ELETTRONICA_SRL ['763', '"Cias Elettronica S.r.l."']]
+  ['764' MULTIAQUA_INC ['764', '"Multiaqua, Inc."']]
+  ['765' BLUE_BOX ['765', '"BlueBox"']]
+  ['766' SENSIDYNE ['766', '"Sensidyne"']]
+  ['767' VIESSMANN_ELEKTRONIK_GMBH ['767', '"Viessmann Elektronik GmbH"']]
+  ['768' AD_FWEBCOMSRL ['768', '"ADFweb.com srl"']]
+  ['769' GAYLORD_INDUSTRIES ['769', '"Gaylord Industries"']]
+  ['770' MAJUR_LTD ['770', '"Majur Ltd."']]
+  ['771' SHANGHAI_HUILIN_TECHNOLOGY_CO_LTD ['771', '"Shanghai Huilin Technology Co., Ltd."']]
+  ['772' EXOTRONIC ['772', '"Exotronic"']]
+  ['773' SAFECONTRO_LSRO ['773', '"SAFECONTROL s.r.o."']]
+  ['774' AMATIS ['774', '"Amatis"']]
+  ['775' UNIVERSAL_ELECTRIC_CORPORATION ['775', '"Universal Electric Corporation"']]
+  ['776' IBA_CNET ['776', '"iBACnet"']]
+  ['778' SMARTRISE_ENGINEERING_INC ['778', '"Smartrise Engineering, Inc."']]
+  ['779' MIRATRON_INC ['779', '"Miratron, Inc."']]
+  ['780' SMART_EDGE ['780', '"SmartEdge"']]
+  ['781' MITSUBISHI_ELECTRIC_AUSTRALIA_PTY_LTD ['781', '"Mitsubishi Electric Australia Pty Ltd"']]
+  ['782' TRIANGLE_RESEARCH_INTERNATIONAL_PTD_LTD ['782', '"Triangle Research International Ptd Ltd"']]
+  ['783' PRODUAL_OY ['783', '"Produal Oy"']]
+  ['784' MILESTONE_SYSTEMSAS ['784', '"Milestone Systems A/S"']]
+  ['785' TRUSTBRIDGE ['785', '"Trustbridge"']]
+  ['786' FEEDBACK_SOLUTIONS ['786', '"Feedback Solutions"']]
+  ['787' IES ['787', '"IES"']]
+  ['788' ABB_POWER_PROTECTIONSA ['788', '"ABB Power Protection SA"']]
+  ['789' RIPTIDEIO ['789', '"Riptide IO"']]
+  ['790' MESSERSCHMITT_SYSTEMSAG ['790', '"Messerschmitt Systems AG"']]
+  ['791' DEZEM_ENERGY_CONTROLLING ['791', '"Dezem Energy Controlling"']]
+  ['792' MECHO_SYSTEMS ['792', '"MechoSystems"']]
+  ['793' EVON_GMBH ['793', '"evon GmbH"']]
+  ['794' CS_LAB_GMBH ['794', '"CS Lab GmbH"']]
+  ['795' N_0_ENTERPRISES_INC ['795', '"8760 Enterprises, Inc."']]
+  ['796' TOUCHE_CONTROLS ['796', '"Touche Controls"']]
+  ['797' ONTROL_TEKNIK_MALZEME_SANVE_TICAS ['797', '"Ontrol Teknik Malzeme San. ve Tic. A.S."']]
+  ['798' UNI_CONTROL_SYSTEM_SP_ZOO ['798', '"Uni Control System Sp. Z o.o."']]
+  ['799' WEIHAI_PLOUMETER_CO_LTD ['799', '"Weihai Ploumeter Co., Ltd"']]
+  ['800' ELCOM_INTERNATIONAL_PVT_LTD ['800', '"Elcom International Pvt. Ltd"']]
+  ['801' SIGNIFY ['801', '"Signify"']]
+  ['802' AUTOMATION_DIRECT ['802', '"AutomationDirect"']]
+  ['803' PARAGON_ROBOTICS ['803', '"Paragon Robotics"']]
+  ['804' SMT_SYSTEM_MODULES_TECHNOLOGYAG ['804', '"SMT System & Modules Technology AG"']]
+  ['805' RADIX_IOTLLC ['805', '"Radix IoT LLC"']]
+  ['806' CMR_CONTROLS_LTD ['806', '"CMR Controls Ltd"']]
+  ['807' INNOVARI_INC ['807', '"Innovari, Inc."']]
+  ['808' ABB_CONTROL_PRODUCTS ['808', '"ABB Control Products"']]
+  ['809' GESELLSCHAFTFUR_GEBUDEAUTOMATIONMBH ['809', '"Gesellschaft fur Gebäudeautomation mbH"']]
+  ['810' RODI_SYSTEMS_CORP ['810', '"RODI Systems Corp."']]
+  ['811' NEXTEK_POWER_SYSTEMS ['811', '"Nextek Power Systems"']]
+  ['812' CREATIVE_LIGHTING ['812', '"Creative Lighting"']]
+  ['813' WATER_FURNACE_INTERNATIONAL ['813', '"WaterFurnace International"']]
+  ['814' MERCURY_SECURITY ['814', '"Mercury Security"']]
+  ['815' HISENSE_SHANDONG_AIR_CONDITIONING_CO_LTD ['815', '"Hisense (Shandong) Air-Conditioning Co., Ltd."']]
+  ['816' LAYERED_SOLUTIONS_INC ['816', '"Layered Solutions, Inc."']]
+  ['817' LEEGOOD_AUTOMATIC_SYSTEM_INC ['817', '"Leegood Automatic System, Inc."']]
+  ['818' SHANGHAI_RESTAR_TECHNOLOGY_CO_LTD ['818', '"Shanghai Restar Technology Co., Ltd."']]
+  ['819' REIMANN_INGENIEURBRO ['819', '"Reimann Ingenieurbüro"']]
+  ['820' LYN_TEC ['820', '"LynTec"']]
+  ['821' HTP ['821', '"HTP"']]
+  ['822' ELKOR_TECHNOLOGIES_INC ['822', '"Elkor Technologies, Inc."']]
+  ['823' BENTROL_PTY_LTD ['823', '"Bentrol Pty Ltd"']]
+  ['824' TEAM_CONTROL_OY ['824', '"Team-Control Oy"']]
+  ['825' NEXT_DEVICELLC ['825', '"NextDevice, LLC"']]
+  ['826' ISMACONTROLLI_SPA ['826', '"iSMA CONTROLLI S.p.a."']]
+  ['827' KINGI_ELECTRONICS_CO_LTD ['827', '"King I Electronics Co., Ltd"']]
+  ['828' SAMDAV ['828', '"SAMDAV"']]
+  ['829' NEXT_GEN_INDUSTRIES_PVT_LTD ['829', '"Next Gen Industries Pvt. Ltd."']]
+  ['830' ENTICLLC ['830', '"Entic LLC"']]
+  ['831' ETAP ['831', '"ETAP"']]
+  ['832' MORALLE_ELECTRONICS_LIMITED ['832', '"Moralle Electronics Limited"']]
+  ['833' LEICOMAG ['833', '"Leicom AG"']]
+  ['834' WATTS_REGULATOR_COMPANY ['834', '"Watts Regulator Company"']]
+  ['835' SC_ORBTRONICSSRL ['835', '"S.C. Orbtronics S.R.L."']]
+  ['836' GAUSSAN_TECHNOLOGIES ['836', '"Gaussan Technologies"']]
+  ['837' WE_BFACTORY_GMBH ['837', '"WEBfactory GmbH"']]
+  ['838' OCEAN_CONTROLS ['838', '"Ocean Controls"']]
+  ['839' MESSANA_AIR_RAY_CONDITIONINGSRL ['839', '"Messana Air-Ray Conditioning s.r.l."']]
+  ['840' HANGZHOUBATOWN_TECHNOLOGY_CO_LTD ['840', '"Hangzhou BATOWN Technology Co. Ltd."']]
+  ['841' REASONABLE_CONTROLS ['841', '"Reasonable Controls"']]
+  ['842' SERVISYS_INC ['842', '"Servisys, Inc."']]
+  ['843' HALSTRUPWALCHER_GMBH ['843', '"halstrup-walcher GmbH"']]
+  ['844' SWG_AUTOMATION_FUZHOU_LIMITED ['844', '"SWG Automation Fuzhou Limited"']]
+  ['845' KSB_AKTIENGESELLSCHAFT ['845', '"KSB Aktiengesellschaft"']]
+  ['846' HYBRYD_SPZOO ['846', '"Hybryd Sp. z o.o."']]
+  ['847' HELVATRONAG ['847', '"Helvatron AG"']]
+  ['848' ODERON_SPZOO ['848', '"Oderon Sp. Z.O.O."']]
+  ['849' MIKOLAB ['849', '"mikolab"']]
+  ['850' EXODRAFT ['850', '"Exodraft"']]
+  ['851' HOCHHUTH_GMBH ['851', '"Hochhuth GmbH"']]
+  ['852' INTEGRATED_SYSTEM_TECHNOLOGIES_LTD ['852', '"Integrated System Technologies Ltd."']]
+  ['853' SHANGHAI_CELLCONS_CONTROLS_CO_LTD ['853', '"Shanghai Cellcons Controls Co., Ltd"']]
+  ['854' EMME_CONTROLSLLC ['854', '"Emme Controls, LLC"']]
+  ['855' FIELD_DIAGNOSTIC_SERVICES_INC ['855', '"Field Diagnostic Services, Inc."']]
+  ['856' GES_TEKNIKAS ['856', '"Ges Teknik A.S."']]
+  ['857' GLOBAL_POWER_PRODUCTS_INC ['857', '"Global Power Products, Inc."']]
+  ['858' OPTIONNV ['858', '"Option NV"']]
+  ['859' BV_CONTROLAG ['859', '"BV-Control AG"']]
+  ['860' SIGREN_ENGINEERINGAG ['860', '"Sigren Engineering AG"']]
+  ['861' SHANGHAI_JALTONE_TECHNOLOGY_CO_LTD ['861', '"Shanghai Jaltone Technology Co., Ltd."']]
+  ['862' MAX_LINE_SOLUTIONS_LTD ['862', '"MaxLine Solutions Ltd"']]
+  ['863' KRON_INSTRUMENTOS_ELTRICOS_LTDA ['863', '"Kron Instrumentos Elétricos Ltda"']]
+  ['864' THERMO_MATRIX ['864', '"Thermo Matrix"']]
+  ['865' INFINITE_AUTOMATION_SYSTEMS_INC ['865', '"Infinite Automation Systems, Inc."']]
+  ['866' VANTAGE ['866', '"Vantage"']]
+  ['867' ELECON_MEASUREMENTS_PVT_LTD ['867', '"Elecon Measurements Pvt Ltd"']]
+  ['868' TBA ['868', '"TBA"']]
+  ['869' CARNES_COMPANY ['869', '"Carnes Company"']]
+  ['870' HARMAN_PROFESSIONAL ['870', '"Harman Professional"']]
+  ['871' NENUTEC_ASIA_PACIFIC_PTE_LTD ['871', '"Nenutec Asia Pacific Pte Ltd"']]
+  ['872' GIANV ['872', '"Gia NV"']]
+  ['873' KEPWARE_TEHNOLOGIES ['873', '"Kepware Tehnologies"']]
+  ['874' TEMPERATURE_ELECTRONICS_LTD ['874', '"Temperature Electronics Ltd"']]
+  ['875' PACKET_POWER ['875', '"Packet Power"']]
+  ['876' PROJECT_HAYSTACK_CORPORATION ['876', '"Project Haystack Corporation"']]
+  ['877' DEOS_CONTROLS_AMERICAS_INC ['877', '"DEOS Controls Americas Inc."']]
+  ['878' SENSEWARE_INC ['878', '"Senseware Inc"']]
+  ['879' MST_SYSTEMTECHNIKAG ['879', '"MST Systemtechnik AG"']]
+  ['880' LONIX_LTD ['880', '"Lonix Ltd"']]
+  ['881' GOSSEN_METRAWATT_GMBH ['881', '"Gossen Metrawatt GmbH"']]
+  ['882' AVIOSYS_INTERNATIONAL_INC ['882', '"Aviosys International Inc."']]
+  ['883' EFFICIENT_BUILDING_AUTOMATION_CORP ['883', '"Efficient Building Automation Corp."']]
+  ['884' ACCUTRON_INSTRUMENTS_INC ['884', '"Accutron Instruments Inc."']]
+  ['885' VERMONT_ENERGY_CONTROL_SYSTEMSLLC ['885', '"Vermont Energy Control Systems LLC"']]
+  ['886' DCC_DYNAMICS ['886', '"DCC Dynamics"']]
+  ['887' BEG_BRCK_ELECTRONIC_GMBH ['887', '"B.E.G. Brück Electronic GmbH"']]
+  ['889' NGBS_HUNGARY_LTD ['889', '"NGBS Hungary Ltd."']]
+  ['890' ILLUM_TECHNOLOGYLLC ['890', '"ILLUM Technology, LLC"']]
+  ['891' DELTA_CONTROLS_GERMANY_LIMITED ['891', '"Delta Controls Germany Limited"']]
+  ['892' ST_SERVICE_TECHNIQUESA ['892', '"S+T Service & Technique S.A."']]
+  ['893' SIMPLE_SOFT ['893', '"SimpleSoft"']]
+  ['894' ALTAIR_ENGINEERING ['894', '"Altair Engineering"']]
+  ['895' EZEN_SOLUTION_INC ['895', '"EZEN Solution Inc."']]
+  ['896' FUJITEC_CO_LTD ['896', '"Fujitec Co. Ltd."']]
+  ['897' TERRALUX ['897', '"Terralux"']]
+  ['898' ANNICOM ['898', '"Annicom"']]
+  ['899' BIHL_WIEDEMANN_GMBH ['899', '"Bihl+Wiedemann GmbH"']]
+  ['900' DRAPER_INC ['900', '"Draper, Inc."']]
+  ['901' SCHCO_INTERNATIONALKG ['901', '"Schüco International KG"']]
+  ['902' OTIS_ELEVATOR_COMPANY ['902', '"Otis Elevator Company"']]
+  ['903' FIDELIX_OY ['903', '"Fidelix Oy"']]
+  ['904' RAM_GMBH_MESSUND_REGELTECHNIK ['904', '"RAM GmbH Mess- und Regeltechnik"']]
+  ['905' WEMS ['905', '"WEMS"']]
+  ['906' RAVEL_ELECTRONICS_PVT_LTD ['906', '"Ravel Electronics Pvt Ltd"']]
+  ['907' OMNI_MAGNI ['907', '"OmniMagni"']]
+  ['908' ECHELON ['908', '"Echelon"']]
+  ['909' INTELLIMETER_CANADA_INC ['909', '"Intellimeter Canada, Inc."']]
+  ['910' BITHOUSE_OY ['910', '"Bithouse Oy"']]
+  ['912' BUILD_PULSE ['912', '"BuildPulse"']]
+  ['913' SHENZHEN1000_BUILDING_AUTOMATION_CO_LTD ['913', '"Shenzhen 1000 Building Automation Co. Ltd"']]
+  ['914' AED_ENGINEERING_GMBH ['914', '"AED Engineering GmbH"']]
+  ['915' GNTNER_GMBH_COKG ['915', '"Güntner GmbH & Co. KG"']]
+  ['916' KN_XLOGIC ['916', '"KNXlogic"']]
+  ['917' CIM_ENVIRONMENTAL_GROUP ['917', '"CIM Environmental Group"']]
+  ['918' FLOW_CONTROL ['918', '"Flow Control"']]
+  ['919' LUMEN_CACHE_INC ['919', '"Lumen Cache, Inc."']]
+  ['920' ECOSYSTEM ['920', '"Ecosystem"']]
+  ['921' POTTER_ELECTRIC_SIGNAL_COMPANYLLC ['921', '"Potter Electric Signal Company, LLC"']]
+  ['922' TYCO_FIRE_SECURITY_SPA ['922', '"Tyco Fire & Security S.p.A."']]
+  ['923' WATANABE_ELECTRIC_INDUSTRY_CO_LTD ['923', '"Watanabe Electric Industry Co., Ltd."']]
+  ['924' CAUSAM_ENERGY ['924', '"Causam Energy"']]
+  ['925' WTECAG ['925', '"W-tec AG"']]
+  ['926' IMI_HYDRONIC_ENGINEERING_INTERNATIONALSA ['926', '"IMI Hydronic Engineering International SA"']]
+  ['927' ARIGO_SOFTWARE ['927', '"ARIGO Software"']]
+  ['928' MSA_SAFETY1 ['928', '"MSA Safety"']]
+  ['929' SMART_SOLUCOES_LTDAMERCATO ['929', '"Smart Solucoes Ltda – MERCATO"']]
+  ['930' PIATRA_ENGINEERING ['930', '"PIATRA Engineering"']]
+  ['931' ODIN_AUTOMATION_SYSTEMSLLC ['931', '"ODIN Automation Systems, LLC"']]
+  ['932' BELPARTSNV ['932', '"Belparts NV"']]
+  ['933' UABSALDA ['933', '"UAB, SALDA"']]
+  ['934' ALREIT_REGELTECHNIK_GMBH ['934', '"Alre-IT Regeltechnik GmbH"']]
+  ['935' INGENIEURBROH_LERTES_GMBH_COKG ['935', '"Ingenieurbüro H. Lertes GmbH & Co. KG"']]
+  ['936' BREATHING_BUILDINGS ['936', '"Breathing Buildings"']]
+  ['937' EWONSA ['937', '"eWON SA"']]
+  ['938' CAV_UFF_GIACOMO_CIMBERIO_SPA ['938', '"Cav. Uff. Giacomo Cimberio S.p.A"']]
+  ['939' PKE_ELECTRONICSAG ['939', '"PKE Electronics AG"']]
+  ['940' ALLEN ['940', '"Allen"']]
+  ['941' KASTLE_SYSTEMS ['941', '"Kastle Systems"']]
+  ['942' LOGICAL_ELECTRO_MECHANICALEM_SYSTEMS_INC ['942', '"Logical Electro-Mechanical (EM) Systems, Inc."']]
+  ['943' PP_KINETICS_INSTRUMENTSLLC ['943', '"ppKinetics Instruments, LLC"']]
+  ['944' CATHEXIS_TECHNOLOGIES ['944', '"Cathexis Technologies"']]
+  ['945' SYLOPSP_ZOOSPK ['945', '"Sylop sp. Z o.o. sp.k"']]
+  ['946' BRAUNS_CONTROL_GMBH ['946', '"Brauns Control GmbH"']]
+  ['947' OMRONSOCIALSOLUTIONSCOLTD ['947', '"OMRON SOCIAL SOLUTIONS CO., LTD."']]
+  ['948' WILDEBOER_BAUTEILE_GMBH ['948', '"Wildeboer Bauteile Gmbh"']]
+  ['949' SHANGHAI_BIENS_TECHNOLOGIES_LTD ['949', '"Shanghai Biens Technologies Ltd"']]
+  ['950' BEIJINGHZHY_TECHNOLOGY_CO_LTD ['950', '"Beijing HZHY Technology Co., Ltd"']]
+  ['951' BUILDING_CLOUDS ['951', '"Building Clouds"']]
+  ['952' THE_UNIVERSITYOF_SHEFFIELD_DEPARTMENTOF_ELECTRONICAND_ELECTRICAL_ENGINEERING ['952', '"The University of Sheffield-Department of Electronic and Electrical Engineering"']]
+  ['953' FABTRONICS_AUSTRALIA_PTY_LTD ['953', '"Fabtronics Australia Pty Ltd"']]
+  ['954' SLAT ['954', '"SLAT"']]
+  ['955' SOFTWARE_MOTOR_CORPORATION ['955', '"Software Motor Corporation"']]
+  ['956' ARMSTRONG_INTERNATIONAL_INC ['956', '"Armstrong International Inc."']]
+  ['957' STERIL_AIRE_INC ['957', '"Steril-Aire, Inc."']]
+  ['958' INFINIQUE ['958', '"Infinique"']]
+  ['959' ARCOM ['959', '"Arcom"']]
+  ['960' ARGO_PERFORMANCE_LTD ['960', '"Argo Performance, Ltd"']]
+  ['961' DIALIGHT ['961', '"Dialight"']]
+  ['962' IDEAL_TECHNICAL_SOLUTIONS ['962', '"Ideal Technical Solutions"']]
+  ['963' NEUROBATAG ['963', '"Neurobat AG"']]
+  ['964' NEYER_SOFTWARE_CONSULTINGLLC ['964', '"Neyer Software Consulting LLC"']]
+  ['965' SCADA_TECHNOLOGY_DEVELOPMENT_CO_LTD ['965', '"SCADA Technology Development Co., Ltd."']]
+  ['966' DEMAND_LOGIC_LIMITED ['966', '"Demand Logic Limited"']]
+  ['967' GWA_GROUP_LIMITED ['967', '"GWA Group Limited"']]
+  ['968' OCCITALINE ['968', '"Occitaline"']]
+  ['969' NAO_DIGITAL_CO_LTD ['969', '"NAO Digital Co., Ltd."']]
+  ['970' SHENZHEN_CHANSLINK_NETWORK_TECHNOLOGY_CO_LTD ['970', '"Shenzhen Chanslink Network Technology Co., Ltd."']]
+  ['971' SAMSUNG_ELECTRONICS_CO_LTD ['971', '"Samsung Electronics Co., Ltd."']]
+  ['972' MESA_LABORATORIES_INC ['972', '"Mesa Laboratories, Inc."']]
+  ['973' FISCHER ['973', '"Fischer"']]
+  ['974' OP_SYS_SOLUTIONS_LTD ['974', '"OpSys Solutions Ltd."']]
+  ['975' ADVANCED_DEVICES_LIMITED ['975', '"Advanced Devices Limited"']]
+  ['976' CONDAIR ['976', '"Condair"']]
+  ['977' INELCOM_INGENIERIA_ELECTRONICA_COMERCIALSA ['977', '"INELCOM Ingenieria Electronica Comercial S.A."']]
+  ['978' GRID_POINT_INC ['978', '"GridPoint, Inc."']]
+  ['979' ADF_TECHNOLOGIES_SDN_BHD ['979', '"ADF Technologies Sdn Bhd"']]
+  ['980' EPM_INC ['980', '"EPM, Inc."']]
+  ['981' LIGHTING_CONTROLS_LTD ['981', '"Lighting Controls Ltd"']]
+  ['982' PERIX_CONTROLS_LTD ['982', '"Perix Controls Ltd."']]
+  ['983' AERCO_INTERNATIONAL_INC ['983', '"AERCO International, Inc."']]
+  ['984' KONE_INC ['984', '"KONE Inc."']]
+  ['985' ZIEHL_ABEGGSE ['985', '"Ziehl-Abegg SE"']]
+  ['986' ROBOTSA ['986', '"Robot, S.A."']]
+  ['987' OPTIGO_NETWORKS_INC ['987', '"Optigo Networks, Inc."']]
+  ['988' OPENMOTICSBVBA ['988', '"Openmotics BVBA"']]
+  ['989' METROPOLITAN_INDUSTRIES_INC ['989', '"Metropolitan Industries, Inc."']]
+  ['990' HUAWEI_TECHNOLOGIES_CO_LTD ['990', '"Huawei Technologies Co., Ltd."']]
+  ['991' DIGITAL_LUMENS_INC ['991', '"Digital Lumens, Inc."']]
+  ['992' VANTI ['992', '"Vanti"']]
+  ['993' CREE_LIGHTING ['993', '"Cree Lighting"']]
+  ['994' RICHMOND_HEIGHTSSDNBHD ['994', '"Richmond Heights SDN BHD"']]
+  ['995' PAYNE_SPARKMAN_LIGHTING_MANGEMENT ['995', '"Payne-Sparkman Lighting Mangement"']]
+  ['996' ASHCROFT ['996', '"Ashcroft"']]
+  ['997' JET_CONTROLS_CORP ['997', '"Jet Controls Corp"']]
+  ['998' ZUMTOBEL_LIGHTING_GMBH ['998', '"Zumtobel Lighting GmbH"']]
+  ['1000' EKON_GMBH ['1000', '"Ekon GmbH"']]
+  ['1001' MOLEX ['1001', '"Molex"']]
+  ['1002' MACO_LIGHTING_PTY_LTD ['1002', '"Maco Lighting Pty Ltd."']]
+  ['1003' AXECON_CORP ['1003', '"Axecon Corp."']]
+  ['1004' TENSORPLC ['1004', '"Tensor plc"']]
+  ['1005' KASEMAN_ENVIRONMENTAL_CONTROL_EQUIPMENT_SHANGHAI_LIMITED ['1005', '"Kaseman Environmental Control Equipment (Shanghai) Limited"']]
+  ['1006' AB_AXIS_INDUSTRIES ['1006', '"AB Axis Industries"']]
+  ['1007' NETIX_CONTROLS ['1007', '"Netix Controls"']]
+  ['1008' ELDRIDGE_PRODUCTS_INC ['1008', '"Eldridge Products, Inc."']]
+  ['1009' MICRONICS ['1009', '"Micronics"']]
+  ['1010' FORTECHO_SOLUTIONS_LTD ['1010', '"Fortecho Solutions Ltd"']]
+  ['1011' SELLERS_MANUFACTURING_COMPANY ['1011', '"Sellers Manufacturing Company"']]
+  ['1012' RITE_HITE_DOORS_INC ['1012', '"Rite-Hite Doors, Inc."']]
+  ['1013' VIOLET_DEFENSELLC ['1013', '"Violet Defense LLC"']]
+  ['1014' SIMNA ['1014', '"Simna"']]
+  ['1015' MULTINERGIE_BEST_INC ['1015', '"Multi-Énergie Best Inc."']]
+  ['1016' MEGA_SYSTEM_TECHNOLOGIES_INC ['1016', '"Mega System Technologies, Inc."']]
+  ['1017' RHEEM ['1017', '"Rheem"']]
+  ['1018' ING_PUNZENBERGERCOPADATA_GMBH ['1018', '"Ing. Punzenberger COPA-DATA GmbH"']]
+  ['1019' MEC_ELECTRONICS_GMBH ['1019', '"MEC Electronics GmbH"']]
+  ['1020' TACO_COMFORT_SOLUTIONS ['1020', '"Taco Comfort Solutions"']]
+  ['1021' ALEXANDER_MAIER_GMBH ['1021', '"Alexander Maier GmbH"']]
+  ['1022' ECORITHM_INC ['1022', '"Ecorithm, Inc."']]
+  ['1023' ACCURRO_LTD ['1023', '"Accurro Ltd"']]
+  ['1024' ROMTECK_AUSTRALIA_PTY_LTD ['1024', '"ROMTECK Australia Pty Ltd"']]
+  ['1025' SPLASH_MONITORING_LIMITED ['1025', '"Splash Monitoring Limited"']]
+  ['1026' LIGHT_APPLICATION ['1026', '"Light Application"']]
+  ['1027' LOGICAL_BUILDING_AUTOMATION ['1027', '"Logical Building Automation"']]
+  ['1028' EXILIGHT_OY ['1028', '"Exilight Oy"']]
+  ['1029' HAGER_ELECTROSAS ['1029', '"Hager Electro SAS"']]
+  ['1030' KLIF_COLTD ['1030', '"KLIF Co., LTD"']]
+  ['1031' HYGRO_MATIK ['1031', '"HygroMatik"']]
+  ['1032' DANIEL_MOUSSEAU_PROGRAMMATION_ELECTRONIQUE ['1032', '"Daniel Mousseau Programmation & Electronique"']]
+  ['1033' AERIONICS_INC ['1033', '"Aerionics Inc."']]
+  ['1034' MS_ELECTRONIQUE_LTEE ['1034', '"M2S Electronique Ltee"']]
+  ['1035' AUTOMATION_COMPONENTS_INC ['1035', '"Automation Components, Inc."']]
+  ['1036' NIOBRARA_RESEARCH_DEVELOPMENT_CORPORATION ['1036', '"Niobrara Research & Development Corporation"']]
+  ['1037' NETCOM_SICHERHEITSTECHNIK_GMBH ['1037', '"Netcom Sicherheitstechnik GmbH"']]
+  ['1038' LUMELSA ['1038', '"Lumel S.A."']]
+  ['1039' GREAT_PLAINS_INDUSTRIES_INC ['1039', '"Great Plains Industries, Inc."']]
+  ['1040' DOMOTICA_LABSSRL ['1040', '"Domotica Labs S.R.L"']]
+  ['1041' ENERGY_CLOUD_INC ['1041', '"Energy Cloud, Inc."']]
+  ['1042' VOMATEC ['1042', '"Vomatec"']]
+  ['1043' DEMMA_COMPANIES ['1043', '"Demma Companies"']]
+  ['1044' VALSENA ['1044', '"Valsena"']]
+  ['1045' COMSYS_BRTSCHAG ['1045', '"Comsys Bärtsch AG"']]
+  ['1046' B_GRID ['1046', '"bGrid"']]
+  ['1047' MDJ_SOFTWARE_PTY_LTD ['1047', '"MDJ Software Pty Ltd"']]
+  ['1048' DIMONOFF_INC ['1048', '"Dimonoff, Inc."']]
+  ['1049' EDOMO_SYSTEMS_GMBH ['1049', '"Edomo Systems, GmbH"']]
+  ['1050' EFFEKTIVLLC ['1050', '"Effektiv, LLC"']]
+  ['1051' STEAMO_VAP ['1051', '"SteamOVap"']]
+  ['1052' GRANDCENTRIX_GMBH ['1052', '"grandcentrix GmbH"']]
+  ['1053' WEINTEK_LABS_INC ['1053', '"Weintek Labs, Inc."']]
+  ['1054' INTEFOX_GMBH ['1054', '"Intefox GmbH"']]
+  ['1055' RADIUS_AUTOMATION_COMPANY ['1055', '"Radius22 Automation Company"']]
+  ['1056' RINGDALE_INC ['1056', '"Ringdale, Inc."']]
+  ['1057' IWAKI_AMERICA ['1057', '"Iwaki America"']]
+  ['1058' BRACTLET ['1058', '"Bractlet"']]
+  ['1059' STULZ_AIR_TECHNOLOGY_SYSTEMS_INC ['1059', '"STULZ Air Technology Systems, Inc."']]
+  ['1060' CLIMATE_READY_ENGINEERING_PTY_LTD ['1060', '"Climate Ready Engineering Pty Ltd"']]
+  ['1061' GENEA_ENERGY_PARTNERS ['1061', '"Genea Energy Partners"']]
+  ['1062' IO_TALL_CHILE ['1062', '"IoTall Chile"']]
+  ['1063' IKS_CO_LTD ['1063', '"IKS Co., Ltd."']]
+  ['1064' YODIWOAB ['1064', '"Yodiwo AB"']]
+  ['1065' TITA_NELECTRONIC_GMBH ['1065', '"TITAN electronic GmbH"']]
+  ['1066' IDEC_CORPORATION ['1066', '"IDEC Corporation"']]
+  ['1067' SIFRISL ['1067', '"SIFRI SL"']]
+  ['1068' THERMAL_GAS_SYSTEMS_INC ['1068', '"Thermal Gas Systems Inc."']]
+  ['1069' BUILDING_AUTOMATION_PRODUCTS_INC ['1069', '"Building Automation Products, Inc."']]
+  ['1070' ASSET_MAPPING ['1070', '"Asset Mapping"']]
+  ['1071' SMARTEH_COMPANY ['1071', '"Smarteh Company"']]
+  ['1072' DATAPOD_AUSTRALIA_PTY_LTD ['1072', '"Datapod (Australia) Pty Ltd."']]
+  ['1073' BUILDINGS_ALIVE_PTY_LTD ['1073', '"Buildings Alive Pty Ltd"']]
+  ['1074' DIGITAL_ELEKTRONIK ['1074', '"Digital Elektronik"']]
+  ['1075' TALENT_AUTOMAOE_TECNOLOGIA_LTDA ['1075', '"Talent Automação e Tecnologia Ltda"']]
+  ['1076' NORPOSH_LIMITED ['1076', '"Norposh Limited"']]
+  ['1077' MERKUR_FUNKSYSTEMEAG ['1077', '"Merkur Funksysteme AG"']]
+  ['1078' FASTERC_ZSPOL_SRO ['1078', '"Faster CZ spol. S.r.o"']]
+  ['1079' ECO_ADAPT ['1079', '"Eco-Adapt"']]
+  ['1080' ENERGOCENTRUM_PLUSSRO ['1080', '"Energocentrum Plus, s.r.o"']]
+  ['1081' AMBXUK_LTD ['1081', '"amBX UK Ltd"']]
+  ['1082' WESTERN_RESERVE_CONTROLS_INC ['1082', '"Western Reserve Controls, Inc."']]
+  ['1083' LAYER_ZERO_POWER_SYSTEMS_INC ['1083', '"LayerZero Power Systems, Inc."']]
+  ['1084' CIC_JAN_HEBECSRO ['1084', '"CIC Jan Hřebec s.r.o."']]
+  ['1085' SIGROVBV ['1085', '"Sigrov BV"']]
+  ['1086' ISYS_INTELLIGENT_SYSTEMS ['1086', '"ISYS-Intelligent Systems"']]
+  ['1087' GAS_DETECTION_AUSTRALIA_PTY_LTD ['1087', '"Gas Detection (Australia) Pty Ltd"']]
+  ['1088' KINCO_AUTOMATION_SHANGHAI_LTD ['1088', '"Kinco Automation (Shanghai) Ltd."']]
+  ['1089' LARS_ENERGYLLC ['1089', '"Lars Energy, LLC"']]
+  ['1090' FLAMEFASTUK_LTD ['1090', '"Flamefast (UK) Ltd."']]
+  ['1091' ROYAL_SERVICE_AIR_CONDITIONING ['1091', '"Royal Service Air Conditioning"']]
+  ['1092' AMPIO_SP_ZOO ['1092', '"Ampio Sp. Z o.o."']]
+  ['1093' INOVONICS_WIRELESS_CORPORATION ['1093', '"Inovonics Wireless Corporation"']]
+  ['1094' NVENT_THERMAL_MANAGEMENT ['1094', '"Nvent Thermal Management"']]
+  ['1095' SINOWELL_CONTROL_SYSTEM_LTD ['1095', '"Sinowell Control System Ltd"']]
+  ['1096' MOXA_INC ['1096', '"Moxa Inc."']]
+  ['1097' MATRIXI_CONTROLSDNBHD ['1097', '"Matrix iControl SDN BHD"']]
+  ['1098' PURPLE_SWIFT ['1098', '"PurpleSwift"']]
+  ['1099' OTIM_TECHNOLOGIES ['1099', '"OTIM Technologies"']]
+  ['1100' FLOW_MATE_LIMITED ['1100', '"FlowMate Limited"']]
+  ['1101' DEGREE_CONTROLS_INC ['1101', '"Degree Controls, Inc."']]
+  ['1102' FEI_XING_SHANGHAI_SOFTWARE_TECHNOLOGIES_CO_LTD ['1102', '"Fei Xing (Shanghai) Software Technologies Co., Ltd."']]
+  ['1103' BERG_GMBH ['1103', '"Berg GmbH"']]
+  ['1104' ARENZIT ['1104', '"ARENZ.IT"']]
+  ['1105' EDELSTROM_ELECTRONIC_DEVICES_DESIGNINGLLC ['1105', '"Edelstrom Electronic Devices & Designing LLC"']]
+  ['1106' DRIVE_CONNECTLLC ['1106', '"Drive Connect, LLC"']]
+  ['1107' DEVELOP_NOW ['1107', '"DevelopNow"']]
+  ['1108' POORT ['1108', '"Poort"']]
+  ['1109' VMEIL_INFORMATION_SHANGHAI_LTD ['1109', '"VMEIL Information (Shanghai) Ltd"']]
+  ['1110' RAYLEIGH_INSTRUMENTS ['1110', '"Rayleigh Instruments"']]
+  ['1112' CODESYS_DEVELOPMENT ['1112', '"CODESYS Development"']]
+  ['1113' SMARTWARE_TECHNOLOGIES_GROUPLLC ['1113', '"Smartware Technologies Group, LLC"']]
+  ['1114' POLAR_BEAR_SOLUTIONS ['1114', '"Polar Bear Solutions"']]
+  ['1115' CODRA ['1115', '"Codra"']]
+  ['1116' PHAROS_ARCHITECTURAL_CONTROLS_LTD ['1116', '"Pharos Architectural Controls Ltd"']]
+  ['1117' ENGI_NEAR_LTD ['1117', '"EngiNear Ltd."']]
+  ['1118' AD_HOC_ELECTRONICS ['1118', '"Ad Hoc Electronics"']]
+  ['1119' UNIFIED_MICROSYSTEMS ['1119', '"Unified Microsystems"']]
+  ['1120' INDUSTRIEELEKTRONIK_BRANDENBURG_GMBH ['1120', '"Industrieelektronik Brandenburg GmbH"']]
+  ['1121' HARTMANN_GMBH ['1121', '"Hartmann GmbH"']]
+  ['1122' PISCADA ['1122', '"Piscada"']]
+  ['1123' KM_BSYSTEMSSRO ['1123', '"KMB systems, s.r.o."']]
+  ['1124' POWER_TECH_ENGINEERINGAS ['1124', '"PowerTech Engineering AS"']]
+  ['1125' TELEFONBAU_ARTHUR_SCHWABE_GMBH_COKG ['1125', '"Telefonbau Arthur Schwabe GmbH & Co. KG"']]
+  ['1126' WUXI_FISTWELOVE_TECHNOLOGY_CO_LTD ['1126', '"Wuxi Fistwelove Technology Co., Ltd."']]
+  ['1127' PRYSM ['1127', '"Prysm"']]
+  ['1128' STEINEL_GMBH ['1128', '"STEINEL GmbH"']]
+  ['1129' GEORG_FISCHERJRGAG ['1129', '"Georg Fischer JRG AG"']]
+  ['1130' MAKE_DEVELOPSL ['1130', '"Make Develop SL"']]
+  ['1131' MONNIT_CORPORATION ['1131', '"Monnit Corporation"']]
+  ['1132' MIRROR_LIFE_CORPORATION ['1132', '"Mirror Life Corporation"']]
+  ['1133' SECURE_METERS_LIMITED ['1133', '"Secure Meters Limited"']]
+  ['1134' PECO ['1134', '"PECO"']]
+  ['1135' CCTECH_INC ['1135', '".CCTECH, Inc."']]
+  ['1136' LIGHT_FI_LIMITED ['1136', '"LightFi Limited"']]
+  ['1137' NICE_SPA ['1137', '"Nice Spa"']]
+  ['1138' FIBER_SEN_SYS_INC ['1138', '"Fiber SenSys, Inc."']]
+  ['1139' BD_BUCHTAUND_DEGEORGI ['1139', '"B&D Buchta und Degeorgi"']]
+  ['1140' VENTACITY_SYSTEMS_INC ['1140', '"Ventacity Systems, Inc."']]
+  ['1141' HITACHI_JOHNSON_CONTROLS_AIR_CONDITIONING_INC ['1141', '"Hitachi-Johnson Controls Air Conditioning, Inc."']]
+  ['1142' SAGE_METERING_INC ['1142', '"Sage Metering, Inc."']]
+  ['1143' ANDEL_LIMITED ['1143', '"Andel Limited"']]
+  ['1144' ECO_SMART_TECHNOLOGIES ['1144', '"ECOSmart Technologies"']]
+  ['1145' SET ['1145', '"S.E.T."']]
+  ['1146' PROTEC_FIRE_DETECTION_SPAINSL ['1146', '"Protec Fire Detection Spain SL"']]
+  ['1147' AGRAMERUG ['1147', '"AGRAMER UG"']]
+  ['1148' ANYLINK_ELECTRONIC_GMBH ['1148', '"Anylink Electronic GmbH"']]
+  ['1149' SCHINDLER_LTD ['1149', '"Schindler, Ltd"']]
+  ['1150' JIBREEL_ABDEEN_EST ['1150', '"Jibreel Abdeen Est."']]
+  ['1151' FLUIDYNE_CONTROL_SYSTEMS_PVT_LTD ['1151', '"Fluidyne Control Systems Pvt. Ltd"']]
+  ['1152' PRISM_SYSTEMS_INC ['1152', '"Prism Systems, Inc."']]
+  ['1153' ENERTIV ['1153', '"Enertiv"']]
+  ['1154' MIRASOFT_GMBH_COKG ['1154', '"Mirasoft GmbH & Co. KG"']]
+  ['1155' DUALTECHIT ['1155', '"DUALTECH IT"']]
+  ['1156' COUNTLOGICLLC ['1156', '"Countlogic, LLC"']]
+  ['1157' KOHLER ['1157', '"Kohler"']]
+  ['1158' CHEN_SEN_CONTROLS_CO_LTD ['1158', '"Chen Sen Controls Co., Ltd."']]
+  ['1159' GREENHECK ['1159', '"Greenheck"']]
+  ['1160' INTWINE_CONNECTLLC ['1160', '"Intwine Connect, LLC"']]
+  ['1161' KARLBORGS_ELKONTROLL ['1161', '"Karlborgs Elkontroll"']]
+  ['1162' DATAKOM ['1162', '"Datakom"']]
+  ['1163' HOGA_CONTROLAS ['1163', '"Hoga Control AS"']]
+  ['1164' COOL_AUTOMATION ['1164', '"Cool Automation"']]
+  ['1165' INTER_SEARCH_CO_LTD ['1165', '"Inter Search Co., Ltd"']]
+  ['1166' DABBEL_AUTOMATION_INTELLIGENCE_GMBH ['1166', '"DABBEL-Automation Intelligence GmbH"']]
+  ['1167' GADGEON_ENGINEERING_SMARTNESS ['1167', '"Gadgeon Engineering Smartness"']]
+  ['1168' COSTER_GROUP_SRL ['1168', '"Coster Group S.r.l."']]
+  ['1169' WALTER_MLLERAG ['1169', '"Walter Müller AG"']]
+  ['1170' FLUKE ['1170', '"Fluke"']]
+  ['1171' QUINTEX_SYSTEMS_LTD ['1171', '"Quintex Systems Ltd"']]
+  ['1172' SENFFICIENTSDNBHD ['1172', '"Senfficient SDN BHD"']]
+  ['1173' NUBEIO_OPERATIONS_PTY_LTD ['1173', '"Nube iO Operations Pty Ltd"']]
+  ['1174' DAS_INTEGRATOR_PTE_LTD ['1174', '"DAS Integrator Pte Ltd"']]
+  ['1175' CREVIS_CO_LTD ['1175', '"CREVIS Co., Ltd"']]
+  ['1176' I_SQUAREDSOFTWAREINC ['1176', '"iSquared software inc."']]
+  ['1177' KTG_GMBH ['1177', '"KTG GmbH"']]
+  ['1178' POK_GROUP_OY ['1178', '"POK Group Oy"']]
+  ['1179' ADISCOM ['1179', '"Adiscom"']]
+  ['1180' INCUSENSE ['1180', '"Incusense"']]
+  ['1181' F ['1181', '"75F"']]
+  ['1182' ANORD_MARDIX_INC ['1182', '"Anord Mardix, Inc."']]
+  ['1183' HOSCH_GEBUDEAUTOMATION_NEUE_PRODUKTE_GMBH ['1183', '"HOSCH Gebäudeautomation Neue Produkte GmbH"']]
+  ['1184' BOSCHIO_GMBH ['1184', '"Bosch.IO GmbH"']]
+  ['1185' ROYAL_BOON_EDAM_INTERNATIONALBV ['1185', '"Royal Boon Edam International B.V."']]
+  ['1186' CLACK_CORPORATION ['1186', '"Clack Corporation"']]
+  ['1187' UNITEX_CONTROLSLLC ['1187', '"Unitex Controls LLC"']]
+  ['1188' KTC_GTEBORGAB ['1188', '"KTC Göteborg AB"']]
+  ['1189' INTERZONAB ['1189', '"Interzon AB"']]
+  ['1190' ISDEINGSL ['1190', '"ISDE ING SL"']]
+  ['1191' AB_MAUTOMATIONBUILDINGMESSAGING_GMBH ['1191', '"ABM automation building messaging GmbH"']]
+  ['1192' KENTEC_ELECTRONICS_LTD ['1192', '"Kentec Electronics Ltd"']]
+  ['1193' EMERSON_COMMERCIALAND_RESIDENTIAL_SOLUTIONS ['1193', '"Emerson Commercial and Residential Solutions"']]
+  ['1194' POWERSIDE ['1194', '"Powerside"']]
+  ['1195' SMC_GROUP ['1195', '"SMC Group"']]
+  ['1196' EOS_WEATHER_INSTRUMENTS ['1196', '"EOS Weather Instruments"']]
+  ['1197' ZONEX_SYSTEMS ['1197', '"Zonex Systems"']]
+  ['1198' GENEREX_SYSTEMS_COMPUTERVERTRIEBSGESELLSCHAFTMBH ['1198', '"Generex Systems Computervertriebsgesellschaft mbH"']]
+  ['1199' ENERGY_WALLLLC ['1199', '"Energy Wall LLC"']]
+  ['1200' THERMOFIN ['1200', '"Thermofin"']]
+  ['1201' SDATAWAYSA ['1201', '"SDATAWAY SA"']]
+  ['1202' BIDDLE_AIR_SYSTEMS_LIMITED ['1202', '"Biddle Air Systems Limited"']]
+  ['1203' KESSLER_ELLIS_PRODUCTS ['1203', '"Kessler Ellis Products"']]
+  ['1204' THERMOSCREENS ['1204', '"Thermoscreens"']]
+  ['1205' MODIO ['1205', '"Modio"']]
+  ['1206' NEWRON_SOLUTIONS ['1206', '"Newron Solutions"']]
+  ['1207' UNITRONICS ['1207', '"Unitronics"']]
+  ['1208' TRILUX_GMBH_COKG ['1208', '"TRILUX GmbH & Co. KG"']]
+  ['1209' KOLLMORGEN_STEUERUNGSTECHNIK_GMBH ['1209', '"Kollmorgen Steuerungstechnik GmbH"']]
+  ['1210' BOSCH_REXROTHAG ['1210', '"Bosch Rexroth AG"']]
+  ['1211' ALARKO_CARRIER ['1211', '"Alarko Carrier"']]
+  ['1212' VERDIGRIS_TECHNOLOGIES ['1212', '"Verdigris Technologies"']]
+  ['1213' SHANGHAISIIC_LONGCHUANG_SMARTECH_SO_LTD ['1213', '"Shanghai SIIC-Longchuang Smartech So., Ltd."']]
+  ['1214' QUINDA_CO ['1214', '"Quinda Co."']]
+  ['1215' GRUNERAG ['1215', '"GRUNER AG"']]
+  ['1216' BACMOVE ['1216', '"BACMOVE"']]
+  ['1217' PSIDACAB ['1217', '"PSIDAC AB"']]
+  ['1218' ISICON_CONTROL_AUTOMATION ['1218', '"ISICON-Control Automation"']]
+  ['1219' BIG_ASS_FANS ['1219', '"Big Ass Fans"']]
+  ['1220' DIN_DIETMAR_NOCKER_FACILITY_MANAGEMENT_GMBH ['1220', '"din – Dietmar Nocker Facility Management GmbH"']]
+  ['1221' TELDIO ['1221', '"Teldio"']]
+  ['1222' MIKROKLIM_ASRO ['1222', '"MIKROKLIMA s.r.o."']]
+  ['1223' DENSITY ['1223', '"Density"']]
+  ['1224' ICONAG_LEITTECHNIK_GMBH ['1224', '"ICONAG-Leittechnik GmbH"']]
+  ['1225' AWAIR ['1225', '"Awair"']]
+  ['1226' TD_ENGINEERING_LTD ['1226', '"T&D Engineering, Ltd"']]
+  ['1227' SISTEMAS_DIGITALES ['1227', '"Sistemas Digitales"']]
+  ['1228' LOXONE_ELECTRONICS_GMBH ['1228', '"Loxone Electronics GmbH"']]
+  ['1229' ACTRON_AIR ['1229', '"ActronAir"']]
+  ['1230' INDUCTIVE_AUTOMATION ['1230', '"Inductive Automation"']]
+  ['1231' THOR_ENGINEERING_GMBH ['1231', '"Thor Engineering GmbH"']]
+  ['1232' BERNER_INTERNATIONALLLC ['1232', '"Berner International, LLC"']]
+  ['1233' POTSDAM_SENSORSLLC ['1233', '"Potsdam Sensors LLC"']]
+  ['1234' KOHLER_MIRA_LTD ['1234', '"Kohler Mira Ltd"']]
+  ['1235' TECOMON_GMBH ['1235', '"Tecomon GmbH"']]
+  ['1236' TWO_DIMENSIONAL_INSTRUMENTSLLC ['1236', '"Two Dimensional Instruments, LLC"']]
+  ['1237' LEFA_TECHNOLOGIES_PTE_LTD ['1237', '"LEFA Technologies Pte. Ltd."']]
+  ['1238' EATONCEAG_NOTLICHTSYSTEME_GMBH ['1238', '"EATON CEAG Notlichtsysteme GmbH"']]
+  ['1239' COMMBOX_TECNOLOGIA ['1239', '"Commbox Tecnologia"']]
+  ['1240' IP_VIDEO_CORPORATION ['1240', '"IPVideo Corporation"']]
+  ['1241' BENDER_GMBH_COKG ['1241', '"Bender GmbH & Co. KG"']]
+  ['1242' RHYMEBUS_CORPORATION ['1242', '"Rhymebus Corporation"']]
+  ['1243' AXON_SYSTEMS_LTD ['1243', '"Axon Systems Ltd"']]
+  ['1244' ENGINEERED_AIR ['1244', '"Engineered Air"']]
+  ['1245' ELIPSE_SOFTWARE_LTDA ['1245', '"Elipse Software Ltda"']]
+  ['1246' SIMATIX_BUILDING_TECHNOLOGIES_PVT_LTD ['1246', '"Simatix Building Technologies Pvt. Ltd."']]
+  ['1247' WA_BENJAMIN_ELECTRIC_CO ['1247', '"W.A. Benjamin Electric Co."']]
+  ['1248' TROX_AIR_CONDITIONING_COMPONENTS_SUZHOU_CO_LTD ['1248', '"TROX Air Conditioning Components (Suzhou) Co. Ltd."']]
+  ['1249' SC_MEDICAL_PTY_LTD ['1249', '"SC Medical Pty Ltd."']]
+  ['1250' ELCANICAS ['1250', '"Elcanic A/S"']]
+  ['1251' OBEOAS ['1251', '"Obeo AS"']]
+  ['1252' TAPA_INC ['1252', '"Tapa, Inc."']]
+  ['1253' ASE_SMART_ENERGY_INC ['1253', '"ASE Smart Energy, Inc."']]
+  ['1254' PERFORMANCE_SERVICES_INC ['1254', '"Performance Services, Inc."']]
+  ['1255' VERIDIFY_SECURITY ['1255', '"Veridify Security"']]
+  ['1256' CD_INNOVATIONLTD ['1256', '"CD Innovation LTD"']]
+  ['1257' BEN_PEOPLES_INDUSTRIESLLC ['1257', '"Ben Peoples Industries, LLC"']]
+  ['1258' UNICOMM_SPZOO ['1258', '"UNICOMM Sp. z o.o"']]
+  ['1259' THING_TECHNOLOGIES_GMBH ['1259', '"Thing Technologies GmbH"']]
+  ['1260' BEIJING_HAILIN_CONTROL_TECHNOLOGY_INC ['1260', '"Beijing Hailin Control Technology, Inc."']]
+  ['1261' DIGITAL_REALTY ['1261', '"Digital Realty"']]
+  ['1262' AGROWTEK_INC ['1262', '"Agrowtek Inc."']]
+  ['1263' DSP_INNOVATIONBV ['1263', '"DSP Innovation BV"']]
+  ['1264' STV_ELECTRONIC_GMBH ['1264', '"STV Electronic GmbH"']]
+  ['1265' ELMEASURE_INDIA_PVT_LTD ['1265', '"Elmeasure India Pvt Ltd."']]
+  ['1266' PINESHORE_ENERGYLLC ['1266', '"Pineshore Energy LLC"']]
+  ['1267' BRASCH_ENVIRONMENTAL_TECHNOLOGIESLLC ['1267', '"Brasch Environmental Technologies, LLC"']]
+  ['1268' LION_CONTROLS_COLTD ['1268', '"Lion Controls Co., LTD"']]
+  ['1269' SINUX ['1269', '"Sinux"']]
+  ['1270' AVNET_INC ['1270', '"Avnet Inc."']]
+  ['1271' SOMFY_ACTIVITESSA ['1271', '"Somfy Activites SA"']]
+  ['1272' AMICO ['1272', '"Amico"']]
+  ['1273' SAGE_GLASS ['1273', '"SageGlass"']]
+  ['1274' AU_VERTE ['1274', '"AuVerte"']]
+  ['1275' AGILE_CONNECTS_PVT_LTD ['1275', '"Agile Connects Pvt. Ltd."']]
+  ['1276' LOCIMATION_PTY_LTD ['1276', '"Locimation Pty Ltd"']]
+  ['1277' ENVIO_SYSTEMS_GMBH ['1277', '"Envio Systems GmbH"']]
+  ['1278' VOYTECH_SYSTEMS_LIMITED ['1278', '"Voytech Systems Limited"']]
+  ['1279' DAVIDSMEYERUND_PAUL_GMBH ['1279', '"Davidsmeyer und Paul GmbH"']]
+  ['1280' LUSHER_ENGINEERING_SERVICES ['1280', '"Lusher Engineering Services"']]
+  ['1281' CHNT_NANJING_TECHSEL_INTELLIGENT_COMPANYLTD ['1281', '"CHNT Nanjing Techsel Intelligent Company LTD"']]
+  ['1282' THREETRONICS_PTY_LTD ['1282', '"Threetronics Pty Ltd"']]
+  ['1283' SKY_FOUNDRYLLC ['1283', '"SkyFoundry, LLC"']]
+  ['1284' HANIL_PRO_TECH ['1284', '"HanilProTech"']]
+  ['1285' SENSORSCALL ['1285', '"Sensorscall"']]
+  ['1286' SHANGHAI_JINGPU_INFORMATION_TECHNOLOGY_CO_LTD ['1286', '"Shanghai Jingpu Information Technology, Co., Ltd."']]
+  ['1287' LICHTMANUFAKTUR_BERLIN_GMBH ['1287', '"Lichtmanufaktur Berlin GmbH"']]
+  ['1288' ECO_PARKING_TECHNOLOGIES ['1288', '"Eco Parking Technologies"']]
+  ['1289' ENVISION_DIGITAL_INTERNATIONAL_PTE_LTD ['1289', '"Envision Digital International Pte Ltd"']]
+  ['1290' ANTONY_DEVELOPPEMENT_ELECTRONIQUE ['1290', '"Antony Developpement Electronique"']]
+  ['1291' ISYSTEMS ['1291', '"i2systems"']]
+  ['1292' THUREON_INTERNATIONAL_LIMITED ['1292', '"Thureon International Limited"']]
+  ['1293' PULSAFEEDER ['1293', '"Pulsafeeder"']]
+  ['1294' MEGA_CHIPS_CORPORATION ['1294', '"MegaChips Corporation"']]
+  ['1295' TES_CONTROLS ['1295', '"TES Controls"']]
+  ['1296' CERMATE ['1296', '"Cermate"']]
+  ['1297' GRAND_VALLEY_STATE_UNIVERSITY ['1297', '"Grand Valley State University"']]
+  ['1298' SYMCON_GMBH ['1298', '"Symcon Gmbh"']]
+  ['1299' THE_CHICAGO_FAUCET_COMPANY ['1299', '"The Chicago Faucet Company"']]
+  ['1300' GEBERITAG ['1300', '"Geberit AG"']]
+  ['1301' REX_CONTROLS ['1301', '"Rex Controls"']]
+  ['1302' IVMS_GMBH ['1302', '"IVMS GmbH"']]
+  ['1303' MNPP_SATURN_LTD ['1303', '"MNPP Saturn Ltd."']]
+  ['1304' REGAL_BELOIT ['1304', '"Regal Beloit"']]
+  ['1305' ACS_AIR_CONDITIONING_SOLUTIONS ['1305', '"ACS-Air Conditioning Solutions"']]
+  ['1306' GBX_TECHNOLOGYLLC ['1306', '"GBX Technology, LLC"']]
+  ['1307' KAITERRA ['1307', '"Kaiterra"']]
+  ['1308' THIN_KUANLOT_TECHNOLOGY_SHANGHAI_CO_LTD ['1308', '"ThinKuan loT Technology (Shanghai) Co., Ltd"']]
+  ['1309' HO_CO_STOBV ['1309', '"HoCoSto B.V."']]
+  ['1310' SHENZHENASAI_TECHNOLOGY_CO_LTD ['1310', '"Shenzhen AS-AI Technology Co., Ltd."']]
+  ['1311' RPS_SPA ['1311', '"RPS S.p.a."']]
+  ['1312' ESMSOLUTIONS ['1312', '"Esmé solutions"']]
+  ['1313' IO_TECH_SYSTEMS_LIMITED ['1313', '"IOTech Systems Limited"']]
+  ['1314' I_AUTO_LOGIC_CO_LTD ['1314', '"i-AutoLogic Co., Ltd."']]
+  ['1315' NEW_AGE_MICROLLC ['1315', '"New Age Micro, LLC"']]
+  ['1316' GUARDIAN_GLASS ['1316', '"Guardian Glass"']]
+  ['1317' GUANGZHOU_ZHAOYU_INFORMATION_TECHNOLOGY ['1317', '"Guangzhou Zhaoyu Information Technology"']]
+  ['1318' ACE_IOT_SOLUTIONSLLC ['1318', '"ACE IoT Solutions LLC"']]
+  ['1319' PORIS_ELECTRONICS_CO_LTD ['1319', '"Poris Electronics Co., Ltd."']]
+  ['1320' TERMINUS_TECHNOLOGIES_GROUP ['1320', '"Terminus Technologies Group"']]
+  ['1321' INTECH1_INC ['1321', '"Intech 21, Inc."']]
+  ['1322' ACCURATE_ELECTRONICS ['1322', '"Accurate Electronics"']]
+  ['1323' FLUENCE_BIOENGINEERING ['1323', '"Fluence Bioengineering"']]
+  ['1324' MUN_HEAN_SINGAPORE_PTE_LTD ['1324', '"Mun Hean Singapore Pte Ltd"']]
+  ['1325' KATRONICAG_COKG ['1325', '"Katronic AG & Co. KG"']]
+  ['1326' SUZHOU_XIN_AO_INFORMATION_TECHNOLOGY_CO_LTD ['1326', '"Suzhou XinAo Information Technology Co. Ltd"']]
+  ['1327' LINKTEKK_TECHNOLOGYJSC ['1327', '"Linktekk Technology, JSC."']]
+  ['1328' STIRLING_ULTRACOLD ['1328', '"Stirling Ultracold"']]
+  ['1329' UV_PARTNERS_INC ['1329', '"UV Partners, Inc."']]
+  ['1330' PRO_MINENT_GMBH ['1330', '"ProMinent GmbH"']]
+  ['1331' MULTI_TECH_SYSTEMS_INC ['1331', '"Multi-Tech Systems, Inc."']]
+  ['1332' JUMO_GMBH_COKG ['1332', '"JUMO GmbH & Co. KG"']]
+  ['1333' QINGDAO_HUARUI_TECHNOLOGY_CO_LTD ['1333', '"Qingdao Huarui Technology Co. Ltd.,"']]
+  ['1334' CAIRN_SYSTEMES ['1334', '"Cairn Systemes"']]
+  ['1335' NEURO_LOGIC_RESEARCH_CORP ['1335', '"NeuroLogic Research Corp."']]
+  ['1336' TRANSITION_TECHNOLOGIES_ADVANCED_SOLUTIONS_SPZOO ['1336', '"Transition Technologies Advanced Solutions Sp. z o.o"']]
+  ['1337' XXTERBV ['1337', '"Xxter bv"']]
+  ['1338' PASSIVE_LOGIC ['1338', '"PassiveLogic"']]
+  ['1339' EN_SMART_CONTROLS ['1339', '"EnSmart Controls"']]
+  ['1340' WATTS_HEATINGAND_HOT_WATER_SOLUTIONSDBA_LYNC ['1340', '"Watts Heating and Hot Water Solutions, dba Lync"']]
+  ['1341' TROPOSPHAIRA_TECHNOLOGIESLLP ['1341', '"Troposphaira Technologies LLP"']]
+  ['1342' NETWORK_THERMOSTAT ['1342', '"Network Thermostat"']]
+  ['1343' TITANIUM_INTELLIGENT_SOLUTIONSLLC ['1343', '"Titanium Intelligent Solutions, LLC"']]
+  ['1344' NUMA_PRODUCTSLLC ['1344', '"Numa Products, LLC"']]
+  ['1345' WAREMA_RENKHOFFSE ['1345', '"WAREMA Renkhoff SE"']]
+  ['1346' FRESEAS ['1346', '"Frese A/S"']]
+  ['1347' MAPPED ['1347', '"Mapped"']]
+  ['1348' ELEKTRODESIG_NVENTILATORYSRO ['1348', '"ELEKTRODESIGN ventilatory s.r.o"']]
+  ['1349' AIR_CARE_AUTOMATION_INC ['1349', '"AirCare Automation, Inc."']]
+  ['1350' ANTRUM ['1350', '"Antrum"']]
+  ['1351' BAO_LINH_CONNECT_TECHNOLOGY ['1351', '"Bao Linh Connect Technology"']]
+  ['1352' VIRGINIA_CONTROLSLLC ['1352', '"Virginia Controls, LLC"']]
+  ['1353' DUOSYSSDNBHD ['1353', '"Duosys SDN BHD"']]
+  ['1354' ONSENSAS ['1354', '"Onsen SAS"']]
+  ['1355' VAUGHN_THERMAL_CORPORATION ['1355', '"Vaughn Thermal Corporation"']]
+  ['1356' THERMOPLASTIC_ENGINEERING_LTDTPE ['1356', '"Thermoplastic Engineering Ltd (TPE)"']]
+  ['1357' WIRTH_RESEARCH_LTD ['1357', '"Wirth Research Ltd."']]
+  ['1358' SST_AUTOMATION ['1358', '"SST Automation"']]
+  ['1359' SHANGHAI_BENCOL_ELECTRONIC_TECHNOLOGY_CO_LTD ['1359', '"Shanghai Bencol Electronic Technology Co., Ltd"']]
+  ['1360' AIWAA_SYSTEMS_PRIVATE_LIMITED ['1360', '"AIWAA Systems Private Limited"']]
+  ['1361' ENLESS_WIRELESS ['1361', '"Enless Wireless"']]
+  ['1362' OZUNO_ENGINEERING_PTY_LTD ['1362', '"Ozuno Engineering Pty Ltd"']]
+  ['1363' HUBBELL_THE_ELECTRIC_HEATER_COMPANY ['1363', '"Hubbell, The Electric Heater Company"']]
+  ['1364' INDUSTRIAL_TURNAROUND_CORPORATIONITAC ['1364', '"Industrial Turnaround Corporation (ITAC)"']]
+  ['1365' WADSWORTH_CONTROL_SYSTEMS ['1365', '"Wadsworth Control Systems"']]
+  ['1366' SERVICES_HILO_INC ['1366', '"Services Hilo Inc."']]
+  ['1367' IDM_ENERGIESYSTEME_GMBH ['1367', '"iDM Energiesysteme GmbH"']]
+  ['1368' BE_NEXTBV ['1368', '"BeNext B.V."']]
+  ['1369' CLEAN_AIRAI_CORPORATION ['1369', '"CleanAir.ai Corporation"']]
+  ['1370' REVOLUTION_MICROELECTRONICS_AMERICA_INC ['1370', '"Revolution Microelectronics (America) Inc."']]
+  ['1371' REAL_TIME_SYSTEMS_GMBH ['1371', '"Real-Time Systems GmbH"']]
+  ['1372' ZED_BEE_TECHNOLOGIES_PVT_LTD ['1372', '"ZedBee Technologies Pvt Ltd"']]
+  ['1373' WINMATE_TECHNOLOGY_SOLUTIONS_PVT_LTD ['1373', '"Winmate Technology Solutions Pvt. Ltd."']]
+  ['1374' SENTICON_LTD ['1374', '"Senticon Ltd."']]
+  ['1375' ROSSAKERAB ['1375', '"Rossaker AB"']]
+  ['1376' OPIT_SOLUTIONS_LTD ['1376', '"OPIT Solutions Ltd"']]
+  ['1377' HOTOWELL_INTERNATIONAL_CO_LIMITED ['1377', '"Hotowell International Co., Limited"']]
+  ['1378' INIM_ELECTRONICSSRL_UNIPERSONALE ['1378', '"Inim Electronics S.R.L. Unipersonale"']]
+  ['1379' AIRTHINGSASA ['1379', '"Airthings ASA"']]
+  ['1380' ANALOG_DEVICES_INC ['1380', '"Analog Devices, Inc."']]
+  ['1381' AI_DIRECTIONSDMCC ['1381', '"AIDirections DMCC"']]
+  ['1382' PRIMA_ELECTRO_SPA ['1382', '"Prima Electro S.p.A."']]
+  ['1383' KLT_CONTROL_SYSTEM_LTD ['1383', '"KLT Control System Ltd."']]
+  ['1384' EVOLUTION_CONTROLS_INC ['1384', '"Evolution Controls Inc."']]
+  ['1385' BEVER_INNOVATIONS ['1385', '"Bever Innovations"']]
+  ['1386' PELICAN_WIRELESS_SYSTEMS ['1386', '"Pelican Wireless Systems"']]
+  ['1387' CONTROL_CONCEPTS_INC ['1387', '"Control Concepts Inc."']]
+  ['1388' AUGMATIC_TECHNOLOGIES_PVT_LTD ['1388', '"Augmatic Technologies Pvt. Ltd."']]
+  ['1389' XIAMEN_MILESIGHTLOT_CO_LTD ['1389', '"Xiamen Milesight loT Co., Ltd"']]
+  ['1390' TIANJIN_ANJIELOT_SCHIENCEAND_TECHNOLOGY_CO_LTD ['1390', '"Tianjin Anjie loT Schience and Technology Co., Ltd"']]
+  ['1391' GUANGZHOUS_ENERGY_ELECTRONICS_TECHNOLOGY_CO_LTD ['1391', '"Guangzhou S. Energy Electronics Technology Co. Ltd."']]
+  ['1392' AKVO_ATMOSPHERIC_WATER_SYSTEMS_PVT_LTD ['1392', '"AKVO Atmospheric Water Systems Pvt. Ltd."']]
+  ['1393' EM_FIRST_CO_LTD ['1393', '"EmFirst Co. Ltd."']]
+  ['1394' IION_SYSTEMS_APS ['1394', '"Iion Systems ApS"']]
+  ['1396' SAF_TEHNIKAJSC ['1396', '"SAF Tehnika JSC"']]
+  ['1397' KOMFORTIQ_INC ['1397', '"Komfort IQ, Inc."']]
+  ['1398' COOL_TERA_LIMITED ['1398', '"CoolTera Limited"']]
+  ['1399' HADRON_SOLUTIONS_SRLS ['1399', '"Hadron Solutions S.r.l.s"']]
+  ['1401' BITPOOL ['1401', '"Bitpool"']]
+  ['1402' SONICULLC ['1402', '"Sonicu, LLC"']]
+  ['1403' RISHABH_INSTRUMENTS_LIMITED ['1403', '"Rishabh Instruments Limited"']]
+  ['1404' THING_WAREHOUSELLC ['1404', '"Thing Warehouse LLC"']]
+  ['1405' INNOFRIENDS_GMBH ['1405', '"Innofriends GmbH"']]
+  ['1406' METRONICAKP_SPJ ['1406', '"Metronic AKP Sp. J."']]
+  ['1407' TECHKNAVE ['1407', '"Techknave"']]
+  ['1408' ELSNER_ELEKTRONIK ['1408', '"Elsner Elektronik"']]
+  ['1409' LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD ['1409', '"LEFOO Industrial (Hangzhou) Co., Ltd."']]
+  ['1410' CALIBRATION_TECHNOLOGIES_INC ['1410', '"Calibration Technologies, Inc."']]
+  ['1411' ALLORADO ['1411', '"Allorado"']]
+  ['1412' VERKADA ['1412', '"Verkada"']]
+  ['1413' WATTSENSE ['1413', '"Wattsense"']]
+  ['1414' EMERSON_AUTOMATION_SOLUTIONS ['1414', '"Emerson Automation Solutions"']]
+  ['1415' GROWLINK ['1415', '"Growlink"']]
+  ['1416' OLYMPIA_ELECTRONICS ['1416', '"Olympia Electronics"']]
+  ['1417' NORMAL_SOFTWARE_INC ['1417', '"Normal Software, Inc."']]
+  ['1418' ST_ENGINEERING_SOLUTIONJSC ['1418', '"ST Engineering Solution JSC"']]
+  ['1419' INDUSTRIAL_FLOW_SOLUTIONS ['1419', '"Industrial Flow Solutions"']]
+  ['1420' UBIQISENSE_APS ['1420', '"Ubiqisense ApS"']]
+  ['1421' TIGER_SOFT ['1421', '"Tiger-Soft"']]
+  ['1422' ECODOM_SRL ['1422', '"Ecodom Srl"']]
+  ['1423' BILGIPRO_IOT_SYSTEMS ['1423', '"Bilgipro IoT Systems"']]
+  ['1424' PLANSPURNETDESIGN_GMBH ['1424', '"planspur netdesign GmbH"']]
+  ['1425' DOLPHIN_SOLUTIONS_LTD ['1425', '"Dolphin Solutions Ltd"']]
+  ['1426' MITSUBISHI_ELECTRIC_CORPORATION_KOBE_WORKS ['1426', '"Mitsubishi Electric Corporation, Kobe Works"']]
+  ['1427' ECOVENA ['1427', '"Ecovena"']]
+  ['1428' GREE_ELECTRIC_APPLIANCES_INCOF_ZHUHAI ['1428', '"Gree Electric Appliances Inc of Zhuhai"']]
+  ['1429' CONSPEC_CONTROLS ['1429', '"Conspec Controls"']]
+  ['1430' HANGZHOU_HIKVISION_DIGITAL_TECHNOLOGY_CO_LTD ['1430', '"Hangzhou Hikvision Digital Technology Co., Ltd."']]
+  ['1431' CRYSTAL_PEAK_SECURITY ['1431', '"Crystal Peak Security"']]
+  ['1432' PERM_ALERT ['1432', '"PermAlert"']]
+  ['1433' ZHEJIANG_MISILIN_TECHNOLOGY_CO_LTD ['1433', '"Zhejiang Misilin Technology Co., Ltd."']]
+  ['1434' DEKKER_VACUUM_TECHNOLOGIES ['1434', '"Dekker Vacuum Technologies"']]
+  ['1435' EDWARDS_LIMITED ['1435', '"Edwards Limited"']]
+  ['1436' LEYBOLD_GMBH ['1436', '"Leybold GmbH"']]
+  ['1437' INTERNATIONAL_GAS_DETECTORS ['1437', '"International Gas Detectors"']]
+  ['1438' ATLAS_COPCO_AIRPOWERNV ['1438', '"Atlas Copco Airpower NV"']]
+  ['1439' AIR_SENTRY_LIMITED ['1439', '"Air Sentry Limited"']]
+  ['1440' AELSYS ['1440', '"Aelsys"']]
+  ['1441' GRANBY_CONSULTINGLLC ['1441', '"Granby Consulting LLC"']]
+  ['1442' CLEVER_RELAY ['1442', '"Clever Relay"']]
+  ['1443' MONICO_MONITORING_INC ['1443', '"Monico Monitoring, Inc."']]
+  ['1444' OQDO ['1444', '"Oqdo"']]
+  ['1445' MATRIX_COMSEC_PRIVATE_LIMITED ['1445', '"Matrix Comsec Private Limited"']]
+  ['1446' RESOURCE_SOLUTIONS ['1446', '"Resource Solutions"']]
+  ['1447' AMERICAN_GAS_SAFETYLLC ['1447', '"American Gas Safety, LLC"']]
+  ['1448' SS_NORTHERN_LTD ['1448', '"S&S Northern Ltd."']]
+  ['1449' ULBIOS_TECHSENS ['1449', '"Ulbios Techsens"']]
+  ['1450' BOWERY_FARMING_INC ['1450', '"Bowery Farming, Inc."']]
+  ['1451' RYOBI_LIMITED ['1451', '"Ryobi Limited"']]
+  ['1452' EKKO_SENSE_LTD ['1452', '"EkkoSense Ltd"']]
+  ['1453' CLIMA_COOL ['1453', '"ClimaCool"']]
+ 
+  ['0xFFFF' UNKNOWN_VENDOR ['0xFFFF', '"Unknown"']]
+]
+
+[type BACnetVendorIdTagged(uint 8 tagNumber, TagClass tagClass)
+    [simple   BACnetTagHeader
+                        header                                                                               ]
+    [validation    'header.tagClass == tagClass'    "tag class doesn't match"                                ]
+    [validation    '(header.tagClass == TagClass.APPLICATION_TAGS && header.actualTagNumber == 2) || (header.actualTagNumber == tagNumber)'
+                                                    "tagnumber doesn't match" shouldFail=false               ]
+    [manual   BACnetVendorId
+                    value
+                        'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetVendorId.UNKNOWN_VENDOR)'
+                        'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+                        '_value.isUnknownId?0:(header.actualLength * 8)'                                     ]
+    [virtual  bit   isUnknownId
+                        'value == BACnetVendorId.UNKNOWN_VENDOR'                                             ]
+    //TODO: change to uint32 once cast is inserted
+    [manual   uint 32
+                    unknownId
+                        'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isUnknownId)'
+                        'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, unknownId, isUnknownId)'
+                        '_value.isUnknownId?(header.actualLength * 8):0'                                     ]
+]
diff --git a/protocols/bacnetip/src/main/script/getVendorIds.groovy b/protocols/bacnetip/src/main/script/getVendorIds.groovy
index 0bf9e636b5..3b64e0a943 100644
--- a/protocols/bacnetip/src/main/script/getVendorIds.groovy
+++ b/protocols/bacnetip/src/main/script/getVendorIds.groovy
@@ -122,6 +122,9 @@ mspecTemplate = """
  * specific language governing permissions and limitations
  * under the License.
  */
+ 
+ // Code generated by code-generation. DO NOT EDIT.
+
 [enum uint 16 BACnetVendorId(uint 16 vendorId, string 8 vendorName)
 <% for (item in values) { %> ['<%= item.vendorId %>' <%= item.organizationSanitized %> ['<%= item.vendorId %>', '"<%= item.organization %>"']]\\n <% } %>
   ['0xFFFF' UNKNOWN_VENDOR ['0xFFFF', '"Unknown"']]
@@ -151,10 +154,13 @@ mspecTemplate = """
 SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
 def template = templateEngine.createTemplate(mspecTemplate).make([values: vendors])
 
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
 if (!mspecTargetDir.exists()) {
     mspecTargetDir.mkdirs()
 }
 def vendorIdMspec = new File(mspecTargetDir, "bacnet-vendorids.mspec")
+if(vendorIdMspec.exists()) {
+    vendorIdMspec.delete()
+}
 
 template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy b/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy
index ab92555d4b..920e8a5cec 100644
--- a/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy
+++ b/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy
@@ -66,7 +66,8 @@ taggedEnumsTemplate = """
  * specific language governing permissions and limitations
  * under the License.
  */
- 
+
+ // Code generated by code-generation. DO NOT EDIT.
 <% for (item in values) { %>
 [type <%= item.name %>Tagged(uint 8 tagNumber, TagClass tagClass)
     [simple   BACnetTagHeader
@@ -83,10 +84,13 @@ taggedEnumsTemplate = """
 SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
 def template = templateEngine.createTemplate(taggedEnumsTemplate).make([values: foundEnums])
 
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
 if (!mspecTargetDir.exists()) {
     mspecTargetDir.mkdirs()
 }
 def vendorIdMspec = new File(mspecTargetDir, "bacnet-bit-strings-tagged.mspec")
+if(vendorIdMspec.exists()) {
+    vendorIdMspec.delete()
+}
 
 template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy b/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy
index acdff6bc96..9c3d0a41ca 100644
--- a/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy
+++ b/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy
@@ -60,6 +60,7 @@ taggedEnumsTemplate = """
  * under the License.
  */
  
+ // Code generated by code-generation. DO NOT EDIT.
 <% for (item in values) { %>
 [type <%= item.name %>Tagged(uint 8 tagNumber, TagClass tagClass)
     [simple   BACnetTagHeader
@@ -85,10 +86,13 @@ taggedEnumsTemplate = """
 SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
 def template = templateEngine.createTemplate(taggedEnumsTemplate).make([values: foundEnums])
 
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
 if (!mspecTargetDir.exists()) {
     mspecTargetDir.mkdirs()
 }
 def vendorIdMspec = new File(mspecTargetDir, "bacnet-enums-tagged.mspec")
+if(vendorIdMspec.exists()) {
+    vendorIdMspec.delete()
+}
 
 template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy b/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy
index 9096a97b35..a509a236db 100644
--- a/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy
+++ b/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy
@@ -54,6 +54,7 @@ taggedEnumsTemplate = """
  * under the License.
  */
  
+ // Code generated by code-generation. DO NOT EDIT.
 <% for (item in values) { %>
 [type <%= item.name %>Tagged(uint 8 tagNumber, TagClass tagClass)
     [simple   BACnetTagHeader
@@ -72,10 +73,13 @@ taggedEnumsTemplate = """
 SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
 def template = templateEngine.createTemplate(taggedEnumsTemplate).make([values: foundEnums])
 
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
 if (!mspecTargetDir.exists()) {
     mspecTargetDir.mkdirs()
 }
 def vendorIdMspec = new File(mspecTargetDir, "bacnet-private-enums-tagged.mspec")
+if(vendorIdMspec.exists()) {
+    vendorIdMspec.delete()
+}
 
 template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/knxnetip/pom.xml b/protocols/knxnetip/pom.xml
index 6c891b238b..85da343a73 100644
--- a/protocols/knxnetip/pom.xml
+++ b/protocols/knxnetip/pom.xml
@@ -33,76 +33,14 @@
   <description>Base protocol specifications for the KNXNet/IP protocol</description>
 
   <build>
-    <plugins>
-      <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
-      <!--
-        We're intentionally not using the download plugin as this would either download only once
-        and not get any updates or it would try downloading for every build. This however might result
-        in getting banned on the KNX server.
-
-        So this script makes sure the knx-master-data.xml is updated at most every 24h
-      -->
-      <plugin>
-        <groupId>org.codehaus.gmaven</groupId>
-        <artifactId>groovy-maven-plugin</artifactId>
-        <version>2.1.1</version>
-        <executions>
-          <!-- Do some pre-build checks and report any findings to the user -->
-          <execution>
-            <id>fetch-knx-manufacturer-data</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-            <configuration>
-              <source>${project.basedir}/src/main/script/getKnxMasterData.groovy</source>
-            </configuration>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>xml-maven-plugin</artifactId>
-        <version>1.1.0</version>
-        <executions>
-          <execution>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>transform</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <transformationSets>
-            <transformationSet>
-              <dir>${project.build.directory}/downloads</dir>
-              <includes>*.xml</includes>
-              <stylesheet>src/main/xslt/knx-types.xsl</stylesheet>
-              <outputDir>${project.build.outputDirectory}/protocols/knxnetip</outputDir>
-              <fileMappers>
-                <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
-                  <targetExtension>.mspec</targetExtension>
-                </fileMapper>
-              </fileMappers>
-            </transformationSet>
-          </transformationSets>
-        </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>net.sf.saxon</groupId>
-            <artifactId>Saxon-HE</artifactId>
-            <version>12.3</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-    </plugins>
+    <resources>
+      <resource>
+        <directory>src/main/generated</directory>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+    </resources>
   </build>
 
   <dependencies>
@@ -143,4 +81,82 @@
     </dependency>
   </dependencies>
 
+  <profiles>
+    <profile>
+      <id>update-generated-code</id>
+      <build>
+        <plugins>
+          <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
+          <!--
+            We're intentionally not using the download plugin as this would either download only once
+            and not get any updates or it would try downloading for every build. This however might result
+            in getting banned on the KNX server.
+
+            So this script makes sure the knx-master-data.xml is updated at most every 24h
+          -->
+          <plugin>
+            <groupId>org.codehaus.gmaven</groupId>
+            <artifactId>groovy-maven-plugin</artifactId>
+            <version>2.1.1</version>
+            <executions>
+              <!-- Do some pre-build checks and report any findings to the user -->
+              <execution>
+                <id>fetch-knx-manufacturer-data</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>${project.basedir}/src/main/script/getKnxMasterData.groovy</source>
+                </configuration>
+              </execution>
+            </executions>
+            <dependencies>
+              <dependency>
+                <groupId>org.apache.groovy</groupId>
+                <artifactId>groovy</artifactId>
+                <version>${groovy.version}</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>xml-maven-plugin</artifactId>
+            <version>1.1.0</version>
+            <executions>
+              <execution>
+                <phase>process-resources</phase>
+                <goals>
+                  <goal>transform</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <transformationSets>
+                <transformationSet>
+                  <dir>${project.build.directory}/downloads</dir>
+                  <includes>*.xml</includes>
+                  <stylesheet>src/main/xslt/knx-types.xsl</stylesheet>
+                  <outputDir>${project.basedir}/src/main/generated/protocols/knxnetip</outputDir>
+                  <fileMappers>
+                    <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
+                      <targetExtension>.mspec</targetExtension>
+                    </fileMapper>
+                  </fileMappers>
+                </transformationSet>
+              </transformationSets>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>net.sf.saxon</groupId>
+                <artifactId>Saxon-HE</artifactId>
+                <version>12.3</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
\ No newline at end of file
diff --git a/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
new file mode 100644
index 0000000000..2d3e63cbd9
--- /dev/null
+++ b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
@@ -0,0 +1,4700 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// Code generated by code-generation. DO NOT EDIT.
+
+[enum uint 16 KnxDatapointMainType(uint 16 number, uint 8 sizeInBits, string 8 name)
+    ['0' DPT_UNKNOWN ['0', '0', '"Unknown Datapoint Type"']]
+    // Begin: Some typed needed to support all IEC types on KNX (Which the standard generally doesn't support)
+    ['1' DPT_64_BIT_SET ['0', '64', '"Unknown Datapoint Type"']]
+    ['2' DPT_8_BYTE_UNSIGNED_VALUE ['0', '64', '"Unknown Datapoint Type"']]
+    ['3' DPT_8_BYTE_SIGNED_VALUE ['0', '64', '"Unknown Datapoint Type"']]
+    ['4' DPT_12_BYTE_SIGNED_VALUE ['0', '96', '"Unknown Datapoint Type"']]
+    ['5' DPT_8_BYTE_FLOAT_VALUE ['0', '64', '"Unknown Datapoint Type"']]
+    // End: Custom types
+    ['6' DPT_1_BIT ['1', '1', '"1-bit"']]
+    ['7' DPT_1_BIT_CONTROLLED ['2', '2', '"1-bit controlled"']]
+    ['8' DPT_3_BIT_CONTROLLED ['3', '4', '"3-bit controlled"']]
+    ['9' DPT_CHARACTER ['4', '8', '"character"']]
+    ['10' DPT_8_BIT_UNSIGNED_VALUE ['5', '8', '"8-bit unsigned value"']]
+    ['11' DPT_8_BIT_SIGNED_VALUE ['6', '8', '"8-bit signed value"']]
+    ['12' DPT_2_BYTE_UNSIGNED_VALUE ['7', '16', '"2-byte unsigned value"']]
+    ['13' DPT_2_BYTE_SIGNED_VALUE ['8', '16', '"2-byte signed value"']]
+    ['14' DPT_2_BYTE_FLOAT_VALUE ['9', '16', '"2-byte float value"']]
+    ['15' DPT_TIME ['10', '24', '"time"']]
+    ['16' DPT_DATE ['11', '24', '"date"']]
+    ['17' DPT_4_BYTE_UNSIGNED_VALUE ['12', '32', '"4-byte unsigned value"']]
+    ['18' DPT_4_BYTE_SIGNED_VALUE ['13', '32', '"4-byte signed value"']]
+    ['19' DPT_4_BYTE_FLOAT_VALUE ['14', '32', '"4-byte float value"']]
+    ['20' DPT_ENTRANCE_ACCESS ['15', '32', '"entrance access"']]
+    ['21' DPT_CHARACTER_STRING ['16', '112', '"character string"']]
+    ['22' DPT_SCENE_NUMBER ['17', '8', '"scene number"']]
+    ['23' DPT_SCENE_CONTROL ['18', '8', '"scene control"']]
+    ['24' DPT_DATE_TIME ['19', '64', '"Date Time"']]
+    ['25' DPT_1_BYTE ['20', '8', '"1-byte"']]
+    ['26' DPT_8_BIT_SET ['21', '8', '"8-bit set"']]
+    ['27' DPT_16_BIT_SET ['22', '16', '"16-bit set"']]
+    ['28' DPT_2_BIT_SET ['23', '2', '"2-bit set"']]
+    ['29' DPT_2_NIBBLE_SET ['25', '8', '"2-nibble set"']]
+    ['30' DPT_8_BIT_SET_2 ['26', '8', '"8-bit set"']]
+    ['31' DPT_32_BIT_SET ['27', '32', '"32-bit set"']]
+    ['32' DPT_ELECTRICAL_ENERGY ['29', '64', '"electrical energy"']]
+    ['33' DPT_24_TIMES_CHANNEL_ACTIVATION ['30', '24', '"24 times channel activation"']]
+    ['34' DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM ['206', '24', '"16-bit unsigned value & 8-bit enum"']]
+    ['35' DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM ['207', '16', '"8-bit unsigned value & 8-bit enum"']]
+    ['36' DPT_DATAPOINT_TYPE_VERSION ['217', '16', '"datapoint type version"']]
+    ['37' DPT_ALARM_INFO ['219', '48', '"alarm info"']]
+    ['38' DPT_3X_2_BYTE_FLOAT_VALUE ['222', '48', '"3x 2-byte float value"']]
+    ['39' DPT_SCALING_SPEED ['225', '24', '"scaling speed"']]
+    ['40' DPT_4_1_1_BYTE_COMBINED_INFORMATION ['229', '48', '"4-1-1 byte combined information"']]
+    ['41' DPT_MBUS_ADDRESS ['230', '64', '"MBus address"']]
+    ['42' DPT_3_BYTE_COLOUR_RGB ['232', '24', '"3-byte colour RGB"']]
+    ['43' DPT_LANGUAGE_CODE_ISO_639_1 ['234', '16', '"language code ISO 639-1"']]
+    ['44' DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY ['235', '48', '"Signed value with classification and validity"']]
+    ['45' DPT_PRIORITISED_MODE_CONTROL ['236', '8', '"Prioritised Mode Control"']]
+    ['46' DPT_CONFIGURATION_DIAGNOSTICS_16_BIT ['237', '16', '"configuration/ diagnostics"']]
+    ['47' DPT_CONFIGURATION_DIAGNOSTICS_8_BIT ['238', '8', '"configuration/ diagnostics"']]
+    ['48' DPT_POSITIONS ['240', '24', '"positions"']]
+    ['49' DPT_STATUS_32_BIT ['241', '32', '"status"']]
+    ['50' DPT_STATUS_48_BIT ['242', '48', '"status"']]
+    ['51' DPT_CONVERTER_STATUS ['244', '16', '"Converter Status"']]
+    ['52' DPT_CONVERTER_TEST_RESULT ['245', '48', '"Converter test result"']]
+    ['53' DPT_BATTERY_INFORMATION ['246', '16', '"Battery Information"']]
+    ['54' DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION ['249', '48', '"brightness colour temperature transition"']]
+    ['55' DPT_STATUS_24_BIT ['250', '24', '"status"']]
+    ['56' DPT_COLOUR_RGBW ['251', '48', '"Colour RGBW"']]
+    ['57' DPT_RELATIVE_CONTROL_RGBW ['252', '40', '"Relative Control RGBW"']]
+    ['58' DPT_RELATIVE_CONTROL_RGB ['254', '24', '"Relative Control RGB"']]
+    ['59' DPT_F32F32 ['255', '64', '"F32F32"']]
+    ['60' DPT_F16F16F16F16 ['275', '64', '"F16F16F16F16"']]
+    
+]
+
+[enum uint 32 KnxDatapointType(uint 16 number, KnxDatapointMainType datapointMainType, string 8 name)
+    ['0' DPT_UNKNOWN    ['0', 'DPT_UNKNOWN',               '"Unknown Datapoint Subtype"']]
+    // Begin: Some typed needed to support all IEC types on KNX (Which the standard generally doesn't support)
+    ['1' BOOL           ['0', 'DPT_1_BIT',                 '"BOOL"']]
+    ['2' BYTE           ['0', 'DPT_8_BIT_SET',             '"BYTE"']]
+    ['3' WORD           ['0', 'DPT_16_BIT_SET',            '"WORD"']]
+    ['4' DWORD          ['0', 'DPT_32_BIT_SET',            '"DWORD"']]
+    ['5' LWORD          ['0', 'DPT_64_BIT_SET',            '"LWORD"']]
+    ['6' USINT          ['0', 'DPT_8_BIT_UNSIGNED_VALUE',  '"USINT"']]
+    ['7' SINT           ['0', 'DPT_8_BIT_SIGNED_VALUE',    '"SINT"']]
+    ['8' UINT           ['0', 'DPT_2_BYTE_UNSIGNED_VALUE', '"UINT"']]
+    ['9' INT            ['0', 'DPT_2_BYTE_SIGNED_VALUE',   '"INT"']]
+    ['10' UDINT         ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"UDINT"']]
+    ['11' DINT          ['0', 'DPT_4_BYTE_SIGNED_VALUE',   '"DINT"']]
+    ['12' ULINT         ['0', 'DPT_8_BYTE_UNSIGNED_VALUE', '"ULINT"']]
+    ['13' LINT          ['0', 'DPT_8_BYTE_SIGNED_VALUE',   '"LINT"']]
+    ['14' REAL          ['0', 'DPT_4_BYTE_FLOAT_VALUE',    '"REAL"']]
+    ['15' LREAL         ['0', 'DPT_8_BYTE_FLOAT_VALUE',    '"LREAL"']]
+    ['16' CHAR          ['0', 'DPT_CHARACTER',             '"CHAR"']]
+    ['17' WCHAR         ['0', 'DPT_2_BYTE_UNSIGNED_VALUE', '"WCHAR"']]
+    ['18' STRING        ['0', 'DPT_UNKNOWN',               '"STRING"']]
+    ['19' WSTRING       ['0', 'DPT_UNKNOWN',               '"WSTRING"']]
+    ['20' TIME          ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"TIME"']]
+    ['21' LTIME         ['0', 'DPT_8_BYTE_UNSIGNED_VALUE', '"LTIME"']]
+    ['22' DATE          ['0', 'DPT_2_BYTE_UNSIGNED_VALUE', '"DATE"']]
+    ['23' TIME_OF_DAY   ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"TIME_OF_DAY"']]
+    ['24' TOD           ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"TOD"']]
+    ['25' DATE_AND_TIME ['0', 'DPT_12_BYTE_SIGNED_VALUE',  '"DATE_AND_TIME"']]
+    ['26' DT            ['0', 'DPT_12_BYTE_SIGNED_VALUE',  '"DT"']]
+    // End: Custom types
+        ['27' DPT_Switch ['1', 'DPT_1_BIT', '"switch"']]
+    ['28' DPT_Bool ['2', 'DPT_1_BIT', '"boolean"']]
+    ['29' DPT_Enable ['3', 'DPT_1_BIT', '"enable"']]
+    ['30' DPT_Ramp ['4', 'DPT_1_BIT', '"ramp"']]
+    ['31' DPT_Alarm ['5', 'DPT_1_BIT', '"alarm"']]
+    ['32' DPT_BinaryValue ['6', 'DPT_1_BIT', '"binary value"']]
+    ['33' DPT_Step ['7', 'DPT_1_BIT', '"step"']]
+    ['34' DPT_UpDown ['8', 'DPT_1_BIT', '"up/down"']]
+    ['35' DPT_OpenClose ['9', 'DPT_1_BIT', '"open/close"']]
+    ['36' DPT_Start ['10', 'DPT_1_BIT', '"start/stop"']]
+    ['37' DPT_State ['11', 'DPT_1_BIT', '"state"']]
+    ['38' DPT_Invert ['12', 'DPT_1_BIT', '"invert"']]
+    ['39' DPT_DimSendStyle ['13', 'DPT_1_BIT', '"dim send style"']]
+    ['40' DPT_InputSource ['14', 'DPT_1_BIT', '"input source"']]
+    ['41' DPT_Reset ['15', 'DPT_1_BIT', '"reset"']]
+    ['42' DPT_Ack ['16', 'DPT_1_BIT', '"acknowledge"']]
+    ['43' DPT_Trigger ['17', 'DPT_1_BIT', '"trigger"']]
+    ['44' DPT_Occupancy ['18', 'DPT_1_BIT', '"occupancy"']]
+    ['45' DPT_Window_Door ['19', 'DPT_1_BIT', '"window/door"']]
+    ['46' DPT_LogicalFunction ['21', 'DPT_1_BIT', '"logical function"']]
+    ['47' DPT_Scene_AB ['22', 'DPT_1_BIT', '"scene"']]
+    ['48' DPT_ShutterBlinds_Mode ['23', 'DPT_1_BIT', '"shutter/blinds mode"']]
+    ['49' DPT_DayNight ['24', 'DPT_1_BIT', '"day/night"']]
+    ['50' DPT_Heat_Cool ['100', 'DPT_1_BIT', '"cooling/heating"']]
+    ['51' DPT_Switch_Control ['1', 'DPT_1_BIT_CONTROLLED', '"switch control"']]
+    ['52' DPT_Bool_Control ['2', 'DPT_1_BIT_CONTROLLED', '"boolean control"']]
+    ['53' DPT_Enable_Control ['3', 'DPT_1_BIT_CONTROLLED', '"enable control"']]
+    ['54' DPT_Ramp_Control ['4', 'DPT_1_BIT_CONTROLLED', '"ramp control"']]
+    ['55' DPT_Alarm_Control ['5', 'DPT_1_BIT_CONTROLLED', '"alarm control"']]
+    ['56' DPT_BinaryValue_Control ['6', 'DPT_1_BIT_CONTROLLED', '"binary value control"']]
+    ['57' DPT_Step_Control ['7', 'DPT_1_BIT_CONTROLLED', '"step control"']]
+    ['58' DPT_Direction1_Control ['8', 'DPT_1_BIT_CONTROLLED', '"direction control 1"']]
+    ['59' DPT_Direction2_Control ['9', 'DPT_1_BIT_CONTROLLED', '"direction control 2"']]
+    ['60' DPT_Start_Control ['10', 'DPT_1_BIT_CONTROLLED', '"start control"']]
+    ['61' DPT_State_Control ['11', 'DPT_1_BIT_CONTROLLED', '"state control"']]
+    ['62' DPT_Invert_Control ['12', 'DPT_1_BIT_CONTROLLED', '"invert control"']]
+    ['63' DPT_Control_Dimming ['7', 'DPT_3_BIT_CONTROLLED', '"dimming control"']]
+    ['64' DPT_Control_Blinds ['8', 'DPT_3_BIT_CONTROLLED', '"blind control"']]
+    ['65' DPT_Char_ASCII ['1', 'DPT_CHARACTER', '"character (ASCII)"']]
+    ['66' DPT_Char_8859_1 ['2', 'DPT_CHARACTER', '"character (ISO 8859-1)"']]
+    ['67' DPT_Scaling ['1', 'DPT_8_BIT_UNSIGNED_VALUE', '"percentage (0..100%)"']]
+    ['68' DPT_Angle ['3', 'DPT_8_BIT_UNSIGNED_VALUE', '"angle (degrees)"']]
+    ['69' DPT_Percent_U8 ['4', 'DPT_8_BIT_UNSIGNED_VALUE', '"percentage (0..255%)"']]
+    ['70' DPT_DecimalFactor ['5', 'DPT_8_BIT_UNSIGNED_VALUE', '"ratio (0..255)"']]
+    ['71' DPT_Tariff ['6', 'DPT_8_BIT_UNSIGNED_VALUE', '"tariff (0..255)"']]
+    ['72' DPT_Value_1_Ucount ['10', 'DPT_8_BIT_UNSIGNED_VALUE', '"counter pulses (0..255)"']]
+    ['73' DPT_FanStage ['100', 'DPT_8_BIT_UNSIGNED_VALUE', '"fan stage (0..255)"']]
+    ['74' DPT_Percent_V8 ['1', 'DPT_8_BIT_SIGNED_VALUE', '"percentage (-128..127%)"']]
+    ['75' DPT_Value_1_Count ['10', 'DPT_8_BIT_SIGNED_VALUE', '"counter pulses (-128..127)"']]
+    ['76' DPT_Status_Mode3 ['20', 'DPT_8_BIT_SIGNED_VALUE', '"status with mode"']]
+    ['77' DPT_Value_2_Ucount ['1', 'DPT_2_BYTE_UNSIGNED_VALUE', '"pulses"']]
+    ['78' DPT_TimePeriodMsec ['2', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (ms)"']]
+    ['79' DPT_TimePeriod10Msec ['3', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (10 ms)"']]
+    ['80' DPT_TimePeriod100Msec ['4', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (100 ms)"']]
+    ['81' DPT_TimePeriodSec ['5', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (s)"']]
+    ['82' DPT_TimePeriodMin ['6', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (min)"']]
+    ['83' DPT_TimePeriodHrs ['7', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (h)"']]
+    ['84' DPT_PropDataType ['10', 'DPT_2_BYTE_UNSIGNED_VALUE', '"property data type"']]
+    ['85' DPT_Length_mm ['11', 'DPT_2_BYTE_UNSIGNED_VALUE', '"length (mm)"']]
+    ['86' DPT_UElCurrentmA ['12', 'DPT_2_BYTE_UNSIGNED_VALUE', '"current (mA)"']]
+    ['87' DPT_Brightness ['13', 'DPT_2_BYTE_UNSIGNED_VALUE', '"brightness (lux)"']]
+    ['88' DPT_Absolute_Colour_Temperature ['600', 'DPT_2_BYTE_UNSIGNED_VALUE', '"absolute colour temperature (K)"']]
+    ['89' DPT_Value_2_Count ['1', 'DPT_2_BYTE_SIGNED_VALUE', '"pulses difference"']]
+    ['90' DPT_DeltaTimeMsec ['2', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (ms)"']]
+    ['91' DPT_DeltaTime10Msec ['3', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag(10 ms)"']]
+    ['92' DPT_DeltaTime100Msec ['4', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (100 ms)"']]
+    ['93' DPT_DeltaTimeSec ['5', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (s)"']]
+    ['94' DPT_DeltaTimeMin ['6', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (min)"']]
+    ['95' DPT_DeltaTimeHrs ['7', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (h)"']]
+    ['96' DPT_Percent_V16 ['10', 'DPT_2_BYTE_SIGNED_VALUE', '"percentage difference (%)"']]
+    ['97' DPT_Rotation_Angle ['11', 'DPT_2_BYTE_SIGNED_VALUE', '"rotation angle (°)"']]
+    ['98' DPT_Length_m ['12', 'DPT_2_BYTE_SIGNED_VALUE', '"length (m)"']]
+    ['99' DPT_Value_Temp ['1', 'DPT_2_BYTE_FLOAT_VALUE', '"temperature (°C)"']]
+    ['100' DPT_Value_Tempd ['2', 'DPT_2_BYTE_FLOAT_VALUE', '"temperature difference (K)"']]
+    ['101' DPT_Value_Tempa ['3', 'DPT_2_BYTE_FLOAT_VALUE', '"kelvin/hour (K/h)"']]
+    ['102' DPT_Value_Lux ['4', 'DPT_2_BYTE_FLOAT_VALUE', '"lux (Lux)"']]
+    ['103' DPT_Value_Wsp ['5', 'DPT_2_BYTE_FLOAT_VALUE', '"speed (m/s)"']]
+    ['104' DPT_Value_Pres ['6', 'DPT_2_BYTE_FLOAT_VALUE', '"pressure (Pa)"']]
+    ['105' DPT_Value_Humidity ['7', 'DPT_2_BYTE_FLOAT_VALUE', '"humidity (%)"']]
+    ['106' DPT_Value_AirQuality ['8', 'DPT_2_BYTE_FLOAT_VALUE', '"parts/million (ppm)"']]
+    ['107' DPT_Value_AirFlow ['9', 'DPT_2_BYTE_FLOAT_VALUE', '"air flow (m³/h)"']]
+    ['108' DPT_Value_Time1 ['10', 'DPT_2_BYTE_FLOAT_VALUE', '"time (s)"']]
+    ['109' DPT_Value_Time2 ['11', 'DPT_2_BYTE_FLOAT_VALUE', '"time (ms)"']]
+    ['110' DPT_Value_Volt ['20', 'DPT_2_BYTE_FLOAT_VALUE', '"voltage (mV)"']]
+    ['111' DPT_Value_Curr ['21', 'DPT_2_BYTE_FLOAT_VALUE', '"current (mA)"']]
+    ['112' DPT_PowerDensity ['22', 'DPT_2_BYTE_FLOAT_VALUE', '"power density (W/m²)"']]
+    ['113' DPT_KelvinPerPercent ['23', 'DPT_2_BYTE_FLOAT_VALUE', '"kelvin/percent (K/%)"']]
+    ['114' DPT_Power ['24', 'DPT_2_BYTE_FLOAT_VALUE', '"power (kW)"']]
+    ['115' DPT_Value_Volume_Flow ['25', 'DPT_2_BYTE_FLOAT_VALUE', '"volume flow (l/h)"']]
+    ['116' DPT_Rain_Amount ['26', 'DPT_2_BYTE_FLOAT_VALUE', '"rain amount (l/m²)"']]
+    ['117' DPT_Value_Temp_F ['27', 'DPT_2_BYTE_FLOAT_VALUE', '"temperature (°F)"']]
+    ['118' DPT_Value_Wsp_kmh ['28', 'DPT_2_BYTE_FLOAT_VALUE', '"wind speed (km/h)"']]
+    ['119' DPT_Value_Absolute_Humidity ['29', 'DPT_2_BYTE_FLOAT_VALUE', '"absolute humidity (g/m³)"']]
+    ['120' DPT_Concentration_ygm3 ['30', 'DPT_2_BYTE_FLOAT_VALUE', '"concentration (µg/m³)"']]
+    ['121' DPT_Coefficient ['31', 'DPT_2_BYTE_FLOAT_VALUE', '"coefficient"']]
+    ['122' DPT_TimeOfDay ['1', 'DPT_TIME', '"time of day"']]
+    ['123' DPT_Date ['1', 'DPT_DATE', '"date"']]
+    ['124' DPT_Value_4_Ucount ['1', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter pulses (unsigned)"']]
+    ['125' DPT_LongTimePeriod_Sec ['100', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter timesec (s)"']]
+    ['126' DPT_LongTimePeriod_Min ['101', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter timemin (min)"']]
+    ['127' DPT_LongTimePeriod_Hrs ['102', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter timehrs (h)"']]
+    ['128' DPT_VolumeLiquid_Litre ['1200', 'DPT_4_BYTE_UNSIGNED_VALUE', '"volume liquid (l)"']]
+    ['129' DPT_Volume_m_3 ['1201', 'DPT_4_BYTE_UNSIGNED_VALUE', '"volume (m³)"']]
+    ['130' DPT_Value_4_Count ['1', 'DPT_4_BYTE_SIGNED_VALUE', '"counter pulses (signed)"']]
+    ['131' DPT_FlowRate_m3h ['2', 'DPT_4_BYTE_SIGNED_VALUE', '"flow rate (m³/h)"']]
+    ['132' DPT_ActiveEnergy ['10', 'DPT_4_BYTE_SIGNED_VALUE', '"active energy (Wh)"']]
+    ['133' DPT_ApparantEnergy ['11', 'DPT_4_BYTE_SIGNED_VALUE', '"apparant energy (VAh)"']]
+    ['134' DPT_ReactiveEnergy ['12', 'DPT_4_BYTE_SIGNED_VALUE', '"reactive energy (VARh)"']]
+    ['135' DPT_ActiveEnergy_kWh ['13', 'DPT_4_BYTE_SIGNED_VALUE', '"active energy (kWh)"']]
+    ['136' DPT_ApparantEnergy_kVAh ['14', 'DPT_4_BYTE_SIGNED_VALUE', '"apparant energy (kVAh)"']]
+    ['137' DPT_ReactiveEnergy_kVARh ['15', 'DPT_4_BYTE_SIGNED_VALUE', '"reactive energy (kVARh)"']]
+    ['138' DPT_ActiveEnergy_MWh ['16', 'DPT_4_BYTE_SIGNED_VALUE', '"active energy (MWh)"']]
+    ['139' DPT_LongDeltaTimeSec ['100', 'DPT_4_BYTE_SIGNED_VALUE', '"time lag (s)"']]
+    ['140' DPT_DeltaVolumeLiquid_Litre  ['1200', 'DPT_4_BYTE_SIGNED_VALUE', '"delta volume liquid (l)"']]
+    ['141' DPT_DeltaVolume_m_3 ['1201', 'DPT_4_BYTE_SIGNED_VALUE', '"delta volume (m³)"']]
+    ['142' DPT_Value_Acceleration ['0', 'DPT_4_BYTE_FLOAT_VALUE', '"acceleration (m/s²)"']]
+    ['143' DPT_Value_Acceleration_Angular ['1', 'DPT_4_BYTE_FLOAT_VALUE', '"angular acceleration (rad/s²)"']]
+    ['144' DPT_Value_Activation_Energy ['2', 'DPT_4_BYTE_FLOAT_VALUE', '"activation energy (J/mol)"']]
+    ['145' DPT_Value_Activity ['3', 'DPT_4_BYTE_FLOAT_VALUE', '"radioactive activity (1/s)"']]
+    ['146' DPT_Value_Mol ['4', 'DPT_4_BYTE_FLOAT_VALUE', '"amount of substance (mol)"']]
+    ['147' DPT_Value_Amplitude ['5', 'DPT_4_BYTE_FLOAT_VALUE', '"amplitude"']]
+    ['148' DPT_Value_AngleRad ['6', 'DPT_4_BYTE_FLOAT_VALUE', '"angle (radiant)"']]
+    ['149' DPT_Value_AngleDeg ['7', 'DPT_4_BYTE_FLOAT_VALUE', '"angle (degree)"']]
+    ['150' DPT_Value_Angular_Momentum ['8', 'DPT_4_BYTE_FLOAT_VALUE', '"angular momentum (Js)"']]
+    ['151' DPT_Value_Angular_Velocity ['9', 'DPT_4_BYTE_FLOAT_VALUE', '"angular velocity (rad/s)"']]
+    ['152' DPT_Value_Area ['10', 'DPT_4_BYTE_FLOAT_VALUE', '"area (m*m)"']]
+    ['153' DPT_Value_Capacitance ['11', 'DPT_4_BYTE_FLOAT_VALUE', '"capacitance (F)"']]
+    ['154' DPT_Value_Charge_DensitySurface ['12', 'DPT_4_BYTE_FLOAT_VALUE', '"flux density (C/m²)"']]
+    ['155' DPT_Value_Charge_DensityVolume ['13', 'DPT_4_BYTE_FLOAT_VALUE', '"charge density (C/m³)"']]
+    ['156' DPT_Value_Compressibility ['14', 'DPT_4_BYTE_FLOAT_VALUE', '"compressibility (m²/N)"']]
+    ['157' DPT_Value_Conductance ['15', 'DPT_4_BYTE_FLOAT_VALUE', '"conductance (S)"']]
+    ['158' DPT_Value_Electrical_Conductivity ['16', 'DPT_4_BYTE_FLOAT_VALUE', '"conductivity  (S/m)"']]
+    ['159' DPT_Value_Density ['17', 'DPT_4_BYTE_FLOAT_VALUE', '"density (kg/m³)"']]
+    ['160' DPT_Value_Electric_Charge ['18', 'DPT_4_BYTE_FLOAT_VALUE', '"electric charge (C)"']]
+    ['161' DPT_Value_Electric_Current ['19', 'DPT_4_BYTE_FLOAT_VALUE', '"electric current (A)"']]
+    ['162' DPT_Value_Electric_CurrentDensity ['20', 'DPT_4_BYTE_FLOAT_VALUE', '"electric current density (A/m²)"']]
+    ['163' DPT_Value_Electric_DipoleMoment ['21', 'DPT_4_BYTE_FLOAT_VALUE', '"electric dipole moment (Cm)"']]
+    ['164' DPT_Value_Electric_Displacement ['22', 'DPT_4_BYTE_FLOAT_VALUE', '"electric displacement (C/m²)"']]
+    ['165' DPT_Value_Electric_FieldStrength ['23', 'DPT_4_BYTE_FLOAT_VALUE', '"electric field strength (V/m)"']]
+    ['166' DPT_Value_Electric_Flux ['24', 'DPT_4_BYTE_FLOAT_VALUE', '"electric flux (C)"']]
+    ['167' DPT_Value_Electric_FluxDensity ['25', 'DPT_4_BYTE_FLOAT_VALUE', '"electric flux density (C/m²)"']]
+    ['168' DPT_Value_Electric_Polarization ['26', 'DPT_4_BYTE_FLOAT_VALUE', '"electric polarization (C/m²)"']]
+    ['169' DPT_Value_Electric_Potential ['27', 'DPT_4_BYTE_FLOAT_VALUE', '"electric potential (V)"']]
+    ['170' DPT_Value_Electric_PotentialDifference ['28', 'DPT_4_BYTE_FLOAT_VALUE', '"electric potential difference (V)"']]
+    ['171' DPT_Value_ElectromagneticMoment ['29', 'DPT_4_BYTE_FLOAT_VALUE', '"electromagnetic moment (Am²)"']]
+    ['172' DPT_Value_Electromotive_Force ['30', 'DPT_4_BYTE_FLOAT_VALUE', '"electromotive force (V)"']]
+    ['173' DPT_Value_Energy ['31', 'DPT_4_BYTE_FLOAT_VALUE', '"energy (J)"']]
+    ['174' DPT_Value_Force ['32', 'DPT_4_BYTE_FLOAT_VALUE', '"force (N)"']]
+    ['175' DPT_Value_Frequency ['33', 'DPT_4_BYTE_FLOAT_VALUE', '"frequency (Hz)"']]
+    ['176' DPT_Value_Angular_Frequency ['34', 'DPT_4_BYTE_FLOAT_VALUE', '"angular frequency (rad/s)"']]
+    ['177' DPT_Value_Heat_Capacity ['35', 'DPT_4_BYTE_FLOAT_VALUE', '"heat capacity (J/K)"']]
+    ['178' DPT_Value_Heat_FlowRate ['36', 'DPT_4_BYTE_FLOAT_VALUE', '"heat flow rate (W)"']]
+    ['179' DPT_Value_Heat_Quantity ['37', 'DPT_4_BYTE_FLOAT_VALUE', '"heat quantity"']]
+    ['180' DPT_Value_Impedance ['38', 'DPT_4_BYTE_FLOAT_VALUE', '"impedance (Ω)"']]
+    ['181' DPT_Value_Length ['39', 'DPT_4_BYTE_FLOAT_VALUE', '"length (m)"']]
+    ['182' DPT_Value_Light_Quantity ['40', 'DPT_4_BYTE_FLOAT_VALUE', '"light quantity (J)"']]
+    ['183' DPT_Value_Luminance ['41', 'DPT_4_BYTE_FLOAT_VALUE', '"luminance (cd/m²)"']]
+    ['184' DPT_Value_Luminous_Flux ['42', 'DPT_4_BYTE_FLOAT_VALUE', '"luminous flux (lm)"']]
+    ['185' DPT_Value_Luminous_Intensity ['43', 'DPT_4_BYTE_FLOAT_VALUE', '"luminous intensity (cd)"']]
+    ['186' DPT_Value_Magnetic_FieldStrength ['44', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic field strength (A/m)"']]
+    ['187' DPT_Value_Magnetic_Flux ['45', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic flux (Wb)"']]
+    ['188' DPT_Value_Magnetic_FluxDensity ['46', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic flux density (T)"']]
+    ['189' DPT_Value_Magnetic_Moment ['47', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic moment (Am²)"']]
+    ['190' DPT_Value_Magnetic_Polarization ['48', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic polarization (T)"']]
+    ['191' DPT_Value_Magnetization ['49', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetization (A/m)"']]
+    ['192' DPT_Value_MagnetomotiveForce ['50', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetomotive force (A)"']]
+    ['193' DPT_Value_Mass ['51', 'DPT_4_BYTE_FLOAT_VALUE', '"mass (kg)"']]
+    ['194' DPT_Value_MassFlux ['52', 'DPT_4_BYTE_FLOAT_VALUE', '"mass flux (kg/s)"']]
+    ['195' DPT_Value_Momentum ['53', 'DPT_4_BYTE_FLOAT_VALUE', '"momentum (N/s)"']]
+    ['196' DPT_Value_Phase_AngleRad ['54', 'DPT_4_BYTE_FLOAT_VALUE', '"phase angle (rad)"']]
+    ['197' DPT_Value_Phase_AngleDeg ['55', 'DPT_4_BYTE_FLOAT_VALUE', '"phase angle (°)"']]
+    ['198' DPT_Value_Power ['56', 'DPT_4_BYTE_FLOAT_VALUE', '"power (W)"']]
+    ['199' DPT_Value_Power_Factor ['57', 'DPT_4_BYTE_FLOAT_VALUE', '"power factor (cos Φ)"']]
+    ['200' DPT_Value_Pressure ['58', 'DPT_4_BYTE_FLOAT_VALUE', '"pressure (Pa)"']]
+    ['201' DPT_Value_Reactance ['59', 'DPT_4_BYTE_FLOAT_VALUE', '"reactance (Ω)"']]
+    ['202' DPT_Value_Resistance ['60', 'DPT_4_BYTE_FLOAT_VALUE', '"resistance (Ω)"']]
+    ['203' DPT_Value_Resistivity ['61', 'DPT_4_BYTE_FLOAT_VALUE', '"resistivity (Ωm)"']]
+    ['204' DPT_Value_SelfInductance ['62', 'DPT_4_BYTE_FLOAT_VALUE', '"self inductance (H)"']]
+    ['205' DPT_Value_SolidAngle ['63', 'DPT_4_BYTE_FLOAT_VALUE', '"solid angle (sr)"']]
+    ['206' DPT_Value_Sound_Intensity ['64', 'DPT_4_BYTE_FLOAT_VALUE', '"sound intensity (W/m²)"']]
+    ['207' DPT_Value_Speed ['65', 'DPT_4_BYTE_FLOAT_VALUE', '"speed (m/s)"']]
+    ['208' DPT_Value_Stress ['66', 'DPT_4_BYTE_FLOAT_VALUE', '"stress (Pa)"']]
+    ['209' DPT_Value_Surface_Tension ['67', 'DPT_4_BYTE_FLOAT_VALUE', '"surface tension (N/m)"']]
+    ['210' DPT_Value_Common_Temperature ['68', 'DPT_4_BYTE_FLOAT_VALUE', '"temperature (°C)"']]
+    ['211' DPT_Value_Absolute_Temperature ['69', 'DPT_4_BYTE_FLOAT_VALUE', '"temperature absolute (K)"']]
+    ['212' DPT_Value_TemperatureDifference ['70', 'DPT_4_BYTE_FLOAT_VALUE', '"temperature difference (K)"']]
+    ['213' DPT_Value_Thermal_Capacity ['71', 'DPT_4_BYTE_FLOAT_VALUE', '"thermal capacity (J/K)"']]
+    ['214' DPT_Value_Thermal_Conductivity ['72', 'DPT_4_BYTE_FLOAT_VALUE', '"thermal conductivity (W/mK)"']]
+    ['215' DPT_Value_ThermoelectricPower ['73', 'DPT_4_BYTE_FLOAT_VALUE', '"thermoelectric power (V/K)"']]
+    ['216' DPT_Value_Time ['74', 'DPT_4_BYTE_FLOAT_VALUE', '"time (s)"']]
+    ['217' DPT_Value_Torque ['75', 'DPT_4_BYTE_FLOAT_VALUE', '"torque (Nm)"']]
+    ['218' DPT_Value_Volume ['76', 'DPT_4_BYTE_FLOAT_VALUE', '"volume (m³)"']]
+    ['219' DPT_Value_Volume_Flux ['77', 'DPT_4_BYTE_FLOAT_VALUE', '"volume flux (m³/s)"']]
+    ['220' DPT_Value_Weight ['78', 'DPT_4_BYTE_FLOAT_VALUE', '"weight (N)"']]
+    ['221' DPT_Value_Work ['79', 'DPT_4_BYTE_FLOAT_VALUE', '"work (J)"']]
+    ['222' DPT_Value_ApparentPower ['80', 'DPT_4_BYTE_FLOAT_VALUE', '"apparent power (VA)"']]
+    ['223' DPT_Volume_Flux_Meter ['1200', 'DPT_4_BYTE_FLOAT_VALUE', '"volume flux for meters (m³/h)"']]
+    ['224' DPT_Volume_Flux_ls ['1201', 'DPT_4_BYTE_FLOAT_VALUE', '"volume flux for meters (1/ls)"']]
+    ['225' DPT_Access_Data ['0', 'DPT_ENTRANCE_ACCESS', '"entrance access"']]
+    ['226' DPT_String_ASCII ['0', 'DPT_CHARACTER_STRING', '"Character String (ASCII)"']]
+    ['227' DPT_String_8859_1 ['1', 'DPT_CHARACTER_STRING', '"Character String (ISO 8859-1)"']]
+    ['228' DPT_SceneNumber ['1', 'DPT_SCENE_NUMBER', '"scene number"']]
+    ['229' DPT_SceneControl ['1', 'DPT_SCENE_CONTROL', '"scene control"']]
+    ['230' DPT_DateTime ['1', 'DPT_DATE_TIME', '"date time"']]
+    ['231' DPT_SCLOMode ['1', 'DPT_1_BYTE', '"SCLO mode"']]
+    ['232' DPT_BuildingMode ['2', 'DPT_1_BYTE', '"building mode"']]
+    ['233' DPT_OccMode ['3', 'DPT_1_BYTE', '"occupied"']]
+    ['234' DPT_Priority ['4', 'DPT_1_BYTE', '"priority"']]
+    ['235' DPT_LightApplicationMode ['5', 'DPT_1_BYTE', '"light application mode"']]
+    ['236' DPT_ApplicationArea ['6', 'DPT_1_BYTE', '"light application area"']]
+    ['237' DPT_AlarmClassType ['7', 'DPT_1_BYTE', '"alarm class"']]
+    ['238' DPT_PSUMode ['8', 'DPT_1_BYTE', '"PSU mode"']]
+    ['239' DPT_ErrorClass_System ['11', 'DPT_1_BYTE', '"system error class"']]
+    ['240' DPT_ErrorClass_HVAC ['12', 'DPT_1_BYTE', '"HVAC error class"']]
+    ['241' DPT_Time_Delay ['13', 'DPT_1_BYTE', '"time delay"']]
+    ['242' DPT_Beaufort_Wind_Force_Scale ['14', 'DPT_1_BYTE', '"wind force scale (0..12)"']]
+    ['243' DPT_SensorSelect ['17', 'DPT_1_BYTE', '"sensor mode"']]
+    ['244' DPT_ActuatorConnectType ['20', 'DPT_1_BYTE', '"actuator connect type"']]
+    ['245' DPT_Cloud_Cover ['21', 'DPT_1_BYTE', '"cloud cover"']]
+    ['246' DPT_PowerReturnMode ['22', 'DPT_1_BYTE', '"power return mode"']]
+    ['247' DPT_FuelType ['100', 'DPT_1_BYTE', '"fuel type"']]
+    ['248' DPT_BurnerType ['101', 'DPT_1_BYTE', '"burner type"']]
+    ['249' DPT_HVACMode ['102', 'DPT_1_BYTE', '"HVAC mode"']]
+    ['250' DPT_DHWMode ['103', 'DPT_1_BYTE', '"DHW mode"']]
+    ['251' DPT_LoadPriority ['104', 'DPT_1_BYTE', '"load priority"']]
+    ['252' DPT_HVACContrMode ['105', 'DPT_1_BYTE', '"HVAC control mode"']]
+    ['253' DPT_HVACEmergMode ['106', 'DPT_1_BYTE', '"HVAC emergency mode"']]
+    ['254' DPT_ChangeoverMode ['107', 'DPT_1_BYTE', '"changeover mode"']]
+    ['255' DPT_ValveMode ['108', 'DPT_1_BYTE', '"valve mode"']]
+    ['256' DPT_DamperMode ['109', 'DPT_1_BYTE', '"damper mode"']]
+    ['257' DPT_HeaterMode ['110', 'DPT_1_BYTE', '"heater mode"']]
+    ['258' DPT_FanMode ['111', 'DPT_1_BYTE', '"fan mode"']]
+    ['259' DPT_MasterSlaveMode ['112', 'DPT_1_BYTE', '"master/slave mode"']]
+    ['260' DPT_StatusRoomSetp ['113', 'DPT_1_BYTE', '"status room setpoint"']]
+    ['261' DPT_Metering_DeviceType ['114', 'DPT_1_BYTE', '"metering device type"']]
+    ['262' DPT_HumDehumMode ['115', 'DPT_1_BYTE', '"hum dehum mode"']]
+    ['263' DPT_EnableHCStage ['116', 'DPT_1_BYTE', '"enable H/C stage"']]
+    ['264' DPT_ADAType ['120', 'DPT_1_BYTE', '"ADA type"']]
+    ['265' DPT_BackupMode ['121', 'DPT_1_BYTE', '"backup mode"']]
+    ['266' DPT_StartSynchronization ['122', 'DPT_1_BYTE', '"start syncronization type"']]
+    ['267' DPT_Behaviour_Lock_Unlock ['600', 'DPT_1_BYTE', '"behavior lock/unlock"']]
+    ['268' DPT_Behaviour_Bus_Power_Up_Down ['601', 'DPT_1_BYTE', '"behavior bus power up/down"']]
+    ['269' DPT_DALI_Fade_Time ['602', 'DPT_1_BYTE', '"dali fade time"']]
+    ['270' DPT_BlinkingMode ['603', 'DPT_1_BYTE', '"blink mode"']]
+    ['271' DPT_LightControlMode ['604', 'DPT_1_BYTE', '"light control mode"']]
+    ['272' DPT_SwitchPBModel ['605', 'DPT_1_BYTE', '"PB switch mode"']]
+    ['273' DPT_PBAction ['606', 'DPT_1_BYTE', '"PB action mode"']]
+    ['274' DPT_DimmPBModel ['607', 'DPT_1_BYTE', '"PB dimm mode"']]
+    ['275' DPT_SwitchOnMode ['608', 'DPT_1_BYTE', '"switch on mode"']]
+    ['276' DPT_LoadTypeSet ['609', 'DPT_1_BYTE', '"load type"']]
+    ['277' DPT_LoadTypeDetected ['610', 'DPT_1_BYTE', '"load type detection"']]
+    ['278' DPT_Converter_Test_Control ['611', 'DPT_1_BYTE', '"converter test control"']]
+    ['279' DPT_SABExcept_Behaviour ['801', 'DPT_1_BYTE', '"SAB except behavior"']]
+    ['280' DPT_SABBehaviour_Lock_Unlock ['802', 'DPT_1_BYTE', '"SAB behavior on lock/unlock"']]
+    ['281' DPT_SSSBMode ['803', 'DPT_1_BYTE', '"SSSB mode"']]
+    ['282' DPT_BlindsControlMode ['804', 'DPT_1_BYTE', '"blinds control mode"']]
+    ['283' DPT_CommMode ['1000', 'DPT_1_BYTE', '"communication mode"']]
+    ['284' DPT_AddInfoTypes ['1001', 'DPT_1_BYTE', '"additional information type"']]
+    ['285' DPT_RF_ModeSelect ['1002', 'DPT_1_BYTE', '"RF mode selection"']]
+    ['286' DPT_RF_FilterSelect ['1003', 'DPT_1_BYTE', '"RF filter mode selection"']]
+    ['287' DPT_StatusGen ['1', 'DPT_8_BIT_SET', '"general status"']]
+    ['288' DPT_Device_Control ['2', 'DPT_8_BIT_SET', '"device control"']]
+    ['289' DPT_ForceSign ['100', 'DPT_8_BIT_SET', '"forcing signal"']]
+    ['290' DPT_ForceSignCool ['101', 'DPT_8_BIT_SET', '"forcing signal cool"']]
+    ['291' DPT_StatusRHC ['102', 'DPT_8_BIT_SET', '"room heating controller status"']]
+    ['292' DPT_StatusSDHWC ['103', 'DPT_8_BIT_SET', '"solar DHW controller status"']]
+    ['293' DPT_FuelTypeSet ['104', 'DPT_8_BIT_SET', '"fuel type set"']]
+    ['294' DPT_StatusRCC ['105', 'DPT_8_BIT_SET', '"room cooling controller status"']]
+    ['295' DPT_StatusAHU ['106', 'DPT_8_BIT_SET', '"ventilation controller status"']]
+    ['296' DPT_CombinedStatus_RTSM ['107', 'DPT_8_BIT_SET', '"combined status RTSM"']]
+    ['297' DPT_LightActuatorErrorInfo ['601', 'DPT_8_BIT_SET', '"lighting actuator error information"']]
+    ['298' DPT_RF_ModeInfo ['1000', 'DPT_8_BIT_SET', '"RF communication mode info"']]
+    ['299' DPT_RF_FilterInfo ['1001', 'DPT_8_BIT_SET', '"cEMI server supported RF filtering modes"']]
+    ['300' DPT_Channel_Activation_8 ['1010', 'DPT_8_BIT_SET', '"channel activation for 8 channels"']]
+    ['301' DPT_StatusDHWC ['100', 'DPT_16_BIT_SET', '"DHW controller status"']]
+    ['302' DPT_StatusRHCC ['101', 'DPT_16_BIT_SET', '"RHCC status"']]
+    ['303' DPT_CombinedStatus_HVA ['102', 'DPT_16_BIT_SET', '"combined status HVA"']]
+    ['304' DPT_CombinedStatus_RTC ['103', 'DPT_16_BIT_SET', '"combined status RTC"']]
+    ['305' DPT_Media ['1000', 'DPT_16_BIT_SET', '"media"']]
+    ['306' DPT_Channel_Activation_16 ['1010', 'DPT_16_BIT_SET', '"channel activation for 16 channels"']]
+    ['307' DPT_OnOffAction ['1', 'DPT_2_BIT_SET', '"on/off action"']]
+    ['308' DPT_Alarm_Reaction ['2', 'DPT_2_BIT_SET', '"alarm reaction"']]
+    ['309' DPT_UpDown_Action ['3', 'DPT_2_BIT_SET', '"up/down action"']]
+    ['310' DPT_HVAC_PB_Action ['102', 'DPT_2_BIT_SET', '"HVAC push button action"']]
+    ['311' DPT_DoubleNibble ['1000', 'DPT_2_NIBBLE_SET', '"busy/nak repetitions"']]
+    ['312' DPT_SceneInfo ['1', 'DPT_8_BIT_SET_2', '"scene information"']]
+    ['313' DPT_CombinedInfoOnOff ['1', 'DPT_32_BIT_SET', '"bit-combined info on/off"']]
+    ['314' DPT_ActiveEnergy_V64 ['10', 'DPT_ELECTRICAL_ENERGY', '"active energy (Wh)"']]
+    ['315' DPT_ApparantEnergy_V64 ['11', 'DPT_ELECTRICAL_ENERGY', '"apparant energy (VAh)"']]
+    ['316' DPT_ReactiveEnergy_V64 ['12', 'DPT_ELECTRICAL_ENERGY', '"reactive energy (VARh)"']]
+    ['317' DPT_Channel_Activation_24 ['1010', 'DPT_24_TIMES_CHANNEL_ACTIVATION', '"activation state 0..23"']]
+    ['318' DPT_HVACModeNext ['100', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & HVAC mode"']]
+    ['319' DPT_DHWModeNext ['102', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & DHW mode"']]
+    ['320' DPT_OccModeNext ['104', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & occupancy mode"']]
+    ['321' DPT_BuildingModeNext ['105', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & building mode"']]
+    ['322' DPT_StatusLightingActuator ['600', 'DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"Status Lighting Actuator"']]
+    ['323' DPT_Version ['1', 'DPT_DATAPOINT_TYPE_VERSION', '"DPT version"']]
+    ['324' DPT_AlarmInfo ['1', 'DPT_ALARM_INFO', '"alarm info"']]
+    ['325' DPT_TempRoomSetpSetF16_3 ['100', 'DPT_3X_2_BYTE_FLOAT_VALUE', '"room temperature setpoint"']]
+    ['326' DPT_TempRoomSetpSetShiftF16_3 ['101', 'DPT_3X_2_BYTE_FLOAT_VALUE', '"room temperature setpoint shift"']]
+    ['327' DPT_Scaling_Speed ['1', 'DPT_SCALING_SPEED', '"scaling speed"']]
+    ['328' DPT_Scaling_Step_Time ['2', 'DPT_SCALING_SPEED', '"scaling step time"']]
+    ['329' DPT_MeteringValue ['1', 'DPT_4_1_1_BYTE_COMBINED_INFORMATION', '"metering value (value,encoding,cmd)"']]
+    ['330' DPT_MBus_Address ['1000', 'DPT_MBUS_ADDRESS', '"MBus address"']]
+    ['331' DPT_Colour_RGB ['600', 'DPT_3_BYTE_COLOUR_RGB', '"RGB value 3x(0..255)"']]
+    ['332' DPT_LanguageCodeAlpha2_ASCII ['1', 'DPT_LANGUAGE_CODE_ISO_639_1', '"language code (ASCII)"']]
+    ['333' DPT_Tariff_ActiveEnergy ['1', 'DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY', '"electrical energy with tariff"']]
+    ['334' DPT_Prioritised_Mode_Control ['1', 'DPT_PRIORITISED_MODE_CONTROL', '"priority control"']]
+    ['335' DPT_DALI_Control_Gear_Diagnostic ['600', 'DPT_CONFIGURATION_DIAGNOSTICS_16_BIT', '"diagnostic value"']]
+    ['336' DPT_DALI_Diagnostics ['600', 'DPT_CONFIGURATION_DIAGNOSTICS_8_BIT', '"diagnostic value"']]
+    ['337' DPT_CombinedPosition ['800', 'DPT_POSITIONS', '"combined position"']]
+    ['338' DPT_StatusSAB ['800', 'DPT_STATUS_32_BIT', '"status sunblind & shutter actuator"']]
+    ['339' DPT_Colour_xyY ['600', 'DPT_STATUS_48_BIT', '"colour xyY"']]
+    ['340' DPT_Converter_Status ['600', 'DPT_CONVERTER_STATUS', '"DALI converter status"']]
+    ['341' DPT_Converter_Test_Result ['600', 'DPT_CONVERTER_TEST_RESULT', '"DALI converter test result"']]
+    ['342' DPT_Battery_Info ['600', 'DPT_BATTERY_INFORMATION', '"Battery Information"']]
+    ['343' DPT_Brightness_Colour_Temperature_Transition ['600', 'DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION', '"brightness colour temperature transition"']]
+    ['344' DPT_Brightness_Colour_Temperature_Control ['600', 'DPT_STATUS_24_BIT', '"brightness colour temperature control"']]
+    ['345' DPT_Colour_RGBW ['600', 'DPT_COLOUR_RGBW', '"RGBW value 4x(0..100%)"']]
+    ['346' DPT_Relative_Control_RGBW ['600', 'DPT_RELATIVE_CONTROL_RGBW', '"RGBW relative control"']]
+    ['347' DPT_Relative_Control_RGB ['600', 'DPT_RELATIVE_CONTROL_RGB', '"RGB relative control"']]
+    ['348' DPT_GeographicalLocation ['1', 'DPT_F32F32', '"geographical location (longitude and latitude) expressed in degrees"']]
+    ['349' DPT_TempRoomSetpSetF16_4 ['100', 'DPT_F16F16F16F16', '"Temperature setpoint setting for 4 HVAC Modes"']]
+    ['350' DPT_TempRoomSetpSetShiftF16_4 ['101', 'DPT_F16F16F16F16', '"Temperature setpoint shift setting for 4 HVAC Modes"']]
+    
+]
+
+[enum uint 16 KnxInterfaceObjectType(string 8 code, string 8 name)
+    ['0' OT_UNKNOWN ['U', '"Unknown Interface Object Type"']]
+    ['1' OT_GENERAL ['G', '"General Interface Object Type"']]
+    ['2' OT_DEVICE ['0', '"Device Object"']]
+    ['3' OT_ADDRESS_TABLE ['1', '"Addresstable Object"']]
+    ['4' OT_ASSOCIATION_TABLE ['2', '"Associationtable Object"']]
+    ['5' OT_APPLICATION_PROGRAM ['3', '"Applicationprogram Object"']]
+    ['6' OT_INTERACE_PROGRAM ['4', '"Interfaceprogram Object"']]
+    ['7' OT_EIBOBJECT_ASSOCIATATION_TABLE ['5', '"KNX-Object Associationtable Object"']]
+    ['8' OT_ROUTER ['6', '"Router Object"']]
+    ['9' OT_LTE_ADDRESS_ROUTING_TABLE ['7', '"LTE Address Routing Table Object"']]
+    ['10' OT_CEMI_SERVER ['8', '"cEMI Server Object"']]
+    ['11' OT_GROUP_OBJECT_TABLE ['9', '"Group Object Table Object"']]
+    ['12' OT_POLLING_MASTER ['10', '"Polling Master"']]
+    ['13' OT_KNXIP_PARAMETER ['11', '"KNXnet/IP Parameter Object"']]
+    ['14' OT_FILE_SERVER ['13', '"File Server Object"']]
+    ['15' OT_SECURITY ['17', '"Security Object"']]
+    ['16' OT_RF_MEDIUM ['19', '"RF Medium Object"']]
+    ['17' OT_INDOOR_BRIGHTNESS_SENSOR ['409', '"Indoor Brightness Sensor"']]
+    ['18' OT_INDOOR_LUMINANCE_SENSOR ['410', '"Indoor Luminance Sensor"']]
+    ['19' OT_LIGHT_SWITCHING_ACTUATOR_BASIC ['417', '"Light Switching Actuator Basic"']]
+    ['20' OT_DIMMING_ACTUATOR_BASIC ['418', '"Dimming Actuator Basic"']]
+    ['21' OT_DIMMING_SENSOR_BASIC ['420', '"Dimming   Sensor Basic"']]
+    ['22' OT_SWITCHING_SENSOR_BASIC ['421', '"Switching Sensor Basic"']]
+    ['23' OT_SUNBLIND_ACTUATOR_BASIC ['800', '"Sunblind Actuator Basic"']]
+    ['24' OT_SUNBLIND_SENSOR_BASIC ['801', '"Sunblind Sensor Basic"']]
+    
+]
+
+[enum uint 32 KnxInterfaceObjectProperty(uint 8 propertyId, KnxInterfaceObjectType objectType, KnxPropertyDataType propertyDataType, string 8 name)
+    ['0' PID_UNKNOWN    ['0', 'OT_UNKNOWN', 'PDT_UNKNOWN', '"Unknown Interface Object Property"']]
+    ['1' PID_GENERAL_OBJECT_TYPE ['1', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Interface Object Type"']]
+    ['2' PID_GENERAL_OBJECT_NAME ['2', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Interface Object Name"']]
+    ['3' PID_GENERAL_SEMAPHOR ['3', 'OT_GENERAL', 'PDT_UNKNOWN', '"Semaphor"']]
+    ['4' PID_GENERAL_GROUP_OBJECT_REFERENCE ['4', 'OT_GENERAL', 'PDT_UNKNOWN', '"Group Object Reference"']]
+    ['5' PID_GENERAL_LOAD_STATE_CONTROL ['5', 'OT_GENERAL', 'PDT_CONTROL', '"Load Control"']]
+    ['6' PID_GENERAL_RUN_STATE_CONTROL ['6', 'OT_GENERAL', 'PDT_CONTROL', '"Run Control"']]
+    ['7' PID_GENERAL_TABLE_REFERENCE ['7', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Table Reference"']]
+    ['8' PID_GENERAL_SERVICE_CONTROL ['8', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Service Control"']]
+    ['9' PID_GENERAL_FIRMWARE_REVISION ['9', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Firmware Revision"']]
+    ['10' PID_GENERAL_SERVICES_SUPPORTED ['10', 'OT_GENERAL', 'PDT_UNKNOWN', '"Services Supported"']]
+    ['11' PID_GENERAL_SERIAL_NUMBER ['11', 'OT_GENERAL', 'PDT_GENERIC_06', '"KNX Serial Number"']]
+    ['12' PID_GENERAL_MANUFACTURER_ID ['12', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Manufacturer Identifier"']]
+    ['13' PID_GENERAL_PROGRAM_VERSION ['13', 'OT_GENERAL', 'PDT_GENERIC_05', '"Application Version"']]
+    ['14' PID_GENERAL_DEVICE_CONTROL ['14', 'OT_GENERAL', 'PDT_BITSET8', '"Device Control"']]
+    ['15' PID_GENERAL_ORDER_INFO ['15', 'OT_GENERAL', 'PDT_GENERIC_10', '"Order Info"']]
+    ['16' PID_GENERAL_PEI_TYPE ['16', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"PEI Type"']]
+    ['17' PID_GENERAL_PORT_CONFIGURATION ['17', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"PortADDR"']]
+    ['18' PID_GENERAL_POLL_GROUP_SETTINGS ['18', 'OT_GENERAL', 'PDT_POLL_GROUP_SETTINGS', '"Polling Group Settings"']]
+    ['19' PID_GENERAL_MANUFACTURER_DATA ['19', 'OT_GENERAL', 'PDT_GENERIC_04', '"Manufacturer Data"']]
+    ['20' PID_GENERAL_ENABLE ['20', 'OT_GENERAL', 'PDT_UNKNOWN', '""']]
+    ['21' PID_GENERAL_DESCRIPTION ['21', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Description"']]
+    ['22' PID_GENERAL_FILE ['22', 'OT_GENERAL', 'PDT_UNKNOWN', '""']]
+    ['23' PID_GENERAL_TABLE ['23', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Table"']]
+    ['24' PID_GENERAL_ENROL ['24', 'OT_GENERAL', 'PDT_FUNCTION', '"Interface Object Link"']]
+    ['25' PID_GENERAL_VERSION ['25', 'OT_GENERAL', 'PDT_VERSION', '"Version"']]
+    ['26' PID_GENERAL_GROUP_OBJECT_LINK ['26', 'OT_GENERAL', 'PDT_FUNCTION', '"Group Address Assignment"']]
+    ['27' PID_GENERAL_MCB_TABLE ['27', 'OT_GENERAL', 'PDT_GENERIC_08', '"Memory Control Table"']]
+    ['28' PID_GENERAL_ERROR_CODE ['28', 'OT_GENERAL', 'PDT_GENERIC_01', '"Error Code"']]
+    ['29' PID_GENERAL_OBJECT_INDEX ['29', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Object Index"']]
+    ['30' PID_GENERAL_DOWNLOAD_COUNTER ['30', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Download Counter"']]
+    ['31' PID_DEVICE_ROUTING_COUNT ['51', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Routing Count"']]
+    ['32' PID_DEVICE_MAX_RETRY_COUNT ['52', 'OT_DEVICE', 'PDT_GENERIC_01', '"Maximum Retry Count"']]
+    ['33' PID_DEVICE_ERROR_FLAGS ['53', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Error Flags"']]
+    ['34' PID_DEVICE_PROGMODE ['54', 'OT_DEVICE', 'PDT_BITSET8', '"Programming Mode"']]
+    ['35' PID_DEVICE_PRODUCT_ID ['55', 'OT_DEVICE', 'PDT_GENERIC_10', '"Product Identification"']]
+    ['36' PID_DEVICE_MAX_APDULENGTH ['56', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '"Max. APDU-Length"']]
+    ['37' PID_DEVICE_SUBNET_ADDR ['57', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Subnetwork Address"']]
+    ['38' PID_DEVICE_DEVICE_ADDR ['58', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Device Address"']]
+    ['39' PID_DEVICE_PB_CONFIG ['59', 'OT_DEVICE', 'PDT_GENERIC_04', '"Config Link"']]
+    ['40' PID_DEVICE_ADDR_REPORT ['60', 'OT_DEVICE', 'PDT_GENERIC_06', '""']]
+    ['41' PID_DEVICE_ADDR_CHECK ['61', 'OT_DEVICE', 'PDT_GENERIC_01', '""']]
+    ['42' PID_DEVICE_OBJECT_VALUE ['62', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+    ['43' PID_DEVICE_OBJECTLINK ['63', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+    ['44' PID_DEVICE_APPLICATION ['64', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+    ['45' PID_DEVICE_PARAMETER ['65', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+    ['46' PID_DEVICE_OBJECTADDRESS ['66', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+    ['47' PID_DEVICE_PSU_TYPE ['67', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+    ['48' PID_DEVICE_PSU_STATUS ['68', 'OT_DEVICE', 'PDT_BINARY_INFORMATION', '""']]
+    ['49' PID_DEVICE_PSU_ENABLE ['69', 'OT_DEVICE', 'PDT_ENUM8', '""']]
+    ['50' PID_DEVICE_DOMAIN_ADDRESS ['70', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '"Domain Address"']]
+    ['51' PID_DEVICE_IO_LIST ['71', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+    ['52' PID_DEVICE_MGT_DESCRIPTOR_01 ['72', 'OT_DEVICE', 'PDT_GENERIC_10', '"Management Descriptor 1"']]
+    ['53' PID_DEVICE_PL110_PARAM ['73', 'OT_DEVICE', 'PDT_GENERIC_01', '"PL110 Parameters"']]
+    ['54' PID_DEVICE_RF_REPEAT_COUNTER ['74', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+    ['55' PID_DEVICE_RECEIVE_BLOCK_TABLE ['75', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+    ['56' PID_DEVICE_RANDOM_PAUSE_TABLE ['76', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+    ['57' PID_DEVICE_RECEIVE_BLOCK_NR ['77', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+    ['58' PID_DEVICE_HARDWARE_TYPE ['78', 'OT_DEVICE', 'PDT_GENERIC_06', '"Hardware Type"']]
+    ['59' PID_DEVICE_RETRANSMITTER_NUMBER ['79', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+    ['60' PID_DEVICE_SERIAL_NR_TABLE ['80', 'OT_DEVICE', 'PDT_GENERIC_06', '""']]
+    ['61' PID_DEVICE_BIBATMASTER_ADDRESS ['81', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+    ['62' PID_DEVICE_RF_DOMAIN_ADDRESS ['82', 'OT_DEVICE', 'PDT_GENERIC_06', '"RF Domain Address"']]
+    ['63' PID_DEVICE_DEVICE_DESCRIPTOR ['83', 'OT_DEVICE', 'PDT_GENERIC_02', '""']]
+    ['64' PID_DEVICE_METERING_FILTER_TABLE ['84', 'OT_DEVICE', 'PDT_GENERIC_08', '""']]
+    ['65' PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_TIME_BASE ['85', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+    ['66' PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_NO_OF_TELEGR ['86', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+    ['67' PID_GROUP_OBJECT_TABLE_GRPOBJTABLE ['51', 'OT_GROUP_OBJECT_TABLE', 'PDT_GENERIC_06', '""']]
+    ['68' PID_GROUP_OBJECT_TABLE_EXT_GRPOBJREFERENCE ['52', 'OT_GROUP_OBJECT_TABLE', 'PDT_GENERIC_08', '""']]
+    ['69' PID_ROUTER_LINE_STATUS ['51', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+    ['70' PID_ROUTER_MAIN_LCCONFIG ['52', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+    ['71' PID_ROUTER_SUB_LCCONFIG ['53', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+    ['72' PID_ROUTER_MAIN_LCGRPCONFIG ['54', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+    ['73' PID_ROUTER_SUB_LCGRPCONFIG ['55', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+    ['74' PID_ROUTER_ROUTETABLE_CONTROL ['56', 'OT_ROUTER', 'PDT_FUNCTION', '""']]
+    ['75' PID_ROUTER_COUPL_SERV_CONTROL ['57', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+    ['76' PID_ROUTER_MAX_ROUTER_APDU_LENGTH ['58', 'OT_ROUTER', 'PDT_UNSIGNED_INT', '""']]
+    ['77' PID_ROUTER_MEDIUM ['63', 'OT_ROUTER', 'PDT_ENUM8', '""']]
+    ['78' PID_ROUTER_FILTER_TABLE_USE ['67', 'OT_ROUTER', 'PDT_BINARY_INFORMATION', '""']]
+    ['79' PID_ROUTER_RF_ENABLE_SBC ['112', 'OT_ROUTER', 'PDT_FUNCTION', '""']]
+    ['80' PID_KNXIP_PARAMETER_PROJECT_INSTALLATION_ID ['51', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '"Project Installation Identification"']]
+    ['81' PID_KNXIP_PARAMETER_KNX_INDIVIDUAL_ADDRESS ['52', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '"KNX Individual Address"']]
+    ['82' PID_KNXIP_PARAMETER_ADDITIONAL_INDIVIDUAL_ADDRESSES ['53', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '"Additional Individual Addresses"']]
+    ['83' PID_KNXIP_PARAMETER_CURRENT_IP_ASSIGNMENT_METHOD ['54', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+    ['84' PID_KNXIP_PARAMETER_IP_ASSIGNMENT_METHOD ['55', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+    ['85' PID_KNXIP_PARAMETER_IP_CAPABILITIES ['56', 'OT_KNXIP_PARAMETER', 'PDT_BITSET8', '""']]
+    ['86' PID_KNXIP_PARAMETER_CURRENT_IP_ADDRESS ['57', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['87' PID_KNXIP_PARAMETER_CURRENT_SUBNET_MASK ['58', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['88' PID_KNXIP_PARAMETER_CURRENT_DEFAULT_GATEWAY ['59', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['89' PID_KNXIP_PARAMETER_IP_ADDRESS ['60', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['90' PID_KNXIP_PARAMETER_SUBNET_MASK ['61', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['91' PID_KNXIP_PARAMETER_DEFAULT_GATEWAY ['62', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['92' PID_KNXIP_PARAMETER_DHCP_BOOTP_SERVER ['63', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['93' PID_KNXIP_PARAMETER_MAC_ADDRESS ['64', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_06', '""']]
+    ['94' PID_KNXIP_PARAMETER_SYSTEM_SETUP_MULTICAST_ADDRESS ['65', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['95' PID_KNXIP_PARAMETER_ROUTING_MULTICAST_ADDRESS ['66', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['96' PID_KNXIP_PARAMETER_TTL ['67', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+    ['97' PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_CAPABILITIES ['68', 'OT_KNXIP_PARAMETER', 'PDT_BITSET16', '""']]
+    ['98' PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_STATE ['69', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+    ['99' PID_KNXIP_PARAMETER_KNXNETIP_ROUTING_CAPABILITIES ['70', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+    ['100' PID_KNXIP_PARAMETER_PRIORITY_FIFO_ENABLED ['71', 'OT_KNXIP_PARAMETER', 'PDT_BINARY_INFORMATION', '""']]
+    ['101' PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_IP ['72', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '""']]
+    ['102' PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_KNX ['73', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '""']]
+    ['103' PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_IP ['74', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['104' PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_KNX ['75', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+    ['105' PID_KNXIP_PARAMETER_FRIENDLY_NAME ['76', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+    ['106' PID_KNXIP_PARAMETER_BACKBONE_KEY ['91', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_16', '""']]
+    ['107' PID_KNXIP_PARAMETER_DEVICE_AUTHENTICATION_CODE ['92', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_16', '""']]
+    ['108' PID_KNXIP_PARAMETER_PASSWORD_HASHES ['93', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_16', '""']]
+    ['109' PID_KNXIP_PARAMETER_SECURED_SERVICE_FAMILIES ['94', 'OT_KNXIP_PARAMETER', 'PDT_FUNCTION', '""']]
+    ['110' PID_KNXIP_PARAMETER_MULTICAST_LATENCY_TOLERANCE ['95', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '""']]
+    ['111' PID_KNXIP_PARAMETER_SYNC_LATENCY_FRACTION ['96', 'OT_KNXIP_PARAMETER', 'PDT_SCALING', '""']]
+    ['112' PID_KNXIP_PARAMETER_TUNNELLING_USERS ['97', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_02', '""']]
+    ['113' PID_SECURITY_SECURITY_MODE ['51', 'OT_SECURITY', 'PDT_FUNCTION', '""']]
+    ['114' PID_SECURITY_P2P_KEY_TABLE ['52', 'OT_SECURITY', 'PDT_GENERIC_18', '""']]
+    ['115' PID_SECURITY_GRP_KEY_TABLE ['53', 'OT_SECURITY', 'PDT_GENERIC_18', '""']]
+    ['116' PID_SECURITY_SECURITY_INDIVIDUAL_ADDRESS_TABLE ['54', 'OT_SECURITY', 'PDT_GENERIC_08', '""']]
+    ['117' PID_SECURITY_SECURITY_FAILURES_LOG ['55', 'OT_SECURITY', 'PDT_FUNCTION', '""']]
+    ['118' PID_SECURITY_SKI_TOOL ['56', 'OT_SECURITY', 'PDT_GENERIC_16', '""']]
+    ['119' PID_SECURITY_SECURITY_REPORT ['57', 'OT_SECURITY', 'PDT_BITSET8', '""']]
+    ['120' PID_SECURITY_SECURITY_REPORT_CONTROL ['58', 'OT_SECURITY', 'PDT_BINARY_INFORMATION', '""']]
+    ['121' PID_SECURITY_SEQUENCE_NUMBER_SENDING ['59', 'OT_SECURITY', 'PDT_GENERIC_06', '""']]
+    ['122' PID_SECURITY_ZONE_KEYS_TABLE ['60', 'OT_SECURITY', 'PDT_GENERIC_19', '""']]
+    ['123' PID_SECURITY_GO_SECURITY_FLAGS ['61', 'OT_SECURITY', 'PDT_GENERIC_01', '""']]
+    ['124' PID_RF_MEDIUM_RF_MULTI_TYPE ['51', 'OT_RF_MEDIUM', 'PDT_GENERIC_01', '""']]
+    ['125' PID_RF_MEDIUM_RF_DOMAIN_ADDRESS ['56', 'OT_RF_MEDIUM', 'PDT_GENERIC_06', '""']]
+    ['126' PID_RF_MEDIUM_RF_RETRANSMITTER ['57', 'OT_RF_MEDIUM', 'PDT_BINARY_INFORMATION', '""']]
+    ['127' PID_RF_MEDIUM_SECURITY_REPORT_CONTROL ['58', 'OT_RF_MEDIUM', 'PDT_BINARY_INFORMATION', '""']]
+    ['128' PID_RF_MEDIUM_RF_FILTERING_MODE_SELECT ['59', 'OT_RF_MEDIUM', 'PDT_BITSET8', '""']]
+    ['129' PID_RF_MEDIUM_RF_BIDIR_TIMEOUT ['60', 'OT_RF_MEDIUM', 'PDT_FUNCTION', '""']]
+    ['130' PID_RF_MEDIUM_RF_DIAG_SA_FILTER_TABLE ['61', 'OT_RF_MEDIUM', 'PDT_GENERIC_03', '""']]
+    ['131' PID_RF_MEDIUM_RF_DIAG_QUALITY_TABLE ['62', 'OT_RF_MEDIUM', 'PDT_GENERIC_04', '""']]
+    ['132' PID_RF_MEDIUM_RF_DIAG_PROBE ['63', 'OT_RF_MEDIUM', 'PDT_FUNCTION', '""']]
+    ['133' PID_INDOOR_BRIGHTNESS_SENSOR_CHANGE_OF_VALUE ['110', 'OT_INDOOR_BRIGHTNESS_SENSOR', 'PDT_UNKNOWN', '""']]
+    ['134' PID_INDOOR_BRIGHTNESS_SENSOR_REPETITION_TIME ['111', 'OT_INDOOR_BRIGHTNESS_SENSOR', 'PDT_UNKNOWN', '""']]
+    ['135' PID_INDOOR_LUMINANCE_SENSOR_CHANGE_OF_VALUE ['110', 'OT_INDOOR_LUMINANCE_SENSOR', 'PDT_UNKNOWN', '""']]
+    ['136' PID_INDOOR_LUMINANCE_SENSOR_REPETITION_TIME ['111', 'OT_INDOOR_LUMINANCE_SENSOR', 'PDT_UNKNOWN', '""']]
+    ['137' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_ON_DELAY ['101', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['138' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_OFF_DELAY ['102', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['139' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_DURATION ['103', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['140' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_PREWARNING_DURATION ['104', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['141' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME ['105', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['142' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY ['106', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['143' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING ['107', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['144' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING ['108', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['145' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP ['109', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['146' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN ['110', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['147' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_OUTPUT_STATE ['111', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['148' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION ['112', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['149' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE ['113', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['150' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE ['114', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['151' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_LOCK_STATE ['115', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['152' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_UNLOCK_STATE ['116', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['153' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STATE_FOR_SCENE_NUMBER ['117', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['154' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE ['118', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['155' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_STATE ['119', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['156' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_2 ['120', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['157' PID_DIMMING_ACTUATOR_BASIC_ON_DELAY ['101', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['158' PID_DIMMING_ACTUATOR_BASIC_OFF_DELAY ['102', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['159' PID_DIMMING_ACTUATOR_BASIC_SWITCH_OFF_BRIGHTNESS_DELAY_TIME ['103', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['160' PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_DURATION ['104', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['161' PID_DIMMING_ACTUATOR_BASIC_PREWARNING_DURATION ['105', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['162' PID_DIMMING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME ['106', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['163' PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY ['107', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['164' PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED ['108', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['165' PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME ['109', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['166' PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_ON_SET_VALUE ['110', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['167' PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_OFF ['111', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['168' PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_ON_SET_VALUE ['112', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['169' PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_OFF ['113', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['170' PID_DIMMING_ACTUATOR_BASIC_SWITCFH_OFF_BRIGHTNESS ['114', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['171' PID_DIMMING_ACTUATOR_BASIC_MINIMUM_SET_VALUE ['115', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['172' PID_DIMMING_ACTUATOR_BASIC_MAXIMUM_SET_VALUE ['116', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['173' PID_DIMMING_ACTUATOR_BASIC_SWITCH_ON_SET_VALUE ['117', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['174' PID_DIMMING_ACTUATOR_BASIC_DIMM_MODE_SELECTION ['118', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['175' PID_DIMMING_ACTUATOR_BASIC_RELATIV_OFF_ENABLE ['119', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['176' PID_DIMMING_ACTUATOR_BASIC_MEMORY_FUNCTION ['120', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['177' PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION ['121', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['178' PID_DIMMING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE ['122', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['179' PID_DIMMING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE ['123', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['180' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING ['124', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['181' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING ['125', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['182' PID_DIMMING_ACTUATOR_BASIC_LOCK_SETVALUE ['126', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['183' PID_DIMMING_ACTUATOR_BASIC_UNLOCK_SETVALUE ['127', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['184' PID_DIMMING_ACTUATOR_BASIC_BIGHTNESS_FOR_SCENE ['128', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['185' PID_DIMMING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE ['129', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['186' PID_DIMMING_ACTUATOR_BASIC_DELTA_DIMMING_VALUE ['130', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['187' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP ['131', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['188' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_SET_VALUE ['132', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['189' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN ['133', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['190' PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_DOWN_SET_VALUE ['134', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['191' PID_DIMMING_SENSOR_BASIC_ON_OFF_ACTION ['51', 'OT_DIMMING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['192' PID_DIMMING_SENSOR_BASIC_ENABLE_TOGGLE_MODE ['52', 'OT_DIMMING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['193' PID_DIMMING_SENSOR_BASIC_ABSOLUTE_SETVALUE ['53', 'OT_DIMMING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['194' PID_SWITCHING_SENSOR_BASIC_ON_OFF_ACTION ['51', 'OT_SWITCHING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['195' PID_SWITCHING_SENSOR_BASIC_ENABLE_TOGGLE_MODE ['52', 'OT_SWITCHING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['196' PID_SUNBLIND_ACTUATOR_BASIC_REVERSION_PAUSE_TIME ['51', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['197' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_UP_DOWN_TIME ['52', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['198' PID_SUNBLIND_ACTUATOR_BASIC_SLAT_STEP_TIME ['53', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['199' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_PRESET_POSITION_TIME ['54', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['200' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_IN_PERCENT ['55', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['201' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_LENGTH ['57', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['202' PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_PERCENT ['58', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['203' PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_ANGLE ['60', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['204' PID_SUNBLIND_ACTUATOR_BASIC_REACTION_WIND_ALARM ['61', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['205' PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_WIND_ALARM ['62', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['206' PID_SUNBLIND_ACTUATOR_BASIC_REACTION_ON_RAIN_ALARM ['63', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['207' PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_RAIN_ALARM ['64', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['208' PID_SUNBLIND_ACTUATOR_BASIC_REACTION_FROST_ALARM ['65', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['209' PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_FROST_ALARM ['66', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['210' PID_SUNBLIND_ACTUATOR_BASIC_MAX_SLAT_MOVE_TIME ['67', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['211' PID_SUNBLIND_ACTUATOR_BASIC_ENABLE_BLINDS_MODE ['68', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['212' PID_SUNBLIND_ACTUATOR_BASIC_STORAGE_FUNCTIONS_FOR_SCENE ['69', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['213' PID_SUNBLIND_SENSOR_BASIC_ENABLE_BLINDS_MODE ['51', 'OT_SUNBLIND_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['214' PID_SUNBLIND_SENSOR_BASIC_UP_DOWN_ACTION ['52', 'OT_SUNBLIND_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    ['215' PID_SUNBLIND_SENSOR_BASIC_ENABLE_TOGGLE_MODE ['53', 'OT_SUNBLIND_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+    
+]
+
+[enum uint 8 KnxPropertyDataType(uint 8 number, uint 8 sizeInBytes, string 8 name)
+    ['0' PDT_UNKNOWN    ['0', '0',  '"Unknown Property Data Type"']]
+    ['1' PDT_CONTROL ['0', '10', '"PDT_CONTROL"']]
+    ['2' PDT_CHAR ['1', '1', '"PDT_CHAR"']]
+    ['3' PDT_UNSIGNED_CHAR ['2', '1', '"PDT_UNSIGNED_CHAR"']]
+    ['4' PDT_INT ['3', '2', '"PDT_INT"']]
+    ['5' PDT_UNSIGNED_INT ['4', '2', '"PDT_UNSIGNED_INT"']]
+    ['6' PDT_KNX_FLOAT ['5', '2', '"PDT_KNX_FLOAT"']]
+    ['7' PDT_DATE ['6', '3', '"PDT_DATE"']]
+    ['8' PDT_TIME ['7', '3', '"PDT_TIME"']]
+    ['9' PDT_LONG ['8', '4', '"PDT_LONG"']]
+    ['10' PDT_UNSIGNED_LONG ['9', '4', '"PDT_UNSIGNED_LONG"']]
+    ['11' PDT_FLOAT ['10', '4', '"PDT_FLOAT"']]
+    ['12' PDT_DOUBLE ['11', '8', '"PDT_DOUBLE"']]
+    ['13' PDT_CHAR_BLOCK ['12', '10', '"PDT_CHAR_BLOCK"']]
+    ['14' PDT_POLL_GROUP_SETTINGS ['13', '3', '"PDT_POLL_GROUP_SETTINGS"']]
+    ['15' PDT_SHORT_CHAR_BLOCK ['14', '5', '"PDT_SHORT_CHAR_BLOCK"']]
+    ['16' PDT_DATE_TIME ['15', '8', '"PDT_DATE_TIME"']]
+    ['17' PDT_VARIABLE_LENGTH ['16', '0', '"PDT_VARIABLE_LENGTH"']]
+    ['18' PDT_GENERIC_01 ['17', '1', '"PDT_GENERIC_01"']]
+    ['19' PDT_GENERIC_02 ['18', '2', '"PDT_GENERIC_02"']]
+    ['20' PDT_GENERIC_03 ['19', '3', '"PDT_GENERIC_03"']]
+    ['21' PDT_GENERIC_04 ['20', '4', '"PDT_GENERIC_04"']]
+    ['22' PDT_GENERIC_05 ['21', '5', '"PDT_GENERIC_05"']]
+    ['23' PDT_GENERIC_06 ['22', '6', '"PDT_GENERIC_06"']]
+    ['24' PDT_GENERIC_07 ['23', '7', '"PDT_GENERIC_07"']]
+    ['25' PDT_GENERIC_08 ['24', '8', '"PDT_GENERIC_08"']]
+    ['26' PDT_GENERIC_09 ['25', '9', '"PDT_GENERIC_09"']]
+    ['27' PDT_GENERIC_10 ['26', '10', '"PDT_GENERIC_10"']]
+    ['28' PDT_GENERIC_11 ['27', '11', '"PDT_GENERIC_11"']]
+    ['29' PDT_GENERIC_12 ['28', '12', '"PDT_GENERIC_12"']]
+    ['30' PDT_GENERIC_13 ['29', '13', '"PDT_GENERIC_13"']]
+    ['31' PDT_GENERIC_14 ['30', '14', '"PDT_GENERIC_14"']]
+    ['32' PDT_GENERIC_15 ['31', '15', '"PDT_GENERIC_15"']]
+    ['33' PDT_GENERIC_16 ['32', '16', '"PDT_GENERIC_16"']]
+    ['34' PDT_GENERIC_17 ['33', '17', '"PDT_GENERIC_17"']]
+    ['35' PDT_GENERIC_18 ['34', '18', '"PDT_GENERIC_18"']]
+    ['36' PDT_GENERIC_19 ['35', '19', '"PDT_GENERIC_19"']]
+    ['37' PDT_GENERIC_20 ['36', '20', '"PDT_GENERIC_20"']]
+    ['38' PDT_UTF_8 ['47', '0', '"PDT_UTF-8"']]
+    ['39' PDT_VERSION ['48', '2', '"PDT_VERSION"']]
+    ['40' PDT_ALARM_INFO ['49', '6', '"PDT_ALARM_INFO"']]
+    ['41' PDT_BINARY_INFORMATION ['50', '1', '"PDT_BINARY_INFORMATION"']]
+    ['42' PDT_BITSET8 ['51', '1', '"PDT_BITSET8"']]
+    ['43' PDT_BITSET16 ['52', '2', '"PDT_BITSET16"']]
+    ['44' PDT_ENUM8 ['53', '1', '"PDT_ENUM8"']]
+    ['45' PDT_SCALING ['54', '1', '"PDT_SCALING"']]
+    ['46' PDT_NE_VL ['60', '0', '"PDT_NE_VL"']]
+    ['47' PDT_NE_FL ['61', '0', '"PDT_NE_FL"']]
+    ['48' PDT_FUNCTION ['62', '0', '"PDT_FUNCTION"']]
+    ['49' PDT_ESCAPE ['63', '0', '"PDT_ESCAPE"']]
+    
+]
+
+[enum uint 16 KnxManufacturer(uint 16 number, string 8 name)
+    ['0' M_UNKNOWN ['0', '"Unknown Manufacturer"']]
+    ['1' M_SIEMENS ['1', '"Siemens"']]
+    ['2' M_ABB ['2', '"ABB"']]
+    ['3' M_ALBRECHT_JUNG ['4', '"Albrecht Jung"']]
+    ['4' M_BTICINO ['5', '"Bticino"']]
+    ['5' M_BERKER ['6', '"Berker"']]
+    ['6' M_BUSCH_JAEGER_ELEKTRO ['7', '"Busch-Jaeger Elektro"']]
+    ['7' M_GIRA_GIERSIEPEN ['8', '"GIRA Giersiepen"']]
+    ['8' M_HAGER_ELECTRO ['9', '"Hager Electro"']]
+    ['9' M_INSTA_GMBH ['10', '"Insta GmbH"']]
+    ['10' M_LEGRAND_APPAREILLAGE_ELECTRIQUE ['11', '"LEGRAND Appareillage électrique"']]
+    ['11' M_MERTEN ['12', '"Merten"']]
+    ['12' M_ABB_SPA_SACE_DIVISION ['14', '"ABB SpA-SACE Division"']]
+    ['13' M_SIEDLE_AND_SOEHNE ['22', '"Siedle & Söhne"']]
+    ['14' M_EBERLE ['24', '"Eberle"']]
+    ['15' M_GEWISS ['25', '"GEWISS"']]
+    ['16' M_ALBERT_ACKERMANN ['27', '"Albert Ackermann"']]
+    ['17' M_SCHUPA_GMBH ['28', '"Schupa GmbH"']]
+    ['18' M_ABB_SCHWEIZ ['29', '"ABB SCHWEIZ"']]
+    ['19' M_FELLER ['30', '"Feller"']]
+    ['20' M_GLAMOX_AS ['31', '"Glamox AS"']]
+    ['21' M_DEHN_AND_SOEHNE ['32', '"DEHN & SÖHNE"']]
+    ['22' M_CRABTREE ['33', '"CRABTREE"']]
+    ['23' M_EVOKNX ['34', '"eVoKNX"']]
+    ['24' M_PAUL_HOCHKOEPPER ['36', '"Paul Hochköpper"']]
+    ['25' M_ALTENBURGER_ELECTRONIC ['37', '"Altenburger Electronic"']]
+    ['26' M_GRAESSLIN ['41', '"Grässlin"']]
+    ['27' M_SIMON_42 ['42', '"Simon"']]
+    ['28' M_VIMAR ['44', '"VIMAR"']]
+    ['29' M_MOELLER_GEBAEUDEAUTOMATION_KG ['45', '"Moeller Gebäudeautomation KG"']]
+    ['30' M_ELTAKO ['46', '"Eltako"']]
+    ['31' M_BOSCH_SIEMENS_HAUSHALTSGERAETE ['49', '"Bosch-Siemens Haushaltsgeräte"']]
+    ['32' M_RITTO_GMBHANDCO_KG ['52', '"RITTO GmbH&Co.KG"']]
+    ['33' M_POWER_CONTROLS ['53', '"Power Controls"']]
+    ['34' M_ZUMTOBEL ['55', '"ZUMTOBEL"']]
+    ['35' M_HOLEC_SYSTEMEN ['56', '"HOLEC Systemen"']]
+    ['36' M_PHOENIX_CONTACT ['57', '"Phoenix Contact"']]
+    ['37' M_WAGO_KONTAKTTECHNIK ['61', '"WAGO Kontakttechnik"']]
+    ['38' M_KNXPRESSO ['62', '"knXpresso"']]
+    ['39' M_WIELAND_ELECTRIC ['66', '"Wieland Electric"']]
+    ['40' M_HERMANN_KLEINHUIS ['67', '"Hermann Kleinhuis"']]
+    ['41' M_STIEBEL_ELTRON ['69', '"Stiebel Eltron"']]
+    ['42' M_TEHALIT ['71', '"Tehalit"']]
+    ['43' M_THEBEN_AG ['72', '"Theben AG"']]
+    ['44' M_WILHELM_RUTENBECK ['73', '"Wilhelm Rutenbeck"']]
+    ['45' M_WINKHAUS ['75', '"Winkhaus"']]
+    ['46' M_ROBERT_BOSCH ['76', '"Robert Bosch"']]
+    ['47' M_SOMFY ['78', '"Somfy"']]
+    ['48' M_WOERTZ ['80', '"Woertz"']]
+    ['49' M_VIESSMANN_WERKE ['81', '"Viessmann Werke"']]
+    ['50' M_IMI_HYDRONIC_ENGINEERING ['82', '"IMI Hydronic Engineering"']]
+    ['51' M_JOH__VAILLANT ['83', '"Joh. Vaillant"']]
+    ['52' M_AMP_DEUTSCHLAND ['85', '"AMP Deutschland"']]
+    ['53' M_BOSCH_THERMOTECHNIK_GMBH ['89', '"Bosch Thermotechnik GmbH"']]
+    ['54' M_SEF___ECOTEC ['90', '"SEF - ECOTEC"']]
+    ['55' M_DORMA_GMBH_Plus_CO__KG ['92', '"DORMA GmbH + Co. KG"']]
+    ['56' M_WINDOWMASTER_AS ['93', '"WindowMaster A/S"']]
+    ['57' M_WALTHER_WERKE ['94', '"Walther Werke"']]
+    ['58' M_ORAS ['95', '"ORAS"']]
+    ['59' M_DAETWYLER ['97', '"Dätwyler"']]
+    ['60' M_ELECTRAK ['98', '"Electrak"']]
+    ['61' M_TECHEM ['99', '"Techem"']]
+    ['62' M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS ['100', '"Schneider Electric Industries SAS"']]
+    ['63' M_WHD_WILHELM_HUBER_Plus_SOEHNE ['101', '"WHD Wilhelm Huber + Söhne"']]
+    ['64' M_BISCHOFF_ELEKTRONIK ['102', '"Bischoff Elektronik"']]
+    ['65' M_JEPAZ ['104', '"JEPAZ"']]
+    ['66' M_RTS_AUTOMATION ['105', '"RTS Automation"']]
+    ['67' M_EIBMARKT_GMBH ['106', '"EIBMARKT GmbH"']]
+    ['68' M_WAREMA_RENKHOFF_SE ['107', '"WAREMA Renkhoff SE"']]
+    ['69' M_EELECTRON ['108', '"Eelectron"']]
+    ['70' M_BELDEN_WIRE_AND_CABLE_B_V_ ['109', '"Belden Wire & Cable B.V."']]
+    ['71' M_BECKER_ANTRIEBE_GMBH ['110', '"Becker-Antriebe GmbH"']]
+    ['72' M_J_STEHLEPlusSOEHNE_GMBH ['111', '"J.Stehle+Söhne GmbH"']]
+    ['73' M_AGFEO ['112', '"AGFEO"']]
+    ['74' M_ZENNIO ['113', '"Zennio"']]
+    ['75' M_TAPKO_TECHNOLOGIES ['114', '"TAPKO Technologies"']]
+    ['76' M_HDL ['115', '"HDL"']]
+    ['77' M_UPONOR ['116', '"Uponor"']]
+    ['78' M_SE_LIGHTMANAGEMENT_AG ['117', '"se Lightmanagement AG"']]
+    ['79' M_ARCUS_EDS ['118', '"Arcus-eds"']]
+    ['80' M_INTESIS ['119', '"Intesis"']]
+    ['81' M_HERHOLDT_CONTROLS_SRL ['120', '"Herholdt Controls srl"']]
+    ['82' M_NIKO_ZUBLIN ['121', '"Niko-Zublin"']]
+    ['83' M_DURABLE_TECHNOLOGIES ['122', '"Durable Technologies"']]
+    ['84' M_INNOTEAM ['123', '"Innoteam"']]
+    ['85' M_ISE_GMBH ['124', '"ise GmbH"']]
+    ['86' M_TEAM_FOR_TRONICS ['125', '"TEAM FOR TRONICS"']]
+    ['87' M_CIAT ['126', '"CIAT"']]
+    ['88' M_REMEHA_BV ['127', '"Remeha BV"']]
+    ['89' M_ESYLUX ['128', '"ESYLUX"']]
+    ['90' M_BASALTE ['129', '"BASALTE"']]
+    ['91' M_VESTAMATIC ['130', '"Vestamatic"']]
+    ['92' M_MDT_TECHNOLOGIES ['131', '"MDT technologies"']]
+    ['93' M_WARENDORFER_KUECHEN_GMBH ['132', '"Warendorfer Küchen GmbH"']]
+    ['94' M_VIDEO_STAR ['133', '"Video-Star"']]
+    ['95' M_SITEK ['134', '"Sitek"']]
+    ['96' M_CONTROLTRONIC ['135', '"CONTROLtronic"']]
+    ['97' M_FUNCTION_TECHNOLOGY ['136', '"function Technology"']]
+    ['98' M_AMX ['137', '"AMX"']]
+    ['99' M_ELDAT ['138', '"ELDAT"']]
+    ['100' M_PANASONIC ['139', '"Panasonic"']]
+    ['101' M_PULSE_TECHNOLOGIES ['140', '"Pulse Technologies"']]
+    ['102' M_CRESTRON ['141', '"Crestron"']]
+    ['103' M_STEINEL_PROFESSIONAL ['142', '"STEINEL professional"']]
+    ['104' M_BILTON_LED_LIGHTING ['143', '"BILTON LED Lighting"']]
+    ['105' M_DENRO_AG ['144', '"denro AG"']]
+    ['106' M_GEPRO ['145', '"GePro"']]
+    ['107' M_PREUSSEN_AUTOMATION ['146', '"preussen automation"']]
+    ['108' M_ZOPPAS_INDUSTRIES ['147', '"Zoppas Industries"']]
+    ['109' M_MACTECH ['148', '"MACTECH"']]
+    ['110' M_TECHNO_TREND ['149', '"TECHNO-TREND"']]
+    ['111' M_FS_CABLES ['150', '"FS Cables"']]
+    ['112' M_DELTA_DORE ['151', '"Delta Dore"']]
+    ['113' M_EISSOUND ['152', '"Eissound"']]
+    ['114' M_CISCO ['153', '"Cisco"']]
+    ['115' M_DINUY ['154', '"Dinuy"']]
+    ['116' M_IKNIX ['155', '"iKNiX"']]
+    ['117' M_RADEMACHER_GERAETE_ELEKTRONIK_GMBH ['156', '"Rademacher Geräte-Elektronik GmbH"']]
+    ['118' M_EGI_ELECTROACUSTICA_GENERAL_IBERICA ['157', '"EGi Electroacustica General Iberica"']]
+    ['119' M_BES___INGENIUM ['158', '"Bes – Ingenium"']]
+    ['120' M_ELABNET ['159', '"ElabNET"']]
+    ['121' M_BLUMOTIX ['160', '"Blumotix"']]
+    ['122' M_HUNTER_DOUGLAS ['161', '"Hunter Douglas"']]
+    ['123' M_APRICUM ['162', '"APRICUM"']]
+    ['124' M_TIANSU_AUTOMATION ['163', '"TIANSU Automation"']]
+    ['125' M_BUBENDORFF ['164', '"Bubendorff"']]
+    ['126' M_MBS_GMBH ['165', '"MBS GmbH"']]
+    ['127' M_ENERTEX_BAYERN_GMBH ['166', '"Enertex Bayern GmbH"']]
+    ['128' M_BMS ['167', '"BMS"']]
+    ['129' M_SINAPSI ['168', '"Sinapsi"']]
+    ['130' M_EMBEDDED_SYSTEMS_SIA ['169', '"Embedded Systems SIA"']]
+    ['131' M_KNX1 ['170', '"KNX1"']]
+    ['132' M_TOKKA ['171', '"Tokka"']]
+    ['133' M_NANOSENSE ['172', '"NanoSense"']]
+    ['134' M_PEAR_AUTOMATION_GMBH ['173', '"PEAR Automation GmbH"']]
+    ['135' M_DGA ['174', '"DGA"']]
+    ['136' M_LUTRON ['175', '"Lutron"']]
+    ['137' M_AIRZONE___ALTRA ['176', '"AIRZONE – ALTRA"']]
+    ['138' M_LITHOSS_DESIGN_SWITCHES ['177', '"Lithoss Design Switches"']]
+    ['139' M_THREEATEL ['178', '"3ATEL"']]
+    ['140' M_PHILIPS_CONTROLS ['179', '"Philips Controls"']]
+    ['141' M_VELUX_AS ['180', '"VELUX A/S"']]
+    ['142' M_LOYTEC ['181', '"LOYTEC"']]
+    ['143' M_EKINEX_S_P_A_ ['182', '"Ekinex S.p.A."']]
+    ['144' M_SIRLAN_TECHNOLOGIES ['183', '"SIRLAN Technologies"']]
+    ['145' M_PROKNX_SAS ['184', '"ProKNX SAS"']]
+    ['146' M_IT_GMBH ['185', '"IT GmbH"']]
+    ['147' M_RENSON ['186', '"RENSON"']]
+    ['148' M_HEP_GROUP ['187', '"HEP Group"']]
+    ['149' M_BALMART ['188', '"Balmart"']]
+    ['150' M_GFS_GMBH ['189', '"GFS GmbH"']]
+    ['151' M_SCHENKER_STOREN_AG ['190', '"Schenker Storen AG"']]
+    ['152' M_ALGODUE_ELETTRONICA_S_R_L_ ['191', '"Algodue Elettronica S.r.L."']]
+    ['153' M_ABB_FRANCE ['192', '"ABB France"']]
+    ['154' M_MAINTRONIC ['193', '"maintronic"']]
+    ['155' M_VANTAGE ['194', '"Vantage"']]
+    ['156' M_FORESIS ['195', '"Foresis"']]
+    ['157' M_RESEARCH_AND_PRODUCTION_ASSOCIATION_SEM ['196', '"Research & Production Association SEM"']]
+    ['158' M_WEINZIERL_ENGINEERING_GMBH ['197', '"Weinzierl Engineering GmbH"']]
+    ['159' M_MOEHLENHOFF_WAERMETECHNIK_GMBH ['198', '"Möhlenhoff Wärmetechnik GmbH"']]
+    ['160' M_PKC_GROUP_OYJ ['199', '"PKC-GROUP Oyj"']]
+    ['161' M_B_E_G_ ['200', '"B.E.G."']]
+    ['162' M_ELSNER_ELEKTRONIK_GMBH ['201', '"Elsner Elektronik GmbH"']]
+    ['163' M_SIEMENS_BUILDING_TECHNOLOGIES_HKCHINA_LTD_ ['202', '"Siemens Building Technologies (HK/China) Ltd."']]
+    ['164' M_EUTRAC ['204', '"Eutrac"']]
+    ['165' M_GUSTAV_HENSEL_GMBH_AND_CO__KG ['205', '"Gustav Hensel GmbH & Co. KG"']]
+    ['166' M_GARO_AB ['206', '"GARO AB"']]
+    ['167' M_WALDMANN_LICHTTECHNIK ['207', '"Waldmann Lichttechnik"']]
+    ['168' M_SCHUECO ['208', '"SCHÜCO"']]
+    ['169' M_EMU ['209', '"EMU"']]
+    ['170' M_JNET_SYSTEMS_AG ['210', '"JNet Systems AG"']]
+    ['171' M_TOTAL_SOLUTION_GMBH ['211', '"Total Solution GmbH"']]
+    ['172' M_O_Y_L__ELECTRONICS ['214', '"O.Y.L. Electronics"']]
+    ['173' M_GALAX_SYSTEM ['215', '"Galax System"']]
+    ['174' M_DISCH ['216', '"Disch"']]
+    ['175' M_AUCOTEAM ['217', '"Aucoteam"']]
+    ['176' M_LUXMATE_CONTROLS ['218', '"Luxmate Controls"']]
+    ['177' M_DANFOSS ['219', '"Danfoss"']]
+    ['178' M_AST_GMBH ['220', '"AST GmbH"']]
+    ['179' M_WILA_LEUCHTEN ['222', '"WILA Leuchten"']]
+    ['180' M_BPlusB_AUTOMATIONS__UND_STEUERUNGSTECHNIK ['223', '"b+b Automations- und Steuerungstechnik"']]
+    ['181' M_LINGG_AND_JANKE ['225', '"Lingg & Janke"']]
+    ['182' M_SAUTER ['227', '"Sauter"']]
+    ['183' M_SIMU ['228', '"SIMU"']]
+    ['184' M_THEBEN_HTS_AG ['232', '"Theben HTS AG"']]
+    ['185' M_AMANN_GMBH ['233', '"Amann GmbH"']]
+    ['186' M_BERG_ENERGIEKONTROLLSYSTEME_GMBH ['234', '"BERG Energiekontrollsysteme GmbH"']]
+    ['187' M_HUEPPE_FORM_SONNENSCHUTZSYSTEME_GMBH ['235', '"Hüppe Form Sonnenschutzsysteme GmbH"']]
+    ['188' M_OVENTROP_KG ['237', '"Oventrop KG"']]
+    ['189' M_GRIESSER_AG ['238', '"Griesser AG"']]
+    ['190' M_IPAS_GMBH ['239', '"IPAS GmbH"']]
+    ['191' M_ELERO_GMBH ['240', '"elero GmbH"']]
+    ['192' M_ARDAN_PRODUCTION_AND_INDUSTRIAL_CONTROLS_LTD_ ['241', '"Ardan Production and Industrial Controls Ltd."']]
+    ['193' M_METEC_MESSTECHNIK_GMBH ['242', '"Metec Meßtechnik GmbH"']]
+    ['194' M_BUERK_MOBATIME ['243', '"BÜRK MOBATIME"']]
+    ['195' M_ELKA_ELEKTRONIK_GMBH ['244', '"ELKA-Elektronik GmbH"']]
+    ['196' M_ELEKTROANLAGEN_D__NAGEL ['245', '"ELEKTROANLAGEN D. NAGEL"']]
+    ['197' M_TRIDONIC_BAUELEMENTE_GMBH ['246', '"Tridonic Bauelemente GmbH"']]
+    ['198' M_STENGLER_GESELLSCHAFT ['248', '"Stengler Gesellschaft"']]
+    ['199' M_SCHNEIDER_ELECTRIC_MG ['249', '"Schneider Electric (MG)"']]
+    ['200' M_KNX_ASSOCIATION ['250', '"KNX Association"']]
+    ['201' M_VIVO ['251', '"VIVO"']]
+    ['202' M_HUGO_MUELLER_GMBH_AND_CO_KG ['252', '"Hugo Müller GmbH & Co KG"']]
+    ['203' M_SIEMENS_HVAC ['253', '"Siemens HVAC"']]
+    ['204' M_APT ['254', '"APT"']]
+    ['205' M_HIGHDOM ['256', '"HighDom"']]
+    ['206' M_TOP_SERVICES ['257', '"Top Services"']]
+    ['207' M_AMBIHOME ['258', '"ambiHome"']]
+    ['208' M_DATEC_ELECTRONIC_AG ['259', '"DATEC electronic AG"']]
+    ['209' M_ABUS_SECURITY_CENTER ['260', '"ABUS Security-Center"']]
+    ['210' M_LITE_PUTER ['261', '"Lite-Puter"']]
+    ['211' M_TANTRON_ELECTRONIC ['262', '"Tantron Electronic"']]
+    ['212' M_INTERRA ['263', '"Interra"']]
+    ['213' M_DKX_TECH ['264', '"DKX Tech"']]
+    ['214' M_VIATRON ['265', '"Viatron"']]
+    ['215' M_NAUTIBUS ['266', '"Nautibus"']]
+    ['216' M_ON_SEMICONDUCTOR ['267', '"ON Semiconductor"']]
+    ['217' M_LONGCHUANG ['268', '"Longchuang"']]
+    ['218' M_AIR_ON_AG ['269', '"Air-On AG"']]
+    ['219' M_IB_COMPANY_GMBH ['270', '"ib-company GmbH"']]
+    ['220' M_SATION_FACTORY ['271', '"Sation Factory"']]
+    ['221' M_AGENTILO_GMBH ['272', '"Agentilo GmbH"']]
+    ['222' M_MAKEL_ELEKTRIK ['273', '"Makel Elektrik"']]
+    ['223' M_HELIOS_VENTILATOREN ['274', '"Helios Ventilatoren"']]
+    ['224' M_OTTO_SOLUTIONS_PTE_LTD ['275', '"Otto Solutions Pte Ltd"']]
+    ['225' M_AIRMASTER ['276', '"Airmaster"']]
+    ['226' M_VALLOX_GMBH ['277', '"Vallox GmbH"']]
+    ['227' M_DALITEK ['278', '"Dalitek"']]
+    ['228' M_ASIN ['279', '"ASIN"']]
+    ['229' M_BRIDGES_INTELLIGENCE_TECHNOLOGY_INC_ ['280', '"Bridges Intelligence Technology Inc."']]
+    ['230' M_ARBONIA ['281', '"ARBONIA"']]
+    ['231' M_KERMI ['282', '"KERMI"']]
+    ['232' M_PROLUX ['283', '"PROLUX"']]
+    ['233' M_CLICHOME ['284', '"ClicHome"']]
+    ['234' M_COMMAX ['285', '"COMMAX"']]
+    ['235' M_EAE ['286', '"EAE"']]
+    ['236' M_TENSE ['287', '"Tense"']]
+    ['237' M_SEYOUNG_ELECTRONICS ['288', '"Seyoung Electronics"']]
+    ['238' M_LIFEDOMUS ['289', '"Lifedomus"']]
+    ['239' M_EUROTRONIC_TECHNOLOGY_GMBH ['290', '"EUROtronic Technology GmbH"']]
+    ['240' M_TCI ['291', '"tci"']]
+    ['241' M_RISHUN_ELECTRONIC ['292', '"Rishun Electronic"']]
+    ['242' M_ZIPATO ['293', '"Zipato"']]
+    ['243' M_CM_SECURITY_GMBH_AND_CO_KG ['294', '"cm-security GmbH & Co KG"']]
+    ['244' M_QING_CABLES ['295', '"Qing Cables"']]
+    ['245' M_WOLF ['296', '"WOLF"']]
+    ['246' M_COSTER_TECNOLOGIE_ELETTRONICHE_S_P_A_ ['297', '"Coster Tecnologie Elettroniche S.p.A."']]
+    ['247' M_E_G_E ['298', '"E.G.E"']]
+    ['248' M_NETXAUTOMATION ['299', '"NETxAutomation"']]
+    ['249' M_TECALOR ['300', '"tecalor"']]
+    ['250' M_URMET_ELECTRONICS_HUIZHOU_LTD_ ['301', '"Urmet Electronics (Huizhou) Ltd."']]
+    ['251' M_PEIYING_BUILDING_CONTROL ['302', '"Peiying Building Control"']]
+    ['252' M_BPT_S_P_A__A_SOCIO_UNICO ['303', '"BPT S.p.A. a Socio Unico"']]
+    ['253' M_KANONTEC___KANONBUS ['304', '"Kanontec - KanonBUS"']]
+    ['254' M_ISER_TECH ['305', '"ISER Tech"']]
+    ['255' M_FINELINE ['306', '"Fineline"']]
+    ['256' M_CP_ELECTRONICS_LTD ['307', '"CP Electronics Ltd"']]
+    ['257' M_NIKO_SERVODAN_AS ['308', '"Niko-Servodan A/S"']]
+    ['258' M_SIMON_309 ['309', '"Simon"']]
+    ['259' M_GM_MODULAR_PVT__LTD_ ['310', '"GM modular pvt. Ltd."']]
+    ['260' M_FU_CHENG_INTELLIGENCE ['311', '"FU CHENG Intelligence"']]
+    ['261' M_NEXKON ['312', '"NexKon"']]
+    ['262' M_FEEL_S_R_L ['313', '"FEEL s.r.l"']]
+    ['263' M_NOT_ASSIGNED_314 ['314', '"Not Assigned"']]
+    ['264' M_SHENZHEN_FANHAI_SANJIANG_ELECTRONICS_CO___LTD_ ['315', '"Shenzhen Fanhai Sanjiang Electronics Co., Ltd."']]
+    ['265' M_JIUZHOU_GREEBLE ['316', '"Jiuzhou Greeble"']]
+    ['266' M_AUMUELLER_AUMATIC_GMBH ['317', '"Aumüller Aumatic GmbH"']]
+    ['267' M_ETMAN_ELECTRIC ['318', '"Etman Electric"']]
+    ['268' M_BLACK_NOVA ['319', '"Black Nova"']]
+    ['269' M_ZIDATECH_AG ['320', '"ZidaTech AG"']]
+    ['270' M_IDGS_BVBA ['321', '"IDGS bvba"']]
+    ['271' M_DAKANIMO ['322', '"dakanimo"']]
+    ['272' M_TREBOR_AUTOMATION_AB ['323', '"Trebor Automation AB"']]
+    ['273' M_SATEL_SP__Z_O_O_ ['324', '"Satel sp. z o.o."']]
+    ['274' M_RUSSOUND__INC_ ['325', '"Russound, Inc."']]
+    ['275' M_MIDEA_HEATING_AND_VENTILATING_EQUIPMENT_CO_LTD ['326', '"Midea Heating & Ventilating Equipment CO LTD"']]
+    ['276' M_CONSORZIO_TERRANUOVA ['327', '"Consorzio Terranuova"']]
+    ['277' M_WOLF_HEIZTECHNIK_GMBH ['328', '"Wolf Heiztechnik GmbH"']]
+    ['278' M_SONTEC ['329', '"SONTEC"']]
+    ['279' M_BELCOM_CABLES_LTD_ ['330', '"Belcom Cables Ltd."']]
+    ['280' M_GUANGZHOU_SEAWIN_ELECTRICAL_TECHNOLOGIES_CO___LTD_ ['331', '"Guangzhou SeaWin Electrical Technologies Co., Ltd."']]
+    ['281' M_ACREL ['332', '"Acrel"']]
+    ['282' M_KWC_AQUAROTTER_GMBH ['333', '"KWC Aquarotter GmbH"']]
+    ['283' M_ORION_SYSTEMS ['334', '"Orion Systems"']]
+    ['284' M_SCHRACK_TECHNIK_GMBH ['335', '"Schrack Technik GmbH"']]
+    ['285' M_INSPRID ['336', '"INSPRID"']]
+    ['286' M_SUNRICHER ['337', '"Sunricher"']]
+    ['287' M_MENRED_AUTOMATION_SYSTEMSHANGHAI_CO__LTD_ ['338', '"Menred automation system(shanghai) Co.,Ltd."']]
+    ['288' M_AUREX ['339', '"Aurex"']]
+    ['289' M_JOSEF_BARTHELME_GMBH_AND_CO__KG ['340', '"Josef Barthelme GmbH & Co. KG"']]
+    ['290' M_ARCHITECTURE_NUMERIQUE ['341', '"Architecture Numerique"']]
+    ['291' M_UP_GROUP ['342', '"UP GROUP"']]
+    ['292' M_TEKNOS_AVINNO ['343', '"Teknos-Avinno"']]
+    ['293' M_NINGBO_DOOYA_MECHANIC_AND_ELECTRONIC_TECHNOLOGY ['344', '"Ningbo Dooya Mechanic & Electronic Technology"']]
+    ['294' M_THERMOKON_SENSORTECHNIK_GMBH ['345', '"Thermokon Sensortechnik GmbH"']]
+    ['295' M_BELIMO_AUTOMATION_AG ['346', '"BELIMO Automation AG"']]
+    ['296' M_ZEHNDER_GROUP_INTERNATIONAL_AG ['347', '"Zehnder Group International AG"']]
+    ['297' M_SKS_KINKEL_ELEKTRONIK ['348', '"sks Kinkel Elektronik"']]
+    ['298' M_ECE_WURMITZER_GMBH ['349', '"ECE Wurmitzer GmbH"']]
+    ['299' M_LARS ['350', '"LARS"']]
+    ['300' M_URC ['351', '"URC"']]
+    ['301' M_LIGHTCONTROL ['352', '"LightControl"']]
+    ['302' M_SHENZHEN_YM ['353', '"ShenZhen YM"']]
+    ['303' M_MEAN_WELL_ENTERPRISES_CO__LTD_ ['354', '"MEAN WELL Enterprises Co. Ltd."']]
+    ['304' M_OSIX ['355', '"OSix"']]
+    ['305' M_AYPRO_TECHNOLOGY ['356', '"AYPRO Technology"']]
+    ['306' M_HEFEI_ECOLITE_SOFTWARE ['357', '"Hefei Ecolite Software"']]
+    ['307' M_ENNO ['358', '"Enno"']]
+    ['308' M_OHOSURE ['359', '"OHOSURE"']]
+    ['309' M_GAREFOWL ['360', '"Garefowl"']]
+    ['310' M_GEZE ['361', '"GEZE"']]
+    ['311' M_LG_ELECTRONICS_INC_ ['362', '"LG Electronics Inc."']]
+    ['312' M_SMC_INTERIORS ['363', '"SMC interiors"']]
+    ['313' M_NOT_ASSIGNED_364 ['364', '"Not Assigned"']]
+    ['314' M_SCS_CABLE ['365', '"SCS Cable"']]
+    ['315' M_HOVAL ['366', '"Hoval"']]
+    ['316' M_CANST ['367', '"CANST"']]
+    ['317' M_HANGZHOU_BERLIN ['368', '"HangZhou Berlin"']]
+    ['318' M_EVN_LICHTTECHNIK ['369', '"EVN-Lichttechnik"']]
+    ['319' M_RUTEC ['370', '"rutec"']]
+    ['320' M_FINDER ['371', '"Finder"']]
+    ['321' M_FUJITSU_GENERAL_LIMITED ['372', '"Fujitsu General Limited"']]
+    ['322' M_ZF_FRIEDRICHSHAFEN_AG ['373', '"ZF Friedrichshafen AG"']]
+    ['323' M_CREALED ['374', '"Crealed"']]
+    ['324' M_MILES_MAGIC_AUTOMATION_PRIVATE_LIMITED ['375', '"Miles Magic Automation Private Limited"']]
+    ['325' M_EPlus ['376', '"E+"']]
+    ['326' M_ITALCOND ['377', '"Italcond"']]
+    ['327' M_SATION ['378', '"SATION"']]
+    ['328' M_NEWBEST ['379', '"NewBest"']]
+    ['329' M_GDS_DIGITAL_SYSTEMS ['380', '"GDS DIGITAL SYSTEMS"']]
+    ['330' M_IDDERO ['381', '"Iddero"']]
+    ['331' M_MBNLED ['382', '"MBNLED"']]
+    ['332' M_VITRUM ['383', '"VITRUM"']]
+    ['333' M_EKEY_BIOMETRIC_SYSTEMS_GMBH ['384', '"ekey biometric systems GmbH"']]
+    ['334' M_AMC ['385', '"AMC"']]
+    ['335' M_TRILUX_GMBH_AND_CO__KG ['386', '"TRILUX GmbH & Co. KG"']]
+    ['336' M_WEXCEDO ['387', '"WExcedo"']]
+    ['337' M_VEMER_SPA ['388', '"VEMER SPA"']]
+    ['338' M_ALEXANDER_BUERKLE_GMBH_AND_CO_KG ['389', '"Alexander Bürkle GmbH & Co KG"']]
+    ['339' M_CITRON ['390', '"Citron"']]
+    ['340' M_SHENZHEN_HEGUANG ['391', '"Shenzhen HeGuang"']]
+    ['341' M_NOT_ASSIGNED_392 ['392', '"Not Assigned"']]
+    ['342' M_TRANE_B_V_B_A ['393', '"TRANE B.V.B.A"']]
+    ['343' M_CAREL ['394', '"CAREL"']]
+    ['344' M_PROLITE_CONTROLS ['395', '"Prolite Controls"']]
+    ['345' M_BOSMER ['396', '"BOSMER"']]
+    ['346' M_EUCHIPS ['397', '"EUCHIPS"']]
+    ['347' M_CONNECT_THINKA_CONNECT ['398', '"connect (Thinka connect)"']]
+    ['348' M_PEAKNX_A_DOGAWIST_COMPANY ['399', '"PEAKnx a DOGAWIST company"']]
+    ['349' M_ACEMATIC ['400', '"ACEMATIC"']]
+    ['350' M_ELAUSYS ['401', '"ELAUSYS"']]
+    ['351' M_ITK_ENGINEERING_AG ['402', '"ITK Engineering AG"']]
+    ['352' M_INTEGRA_METERING_AG ['403', '"INTEGRA METERING AG"']]
+    ['353' M_FMS_HOSPITALITY_PTE_LTD ['404', '"FMS Hospitality Pte Ltd"']]
+    ['354' M_NUVO ['405', '"Nuvo"']]
+    ['355' M_U__LUX_GMBH ['406', '"u::Lux GmbH"']]
+    ['356' M_BRUMBERG_LEUCHTEN ['407', '"Brumberg Leuchten"']]
+    ['357' M_LIME ['408', '"Lime"']]
+    ['358' M_GREAT_EMPIRE_INTERNATIONAL_GROUP_CO___LTD_ ['409', '"Great Empire International Group Co., Ltd."']]
+    ['359' M_KAVOSHPISHRO_ASIA ['410', '"Kavoshpishro Asia"']]
+    ['360' M_V2_SPA ['411', '"V2 SpA"']]
+    ['361' M_JOHNSON_CONTROLS ['412', '"Johnson Controls"']]
+    ['362' M_ARKUD ['413', '"Arkud"']]
+    ['363' M_IRIDIUM_LTD_ ['414', '"Iridium Ltd."']]
+    ['364' M_BSMART ['415', '"bsmart"']]
+    ['365' M_BAB_TECHNOLOGIE_GMBH ['416', '"BAB TECHNOLOGIE GmbH"']]
+    ['366' M_NICE_SPA ['417', '"NICE Spa"']]
+    ['367' M_REDFISH_GROUP_PTY_LTD ['418', '"Redfish Group Pty Ltd"']]
+    ['368' M_SABIANA_SPA ['419', '"SABIANA spa"']]
+    ['369' M_UBEE_INTERACTIVE_EUROPE ['420', '"Ubee Interactive Europe"']]
+    ['370' M_REXEL ['421', '"Rexel"']]
+    ['371' M_GES_TEKNIK_A_S_ ['422', '"Ges Teknik A.S."']]
+    ['372' M_AVE_S_P_A_ ['423', '"Ave S.p.A."']]
+    ['373' M_ZHUHAI_LTECH_TECHNOLOGY_CO___LTD_ ['424', '"Zhuhai Ltech Technology Co., Ltd."']]
+    ['374' M_ARCOM ['425', '"ARCOM"']]
+    ['375' M_VIA_TECHNOLOGIES__INC_ ['426', '"VIA Technologies, Inc."']]
+    ['376' M_FEELSMART_ ['427', '"FEELSMART."']]
+    ['377' M_SUPCON ['428', '"SUPCON"']]
+    ['378' M_MANIC ['429', '"MANIC"']]
+    ['379' M_TDE_GMBH ['430', '"TDE GmbH"']]
+    ['380' M_NANJING_SHUFAN_INFORMATION_TECHNOLOGY_CO__LTD_ ['431', '"Nanjing Shufan Information technology Co.,Ltd."']]
+    ['381' M_EWTECH ['432', '"EWTech"']]
+    ['382' M_KLUGER_AUTOMATION_GMBH ['433', '"Kluger Automation GmbH"']]
+    ['383' M_JOONGANG_CONTROL ['434', '"JoongAng Control"']]
+    ['384' M_GREENCONTROLS_TECHNOLOGY_SDN__BHD_ ['435', '"GreenControls Technology Sdn. Bhd."']]
+    ['385' M_IME_S_P_A_ ['436', '"IME S.p.a."']]
+    ['386' M_SICHUAN_HAODING ['437', '"SiChuan HaoDing"']]
+    ['387' M_MINDJAGA_LTD_ ['438', '"Mindjaga Ltd."']]
+    ['388' M_RUILI_SMART_CONTROL ['439', '"RuiLi Smart Control"']]
+    ['389' M_CODESYS_GMBH ['440', '"CODESYS GmbH"']]
+    ['390' M_MOORGEN_DEUTSCHLAND_GMBH ['441', '"Moorgen Deutschland GmbH"']]
+    ['391' M_CULLMANN_TECH ['442', '"CULLMANN TECH"']]
+    ['392' M_EYRISE_B_V ['443', '"eyrise B.V"']]
+    ['393' M_ABEGO ['444', '"ABEGO"']]
+    ['394' M_MYGEKKO ['445', '"myGEKKO"']]
+    ['395' M_ERGO3_SARL ['446', '"Ergo3 Sarl"']]
+    ['396' M_STMICROELECTRONICS_INTERNATIONAL_N_V_ ['447', '"STmicroelectronics International N.V."']]
+    ['397' M_CJC_SYSTEMS ['448', '"cjc systems"']]
+    ['398' M_SUDOKU ['449', '"Sudoku"']]
+    ['399' M_AZ_E_LITE_PTE_LTD ['451', '"AZ e-lite Pte Ltd"']]
+    ['400' M_ARLIGHT ['452', '"Arlight"']]
+    ['401' M_GRUENBECK_WASSERAUFBEREITUNG_GMBH ['453', '"Grünbeck Wasseraufbereitung GmbH"']]
+    ['402' M_MODULE_ELECTRONIC ['454', '"Module Electronic"']]
+    ['403' M_KOPLAT ['455', '"KOPLAT"']]
+    ['404' M_GUANGZHOU_LETOUR_LIFE_TECHNOLOGY_CO___LTD ['456', '"Guangzhou Letour Life Technology Co., Ltd"']]
+    ['405' M_ILEVIA ['457', '"ILEVIA"']]
+    ['406' M_LN_SYSTEMTEQ ['458', '"LN SYSTEMTEQ"']]
+    ['407' M_HISENSE_SMARTHOME ['459', '"Hisense SmartHome"']]
+    ['408' M_FLINK_AUTOMATION_SYSTEM ['460', '"Flink Automation System"']]
+    ['409' M_XXTER_BV ['461', '"xxter bv"']]
+    ['410' M_LYNXUS_TECHNOLOGY ['462', '"lynxus technology"']]
+    ['411' M_ROBOT_S_A_ ['463', '"ROBOT S.A."']]
+    ['412' M_SHENZHEN_ATTE_SMART_LIFE_CO__LTD_ ['464', '"Shenzhen Atte Smart Life Co.,Ltd."']]
+    ['413' M_NOBLESSE ['465', '"Noblesse"']]
+    ['414' M_ADVANCED_DEVICES ['466', '"Advanced Devices"']]
+    ['415' M_ATRINA_BUILDING_AUTOMATION_CO__LTD ['467', '"Atrina Building Automation Co. Ltd"']]
+    ['416' M_GUANGDONG_DAMING_LAFFEY_ELECTRIC_CO___LTD_ ['468', '"Guangdong Daming Laffey electric Co., Ltd."']]
+    ['417' M_WESTERSTRAND_URFABRIK_AB ['469', '"Westerstrand Urfabrik AB"']]
+    ['418' M_CONTROL4_CORPORATE ['470', '"Control4 Corporate"']]
+    ['419' M_ONTROL ['471', '"Ontrol"']]
+    ['420' M_STARNET ['472', '"Starnet"']]
+    ['421' M_BETA_CAVI ['473', '"BETA CAVI"']]
+    ['422' M_EASEMORE ['474', '"EaseMore"']]
+    ['423' M_VIVALDI_SRL ['475', '"Vivaldi srl"']]
+    ['424' M_GREE_ELECTRIC_APPLIANCES_INC__OF_ZHUHAI ['476', '"Gree Electric Appliances,Inc. of Zhuhai"']]
+    ['425' M_HWISCON ['477', '"HWISCON"']]
+    ['426' M_SHANGHAI_ELECON_INTELLIGENT_TECHNOLOGY_CO___LTD_ ['478', '"Shanghai ELECON Intelligent Technology Co., Ltd."']]
+    ['427' M_KAMPMANN ['479', '"Kampmann"']]
+    ['428' M_IMPOLUX_GMBH_LEDIMAX ['480', '"Impolux GmbH / LEDIMAX"']]
+    ['429' M_EVAUX ['481', '"Evaux"']]
+    ['430' M_WEBRO_CABLES_AND_CONNECTORS_LIMITED ['482', '"Webro Cables & Connectors Limited"']]
+    ['431' M_SHANGHAI_E_TECH_SOLUTION ['483', '"Shanghai E-tech Solution"']]
+    ['432' M_GUANGZHOU_HOKO_ELECTRIC_CO__LTD_ ['484', '"Guangzhou HOKO Electric Co.,Ltd."']]
+    ['433' M_LAMMIN_HIGH_TECH_CO__LTD ['485', '"LAMMIN HIGH TECH CO.,LTD"']]
+    ['434' M_SHENZHEN_MERRYTEK_TECHNOLOGY_CO___LTD ['486', '"Shenzhen Merrytek Technology Co., Ltd"']]
+    ['435' M_I_LUXUS ['487', '"I-Luxus"']]
+    ['436' M_ELMOS_SEMICONDUCTOR_AG ['488', '"Elmos Semiconductor AG"']]
+    ['437' M_EMCOM_TECHNOLOGY_INC ['489', '"EmCom Technology Inc"']]
+    ['438' M_PROJECT_INNOVATIONS_GMBH ['490', '"project innovations GmbH"']]
+    ['439' M_ITC ['491', '"Itc"']]
+    ['440' M_ABB_LV_INSTALLATION_MATERIALS_COMPANY_LTD__BEIJING ['492', '"ABB LV Installation Materials Company Ltd, Beijing"']]
+    ['441' M_MAICO ['493', '"Maico"']]
+    ['442' M_ELAN_SRL ['495', '"ELAN SRL"']]
+    ['443' M_MINHHA_TECHNOLOGY_CO__LTD ['496', '"MinhHa Technology co.,Ltd"']]
+    ['444' M_ZHEJIANG_TIANJIE_INDUSTRIAL_CORP_ ['497', '"Zhejiang Tianjie Industrial CORP."']]
+    ['445' M_IAUTOMATION_PTY_LIMITED ['498', '"iAutomation Pty Limited"']]
+    ['446' M_EXTRON ['499', '"Extron"']]
+    ['447' M_FREEDOMPRO ['500', '"Freedompro"']]
+    ['448' M_ONEHOME ['501', '"1Home"']]
+    ['449' M_EOS_SAUNATECHNIK_GMBH ['502', '"EOS Saunatechnik GmbH"']]
+    ['450' M_KUSATEK_GMBH ['503', '"KUSATEK GmbH"']]
+    ['451' M_EISBAER_SCADA ['504', '"EisBär Scada"']]
+    ['452' M_AUTOMATISMI_BENINCA_S_P_A_ ['505', '"AUTOMATISMI BENINCA S.P.A."']]
+    ['453' M_BLENDOM ['506', '"Blendom"']]
+    ['454' M_MADEL_AIR_TECHNICAL_DIFFUSION ['507', '"Madel Air Technical diffusion"']]
+    ['455' M_NIKO ['508', '"NIKO"']]
+    ['456' M_BOSCH_REXROTH_AG ['509', '"Bosch Rexroth AG"']]
+    ['457' M_CANDM_PRODUCTS ['512', '"C&M Products"']]
+    ['458' M_HOERMANN_KG_VERKAUFSGESELLSCHAFT ['513', '"Hörmann KG Verkaufsgesellschaft"']]
+    ['459' M_SHANGHAI_RAJAYASA_CO__LTD ['514', '"Shanghai Rajayasa co.,LTD"']]
+    ['460' M_SUZUKI ['515', '"SUZUKI"']]
+    ['461' M_SILENT_GLISS_INTERNATIONAL_LTD_ ['516', '"Silent Gliss International Ltd."']]
+    ['462' M_BEE_CONTROLS_ADGSC_GROUP ['517', '"BEE Controls (ADGSC Group)"']]
+    ['463' M_XDTECGMBH ['518', '"xDTecGmbH"']]
+    ['464' M_OSRAM ['519', '"OSRAM"']]
+    ['465' M_LEBENOR ['520', '"Lebenor"']]
+    ['466' M_AUTOMANENG ['521', '"automaneng"']]
+    ['467' M_HONEYWELL_AUTOMATION_SOLUTION_CONTROLCHINA ['522', '"Honeywell Automation Solution control(China)"']]
+    ['468' M_HANGZHOU_BINTHEN_INTELLIGENCE_TECHNOLOGY_CO__LTD ['523', '"Hangzhou binthen Intelligence Technology Co.,Ltd"']]
+    ['469' M_ETA_HEIZTECHNIK ['524', '"ETA Heiztechnik"']]
+    ['470' M_DIVUS_GMBH ['525', '"DIVUS GmbH"']]
+    ['471' M_NANJING_TAIJIESAI_INTELLIGENT_TECHNOLOGY_CO__LTD_ ['526', '"Nanjing Taijiesai Intelligent Technology Co. Ltd."']]
+    ['472' M_LUNATONE ['527', '"Lunatone"']]
+    ['473' M_ZHEJIANG_SCTECH_BUILDING_INTELLIGENT ['528', '"ZHEJIANG SCTECH BUILDING INTELLIGENT"']]
+    ['474' M_FOSHAN_QITE_TECHNOLOGY_CO___LTD_ ['529', '"Foshan Qite Technology Co., Ltd."']]
+    ['475' M_NOKE ['530', '"NOKE"']]
+    ['476' M_LANDCOM ['531', '"LANDCOM"']]
+    ['477' M_STORK_AS ['532', '"Stork AS"']]
+    ['478' M_HANGZHOU_SHENDU_TECHNOLOGY_CO___LTD_ ['533', '"Hangzhou Shendu Technology Co., Ltd."']]
+    ['479' M_COOLAUTOMATION ['534', '"CoolAutomation"']]
+    ['480' M_APRSTERN ['535', '"Aprstern"']]
+    ['481' M_SONNEN ['536', '"sonnen"']]
+    ['482' M_DNAKE ['537', '"DNAKE"']]
+    ['483' M_NEUBERGER_GEBAEUDEAUTOMATION_GMBH ['538', '"Neuberger Gebäudeautomation GmbH"']]
+    ['484' M_STILIGER ['539', '"Stiliger"']]
+    ['485' M_BERGHOF_AUTOMATION_GMBH ['540', '"Berghof Automation GmbH"']]
+    ['486' M_TOTAL_AUTOMATION_AND_CONTROLS_GMBH ['541', '"Total Automation and controls GmbH"']]
+    ['487' M_DOVIT ['542', '"dovit"']]
+    ['488' M_INSTALIGHTING_GMBH ['543', '"Instalighting GmbH"']]
+    ['489' M_UNI_TEC ['544', '"UNI-TEC"']]
+    ['490' M_CASATUNES ['545', '"CasaTunes"']]
+    ['491' M_EMT ['546', '"EMT"']]
+    ['492' M_SENFFICIENT ['547', '"Senfficient"']]
+    ['493' M_AUROLITE_ELECTRICAL_PANYU_GUANGZHOU_LIMITED ['548', '"Aurolite electrical panyu guangzhou limited"']]
+    ['494' M_ABB_XIAMEN_SMART_TECHNOLOGY_CO___LTD_ ['549', '"ABB Xiamen Smart Technology Co., Ltd."']]
+    ['495' M_SAMSON_ELECTRIC_WIRE ['550', '"Samson Electric Wire"']]
+    ['496' M_T_TOUCHING ['551', '"T-Touching"']]
+    ['497' M_CORE_SMART_HOME ['552', '"Core Smart Home"']]
+    ['498' M_GREENCONNECT_SOLUTIONS_SA ['553', '"GreenConnect Solutions SA"']]
+    ['499' M_ELETTRONICA_CONDUTTORI ['554', '"ELETTRONICA CONDUTTORI"']]
+    ['500' M_MKFC ['555', '"MKFC"']]
+    ['501' M_AUTOMATIONPlus ['556', '"Automation+"']]
+    ['502' M_BLUE_AND_RED ['557', '"blue and red"']]
+    ['503' M_FROGBLUE ['558', '"frogblue"']]
+    ['504' M_SAVESOR ['559', '"SAVESOR"']]
+    ['505' M_APP_TECH ['560', '"App Tech"']]
+    ['506' M_SENSORTEC_AG ['561', '"sensortec AG"']]
+    ['507' M_NYSA_TECHNOLOGY_AND_SOLUTIONS ['562', '"nysa technology & solutions"']]
+    ['508' M_FARADITE ['563', '"FARADITE"']]
+    ['509' M_OPTIMUS ['564', '"Optimus"']]
+    ['510' M_KTS_S_R_L_ ['565', '"KTS s.r.l."']]
+    ['511' M_RAMCRO_SPA ['566', '"Ramcro SPA"']]
+    ['512' M_WUHAN_WISECREATE_UNIVERSE_TECHNOLOGY_CO___LTD ['567', '"Wuhan WiseCreate Universe Technology Co., Ltd"']]
+    ['513' M_BEMI_SMART_HOME_LTD ['568', '"BEMI Smart Home Ltd"']]
+    ['514' M_ARDOMUS ['569', '"Ardomus"']]
+    ['515' M_CHANGXING ['570', '"ChangXing"']]
+    ['516' M_E_CONTROLS ['571', '"E-Controls"']]
+    ['517' M_AIB_TECHNOLOGY ['572', '"AIB Technology"']]
+    ['518' M_NVC ['573', '"NVC"']]
+    ['519' M_KBOX ['574', '"Kbox"']]
+    ['520' M_CNS ['575', '"CNS"']]
+    ['521' M_TYBA ['576', '"Tyba"']]
+    ['522' M_ATREL ['577', '"Atrel"']]
+    ['523' M_SIMON_ELECTRIC_CHINA_CO___LTD ['578', '"Simon Electric (China) Co., LTD"']]
+    ['524' M_KORDZ_GROUP ['579', '"Kordz Group"']]
+    ['525' M_ND_ELECTRIC ['580', '"ND Electric"']]
+    ['526' M_CONTROLIUM ['581', '"Controlium"']]
+    ['527' M_FAMO_GMBH_AND_CO__KG ['582', '"FAMO GmbH & Co. KG"']]
+    ['528' M_CDN_SMART ['583', '"CDN Smart"']]
+    ['529' M_HESTON ['584', '"Heston"']]
+    ['530' M_ESLA_CONEXIONES_S_L_ ['585', '"ESLA CONEXIONES S.L."']]
+    ['531' M_WEISHAUPT ['586', '"Weishaupt"']]
+    ['532' M_ASTRUM_TECHNOLOGY ['587', '"ASTRUM TECHNOLOGY"']]
+    ['533' M_WUERTH_ELEKTRONIK_STELVIO_KONTEK_S_P_A_ ['588', '"WUERTH ELEKTRONIK STELVIO KONTEK S.p.A."']]
+    ['534' M_NANOTECO_CORPORATION ['589', '"NANOTECO corporation"']]
+    ['535' M_NIETIAN ['590', '"Nietian"']]
+    ['536' M_SUMSIR ['591', '"Sumsir"']]
+    ['537' M_ORBIS_TECNOLOGIA_ELECTRICA_SA ['592', '"ORBIS TECNOLOGIA ELECTRICA SA"']]
+    ['538' M_NANJING_ZHONGYI_IOT_TECHNOLOGY_CO___LTD_ ['593', '"Nanjing Zhongyi IoT Technology Co., Ltd."']]
+    ['539' M_ANLIPS ['594', '"Anlips"']]
+    ['540' M_GUANGDONG_PAK_CORPORATION_CO___LTD ['595', '"GUANGDONG PAK CORPORATION CO., LTD"']]
+    ['541' M_BVK_TECHNOLOGY ['596', '"BVK Technology"']]
+    ['542' M_SOLOMIO_SRL ['597', '"Solomio srl"']]
+    ['543' M_DOMOTICA_LABS ['598', '"Domotica Labs"']]
+    ['544' M_NVC_INTERNATIONAL ['599', '"NVC International"']]
+    ['545' M_BA ['600', '"BA"']]
+    ['546' M_IRIS_CERAMICA_GROUP ['601', '"Iris Ceramica Group"']]
+    ['547' M_WIREEO ['602', '"Wireeo"']]
+    ['548' M_NVCLIGHTING ['603', '"nvclighting"']]
+    ['549' M_JINAN_TIAN_DA_SHENG_INFORMATION_TECHNOLOGY_CO_ ['604', '"Jinan Tian Da Sheng Information Technology Co."']]
+    ['550' M_ARMITI_TRADING ['605', '"Armiti trading"']]
+    ['551' M_ELEK ['606', '"ELEK"']]
+    ['552' M_ACCORDIA_SA ['607', '"Accordia sa"']]
+    ['553' M_OURICAN ['608', '"OURICAN"']]
+    ['554' M_INLIWOSE ['609', '"INLIWOSE"']]
+    ['555' M_BOSCH_SHANGHAI_SMART_LIFE_TECHNOLOGY_LTD_ ['610', '"Bosch (Shanghai) Smart Life Technology Ltd."']]
+    ['556' M_SHK_KNX ['611', '"SHK KNX"']]
+    ['557' M_AMPIO ['612', '"Ampio"']]
+    ['558' M_MINGXING_WISDOM ['613', '"Mingxing Wisdom"']]
+    ['559' M_ALTEN_SW_GMBH ['614', '"ALTEN SW GmbH"']]
+    ['560' M_V_Y_C_SRL ['615', '"V.Y.C.srl"']]
+    ['561' M_TERMINUS_GROUP ['616', '"TERMINUS GROUP"']]
+    ['562' M_WONDERFUL_CITY_TECHNOLOGY ['617', '"Wonderful City Technology"']]
+    ['563' M_QBICTECHNOLOGY ['618', '"QbicTechnology"']]
+    ['564' M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED ['619', '"Embedded Automation Equipment (Shanghai) Limited"']]
+    ['565' M_ONEWORK ['620', '"onework"']]
+    ['566' M_PL_LINK ['621', '"PL LINK"']]
+    ['567' M_FASEL_GMBH_ELEKTRONIK ['622', '"Fasel GmbH Elektronik"']]
+    ['568' M_GOLDENHOME_SMART ['623', '"GoldenHome Smart"']]
+    ['569' M_GOLDMEDAL ['624', '"Goldmedal"']]
+    ['570' M_CannX ['625', '"Can'nX"']]
+    ['571' M_EGI___EARTH_GOODNESS ['627', '"EGI - Earth Goodness"']]
+    ['572' M_VIEGA_GMBH_AND_CO__KG ['628', '"Viega GmbH & Co. KG"']]
+    ['573' M_FREDON_DIGITAL_BUILDINGS ['629', '"Fredon Digital Buildings"']]
+    ['574' M_HELUKABEL_THAILAND_CO__LTD_ ['630', '"Helukabel (Thailand) Co.,Ltd."']]
+    ['575' M_ACE_TECHNOLOGY ['631', '"ACE Technology"']]
+    ['576' M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD ['632', '"MEX Electric Technology (Shanghai) Co., Ltd"']]
+    ['577' M_SUMAMO ['633', '"SUMAMO"']]
+    ['578' M_SVIT ['634', '"SVIT"']]
+    ['579' M_TECGET ['635', '"tecget"']]
+    ['580' M_XEROPOINT ['636', '"Xeropoint"']]
+    ['581' M_HONEYWELL_BUILDING_TECHNOLOGIES ['637', '"Honeywell Building Technologies"']]
+    ['582' M_COMFORTCLICK ['638', '"ComfortClick"']]
+    ['583' M_DORBAS_ELECTRIC ['639', '"DORBAS ELECTRIC"']]
+    ['584' M_REMKO_GMBH_AND_CO__KG ['640', '"REMKO GmbH & Co. KG"']]
+    ['585' M_SHENZHEN_CONGXUN_INTELLIGENT_TECHNOLOGY_CO___LTD ['641', '"Shenzhen Congxun Intelligent Technology Co., LTD"']]
+    ['586' M_ANDAS ['642', '"ANDAS"']]
+    ['587' M_HEFEI_CHUANG_YUE_INTELLIGENT_TECHNOLOGY_CO__LTD ['643', '"Hefei Chuang Yue Intelligent Technology Co.,LTD"']]
+    ['588' M_LARFE ['644', '"Larfe"']]
+    ['589' M_DONGGUAN_MUHCCI_ELECTRICAL ['645', '"Dongguan Muhcci Electrical"']]
+    ['590' M_STEC ['646', '"STEC"']]
+    ['591' M_ARIGO_SOFTWARE_GMBH ['647', '"ARIGO Software GmbH"']]
+    ['592' M_FEISHELEC ['648', '"Feishelec"']]
+    ['593' M_GORDIC ['649', '"GORDIC"']]
+    ['594' M_DELTA_ELECTRONICS ['650', '"Delta Electronics"']]
+    ['595' M_SHANGHAI_LEWIN_INTELLIGENT_TECHNOLOGY_CO__LTD_ ['651', '"Shanghai Lewin Intelligent Technology Co.,Ltd."']]
+    ['596' M_KG_POWER ['652', '"KG-POWER"']]
+    ['597' M_ZHEJIANG_MOORGEN_GROUP_CO__LTD ['653', '"Zhejiang Moorgen Group Co.,Ltd"']]
+    ['598' M_GUANGDONG_KANWAY ['654', '"Guangdong Kanway"']]
+    ['599' M_RAMIREZ_ENGINEERING_GMBH ['656', '"RAMIREZ Engineering GmbH"']]
+    ['600' M_ZHONGSHAN_TAIYANG_IMPANDEXP__CO_LTD ['657', '"Zhongshan Taiyang IMP&EXP. CO LTD"']]
+    ['601' M_VIHAN_ELECTRIC_PVT_LTD ['658', '"Vihan electric pvt ltd"']]
+    ['602' M_SPLENDID_MINDS_GMBH ['659', '"Splendid Minds GmbH"']]
+    ['603' M_ESTADA ['660', '"Estada"']]
+    ['604' M_ZHONGYUNXINZHIKONGGUJITUANYOUXIANGONGSI ['661', '"zhongyunxinzhikonggujituanyouxiangongsi"']]
+    ['605' M_STUHL_REGELSYSTEME_GMBH ['662', '"Stuhl Regelsysteme GmbH"']]
+    ['606' M_SHENZHEN_GLUCK_TECHNOLOGY_CO___LTD ['663', '"Shenzhen Gluck Technology Co., LTD"']]
+    ['607' M_GAIMEX ['664', '"Gaimex"']]
+    ['608' M_B3_INTERNATIONAL_S_R_L ['665', '"B3 International S.R.L"']]
+    ['609' M_MM_ELECTRO ['666', '"MM Electro"']]
+    ['610' M_CASCODA ['667', '"CASCODA"']]
+    ['611' M_XIAMEN_INTRETECH_INC_ ['668', '"Xiamen Intretech Inc."']]
+    ['612' M_KILOELEC_TECHNOLOGY ['669', '"KiloElec Technology"']]
+    ['613' M_INYX ['670', '"Inyx"']]
+    ['614' M_SMART_BUILDING_SERVICES_GMBH ['671', '"Smart Building Services GmbH"']]
+    ['615' M_BSS_GMBH ['672', '"BSS GmbH"']]
+    ['616' M_LUMI_ELECTRONICS ['673', '"Lumi Electronics"']]
+    ['617' M_OJEAELECTRONICS ['674', '"OjeaElectronics"']]
+    ['618' M_SMART_NODE ['675', '"Smart Node"']]
+    ['619' M_NEXHOME ['676', '"NEXhome"']]
+    ['620' M_HUOTENG_WULIAN_JIANGSU_CO___LTD ['677', '"Huoteng Wulian (Jiangsu) Co., Ltd"']]
+    ['621' M_RAYLOGIC_CONTROL_SYSTEMS_PVT_LTD ['678', '"Raylogic Control Systems Pvt Ltd"']]
+    ['622' M_BITS_AND_BYTES ['679', '"Bits & Bytes"']]
+    ['623' M_KFV_SIEGENIA_GRUPPE ['680', '"KFV (SIEGENIA GRUPPE)"']]
+    ['624' M_SYMCON ['681', '"Symcon"']]
+    ['625' M_I_TRUST ['682', '"I.Trust"']]
+    ['626' M_DRD_TECHNICS ['683', '"DRD-Technics"']]
+    ['627' M_LENGEN ['684', '"LENGEN"']]
+    ['628' M_SHENZHEN_EXC_LED_TECHNOLOGY_CO__LTD ['685', '"Shenzhen EXC-LED Technology Co.,LTD"']]
+    ['629' M_VIBROXX_FZCO ['686', '"Vibroxx-FZCO"']]
+    ['630' M_SUZHOU_HONGYUN_INTELLIGENT_TECHNOLOGYCO___LTD ['687', '"Suzhou Hongyun Intelligent TechnologyCo., Ltd"']]
+    ['631' M_PASSIV_ENERGIE_GMBH ['688', '"Passiv Energie GmbH"']]
+    ['632' M_PAYNE_TECHNOLOGIES_LTD ['689', '"Payne Technologies Ltd"']]
+    ['633' M_GUANGDONG_YOZEWIT_INTELLIGENT_TECHNOLOGY_CO__LTD_ ['690', '"Guangdong Yozewit Intelligent Technology Co.,Ltd."']]
+    ['634' M_SEXANKA ['691', '"SEXANKA"']]
+    ['635' M_SECURI_FLEX_LTD ['692', '"Securi-Flex Ltd"']]
+    ['636' M_BOKE ['693', '"BOKE"']]
+    ['637' M_SBR_SYSTEM_TECHNICAL ['695', '"SBR System Technical"']]
+    ['638' M_SHENZHEN_EASTKAME_TECHNOLOGY_CO___LTD_ ['696', '"Shenzhen EastKame Technology Co., Ltd."']]
+    ['639' M_BOLATU ['697', '"BOLATU"']]
+    ['640' M_RECBER_KABLO_A_S_ ['698', '"RECBER KABLO A.S."']]
+    ['641' M_ILITE_KNX ['699', '"ILite-Knx"']]
+    ['642' M_LAZZEN ['700', '"LAZZEN"']]
+    ['643' M_MOX_CONTROL_IT_CHINA_LIMITED ['701', '"MOX CONTROL IT (CHINA) LIMITED"']]
+    ['644' M_CLOWIRE ['702', '"CLOWIRE"']]
+    ['645' M_NINGBO_QIYUAN_LIGHTING_TECH_CO__LTD ['703', '"NINGBO QIYUAN LIGHTING TECH CO.,LTD"']]
+    ['646' M_NS_TOUCH ['704', '"NS Touch"']]
+    ['647' M_ROOMIO ['705', '"ROOMIO"']]
+    ['648' M_ABB___RESERVED ['43954', '"ABB - reserved"']]
+    ['649' M_BUSCH_JAEGER_ELEKTRO___RESERVED ['43959', '"Busch-Jaeger Elektro - reserved"']]
+    
+]
+
+[dataIo KnxDatapoint(KnxDatapointType datapointType)
+    [typeSwitch datapointType
+        ['BOOL' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value]
+        ]
+        ['BYTE' BYTE
+            [reserved uint 8    '0x00']
+            [simple   uint 8    value ]
+        ]
+        ['WORD' WORD
+            [reserved uint 8    '0x00']
+            [simple   uint 16    value]
+        ]
+        ['DWORD' DWORD
+            [reserved uint 8    '0x00']
+            [simple   uint 32    value]
+        ]
+        ['LWORD' LWORD
+            [reserved uint 8    '0x00']
+            [simple   uint 64    value]
+        ]
+        ['USINT' USINT
+            [reserved uint 8    '0x00']
+            [simple   uint 8     value]
+        ]
+        ['SINT' SINT
+            [reserved uint 8    '0x00']
+            [simple   int 8      value]
+        ]
+        ['UINT' UINT
+            [reserved uint 8    '0x00']
+            [simple   uint 16    value]
+        ]
+        ['INT' INT
+            [reserved uint 8    '0x00']
+            [simple   int 16     value]
+        ]
+        ['UDINT' UDINT
+            [reserved uint 8    '0x00']
+            [simple   uint 32    value]
+        ]
+        ['DINT' DINT
+            [reserved uint 8    '0x00']
+            [simple   int 32     value]
+        ]
+        ['ULINT' ULINT
+            [reserved uint 8    '0x00']
+            [simple   uint 64    value]
+        ]
+        ['LINT' LINT
+            [reserved uint 8    '0x00']
+            [simple   int 64     value]
+        ]
+        ['REAL' REAL
+            [reserved uint 8    '0x00']
+            [simple   float 32 value]
+        ]
+        ['LREAL' LREAL
+            [reserved uint 8    '0x00']
+            [simple   float 64  value ]
+        ]
+        ['CHAR' CHAR
+            [reserved uint 8    '0x00']
+            [simple   string 8  value  encoding='"UTF-8"']
+        ]
+        ['WCHAR' WCHAR
+            [reserved uint 8    '0x00']
+            [simple   string 16 value  encoding='"UTF-16"']
+        ]
+        //['STRING' STRING
+        //]
+        //['WSTRING' WSTRING
+        //]
+        ['TIME' TIME
+            [reserved uint 8    '0x00'      ]
+            // TODO: Check if this is correct ...
+            [simple   uint 32   milliseconds]
+        ]
+        ['LTIME' LTIME
+            [reserved uint 8    '0x00'     ]
+            // TODO: Check if this is correct ...
+            [simple   uint 64   nanoseconds]
+        ]
+        ['DATE' DATE
+            [reserved uint 8    '0x00'           ]
+            // TODO: Check if this is correct ...
+            [simple   uint 32   secondsSinceEpoch]
+        ]
+        ['TIME_OF_DAY' TIME_OF_DAY
+            [reserved uint 8    '0x00'                   ]
+            // TODO: Check if this is correct ...
+            [simple   uint 32   millisecondsSinceMidnight]
+        ]
+        ['TOD' TIME_OF_DAY
+            [reserved uint 8    '0x00'                   ]
+            // TODO: Check if this is correct ...
+            [simple   uint 32   millisecondsSinceMidnight]
+        ]
+        ['DATE_AND_TIME' DATE_AND_TIME
+            [reserved uint 8  '0x00'     ]
+            [simple   uint 16 year       ]
+            [simple   uint 8  month      ]
+            [simple   uint 8  day        ]
+            [simple   uint 8  dayOfWeek  ]
+            [simple   uint 8  hour       ]
+            [simple   uint 8  minutes    ]
+            [simple   uint 8  seconds    ]
+            [simple   uint 32 nanoseconds]
+        ]
+        ['DT' DATE_AND_TIME
+            [reserved uint 8  '0x00'     ]
+            [simple   uint 16 year       ]
+            [simple   uint 8  month      ]
+            [simple   uint 8  day        ]
+            [simple   uint 8  dayOfWeek  ]
+            [simple   uint 8  hour       ]
+            [simple   uint 8  minutes    ]
+            [simple   uint 8  seconds    ]
+            [simple   uint 32 nanoseconds]
+        ]
+
+    
+        ['DPT_Switch' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Bool' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Enable' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Ramp' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Alarm' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_BinaryValue' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Step' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_UpDown' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_OpenClose' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Start' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_State' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Invert' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_DimSendStyle' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_InputSource' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Reset' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Ack' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Trigger' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Occupancy' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Window_Door' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_LogicalFunction' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Scene_AB' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_ShutterBlinds_Mode' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_DayNight' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Heat_Cool' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_Switch_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit on]
+                
+        ]
+    
+        ['DPT_Bool_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit valueTrue]
+                
+        ]
+    
+        ['DPT_Enable_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit enable]
+                
+        ]
+    
+        ['DPT_Ramp_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit ramp]
+                
+        ]
+    
+        ['DPT_Alarm_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit alarm]
+                
+        ]
+    
+        ['DPT_BinaryValue_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit high]
+                
+        ]
+    
+        ['DPT_Step_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit increase]
+                
+        ]
+    
+        ['DPT_Direction1_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit down]
+                
+        ]
+    
+        ['DPT_Direction2_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit close]
+                
+        ]
+    
+        ['DPT_Start_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit start]
+                
+        ]
+    
+        ['DPT_State_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit active]
+                
+        ]
+    
+        ['DPT_Invert_Control' Struct
+           // Field Size 2
+           [reserved uint 6 '0x00']
+
+                                        
+                    [simple bit control]
+                                    
+                    [simple bit inverted]
+                
+        ]
+    
+        ['DPT_Control_Dimming' Struct
+           // Field Size 4
+           [reserved uint 4 '0x00']
+
+                                        
+                    [simple bit increase]
+                                    
+                    [simple uint 3 stepcode]
+                
+        ]
+    
+        ['DPT_Control_Blinds' Struct
+           // Field Size 4
+           [reserved uint 4 '0x00']
+
+                                        
+                    [simple bit down]
+                                    
+                    [simple uint 3 stepcode]
+                
+        ]
+    
+        ['DPT_Char_ASCII' STRING
+            [reserved uint 8 '0x00']
+            [simple   string 8 value encoding='"ASCII"']
+            
+        ]
+    
+        ['DPT_Char_8859_1' STRING
+            [reserved uint 8 '0x00']
+            [simple   string 8 value encoding='"ISO-8859-1"']
+            
+        ]
+    
+        ['DPT_Scaling' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Angle' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Percent_U8' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_DecimalFactor' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Tariff' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Value_1_Ucount' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_FanStage' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Percent_V8' SINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 8 value]
+            
+        ]
+    
+        ['DPT_Value_1_Count' SINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 8 value]
+            
+        ]
+    
+        ['DPT_Status_Mode3' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple bit statusA]
+                                    
+                    [simple bit statusB]
+                                    
+                    [simple bit statusC]
+                                    
+                    [simple bit statusD]
+                                    
+                    [simple bit statusE]
+                                    
+                    [simple uint 3 mode]
+                
+        ]
+    
+        ['DPT_Value_2_Ucount' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_TimePeriodMsec' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_TimePeriod10Msec' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_TimePeriod100Msec' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_TimePeriodSec' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_TimePeriodMin' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_TimePeriodHrs' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_PropDataType' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_Length_mm' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_UElCurrentmA' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_Brightness' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_Absolute_Colour_Temperature' UINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 16 value]
+            
+        ]
+    
+        ['DPT_Value_2_Count' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_DeltaTimeMsec' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_DeltaTime10Msec' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_DeltaTime100Msec' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_DeltaTimeSec' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_DeltaTimeMin' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_DeltaTimeHrs' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_Percent_V16' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_Rotation_Angle' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_Length_m' INT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 16 value]
+            
+        ]
+    
+        ['DPT_Value_Temp' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Tempd' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Tempa' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Lux' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Wsp' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Pres' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Humidity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_AirQuality' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_AirFlow' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Time1' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Time2' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Volt' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Curr' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_PowerDensity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_KelvinPerPercent' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Power' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Volume_Flow' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Rain_Amount' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Temp_F' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Wsp_kmh' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Value_Absolute_Humidity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Concentration_ygm3' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Coefficient' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_TimeOfDay' Struct
+           // Field Size 24
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple uint 3 day]
+                                    
+                    [simple uint 5 hour]
+                                    
+                    [reserved uint 2 '0x00']
+                                    
+                    [simple uint 6 minutes]
+                                    
+                    [reserved uint 2 '0x00']
+                                    
+                    [simple uint 6 seconds]
+                
+        ]
+    
+        ['DPT_Date' Struct
+           // Field Size 24
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 3 '0x00']
+                                    
+                    [simple uint 5 dayOfMonth]
+                                    
+                    [reserved uint 4 '0x00']
+                                    
+                    [simple uint 4 month]
+                                    
+                    [reserved uint 1 '0x00']
+                                    
+                    [simple uint 7 year]
+                
+        ]
+    
+        ['DPT_Value_4_Ucount' UDINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 32 value]
+            
+        ]
+    
+        ['DPT_LongTimePeriod_Sec' UDINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 32 value]
+            
+        ]
+    
+        ['DPT_LongTimePeriod_Min' UDINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 32 value]
+            
+        ]
+    
+        ['DPT_LongTimePeriod_Hrs' UDINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 32 value]
+            
+        ]
+    
+        ['DPT_VolumeLiquid_Litre' UDINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 32 value]
+            
+        ]
+    
+        ['DPT_Volume_m_3' UDINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 32 value]
+            
+        ]
+    
+        ['DPT_Value_4_Count' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_FlowRate_m3h' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ActiveEnergy' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ApparantEnergy' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ReactiveEnergy' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ActiveEnergy_kWh' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ApparantEnergy_kVAh' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ReactiveEnergy_kVARh' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_ActiveEnergy_MWh' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_LongDeltaTimeSec' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_DeltaVolumeLiquid_Litre ' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_DeltaVolume_m_3' DINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   int 32 value]
+            
+        ]
+    
+        ['DPT_Value_Acceleration' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Acceleration_Angular' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Activation_Energy' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Activity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Mol' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Amplitude' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_AngleRad' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_AngleDeg' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Angular_Momentum' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Angular_Velocity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Area' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Capacitance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Charge_DensitySurface' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Charge_DensityVolume' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Compressibility' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Conductance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electrical_Conductivity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Density' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_Charge' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_Current' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_CurrentDensity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_DipoleMoment' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_Displacement' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_FieldStrength' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_Flux' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_FluxDensity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_Polarization' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_Potential' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electric_PotentialDifference' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_ElectromagneticMoment' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Electromotive_Force' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Energy' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Force' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Frequency' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Angular_Frequency' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Heat_Capacity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Heat_FlowRate' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Heat_Quantity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Impedance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Length' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Light_Quantity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Luminance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Luminous_Flux' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Luminous_Intensity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Magnetic_FieldStrength' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Magnetic_Flux' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Magnetic_FluxDensity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Magnetic_Moment' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Magnetic_Polarization' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Magnetization' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_MagnetomotiveForce' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Mass' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_MassFlux' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Momentum' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Phase_AngleRad' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Phase_AngleDeg' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Power' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Power_Factor' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Pressure' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Reactance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Resistance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Resistivity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_SelfInductance' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_SolidAngle' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Sound_Intensity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Speed' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Stress' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Surface_Tension' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Common_Temperature' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Absolute_Temperature' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_TemperatureDifference' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Thermal_Capacity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Thermal_Conductivity' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_ThermoelectricPower' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Time' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Torque' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Volume' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Volume_Flux' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Weight' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_Work' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Value_ApparentPower' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 32 value]
+                    
+        ]
+    
+        ['DPT_Volume_Flux_Meter' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Volume_Flux_ls' REAL
+            [reserved uint 8 '0x00']
+                
+            [simple   float 16 value]
+                    
+        ]
+    
+        ['DPT_Access_Data' Struct
+           // Field Size 32
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple uint 4 hurz]
+                                    
+                    [simple uint 4 value1]
+                                    
+                    [simple uint 4 value2]
+                                    
+                    [simple uint 4 value3]
+                                    
+                    [simple uint 4 value4]
+                                    
+                    [simple uint 4 value5]
+                                    
+                    [simple bit detectionError]
+                                    
+                    [simple bit permission]
+                                    
+                    [simple bit readDirection]
+                                    
+                    [simple bit encryptionOfAccessInformation]
+                                    
+                    [simple uint 4 indexOfAccessIdentificationCode]
+                
+        ]
+    
+        ['DPT_String_ASCII' STRING
+            [reserved uint 8 '0x00']
+            [simple   string 112 value encoding='"ASCII"']
+            
+        ]
+    
+        ['DPT_String_8859_1' STRING
+            [reserved uint 8 '0x00']
+            [simple   string 112 value encoding='"ISO-8859-1"']
+            
+        ]
+    
+        ['DPT_SceneNumber' USINT
+            [reserved uint 2 '0x00']
+                    
+            [simple   uint 6 value]
+            
+        ]
+    
+        ['DPT_SceneControl' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple bit learnTheSceneCorrespondingToTheFieldSceneNumber]
+                                    
+                    [reserved uint 1 '0x00']
+                                    
+                    [simple uint 6 sceneNumber]
+                
+        ]
+    
+        ['DPT_DateTime' Struct
+           // Field Size 64
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple uint 8 year]
+                                    
+                    [reserved uint 4 '0x00']
+                                    
+                    [simple uint 4 month]
+                                    
+                    [reserved uint 3 '0x00']
+                                    
+                    [simple uint 5 dayofmonth]
+                                    
+                    [simple uint 3 dayofweek]
+                                    
+                    [simple uint 5 hourofday]
+                                    
+                    [reserved uint 2 '0x00']
+                                    
+                    [simple uint 6 minutes]
+                                    
+                    [reserved uint 2 '0x00']
+                                    
+                    [simple uint 6 seconds]
+                                    
+                    [simple bit fault]
+                                    
+                    [simple bit workingDay]
+                                    
+                    [simple bit noWd]
+                                    
+                    [simple bit noYear]
+                                    
+                    [simple bit noDate]
+                                    
+                    [simple bit noDayOfWeek]
+                                    
+                    [simple bit noTime]
+                                    
+                    [simple bit standardSummerTime]
+                                    
+                    [simple bit qualityOfClock]
+                                    
+                    [reserved uint 7 '0x00']
+                
+        ]
+    
+        ['DPT_SCLOMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_BuildingMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_OccMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Priority' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_LightApplicationMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ApplicationArea' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_AlarmClassType' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_PSUMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ErrorClass_System' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ErrorClass_HVAC' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Time_Delay' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Beaufort_Wind_Force_Scale' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_SensorSelect' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ActuatorConnectType' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Cloud_Cover' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_PowerReturnMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_FuelType' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_BurnerType' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_HVACMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_DHWMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_LoadPriority' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_HVACContrMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_HVACEmergMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ChangeoverMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ValveMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_DamperMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_HeaterMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_FanMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_MasterSlaveMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_StatusRoomSetp' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Metering_DeviceType' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_HumDehumMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_EnableHCStage' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_ADAType' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_BackupMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_StartSynchronization' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Behaviour_Lock_Unlock' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Behaviour_Bus_Power_Up_Down' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_DALI_Fade_Time' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_BlinkingMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_LightControlMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_SwitchPBModel' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_PBAction' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_DimmPBModel' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_SwitchOnMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_LoadTypeSet' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_LoadTypeDetected' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_Converter_Test_Control' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_SABExcept_Behaviour' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_SABBehaviour_Lock_Unlock' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_SSSBMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_BlindsControlMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_CommMode' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_AddInfoTypes' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_RF_ModeSelect' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_RF_FilterSelect' USINT
+            [reserved uint 8 '0x00']
+                    
+            [simple   uint 8 value]
+            
+        ]
+    
+        ['DPT_StatusGen' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 3 '0x00']
+                                    
+                    [simple bit alarmStatusOfCorrespondingDatapointIsNotAcknowledged]
+                                    
+                    [simple bit correspondingDatapointIsInAlarm]
+                                    
+                    [simple bit correspondingDatapointMainValueIsOverridden]
+                                    
+                    [simple bit correspondingDatapointMainValueIsCorruptedDueToFailure]
+                                    
+                    [simple bit correspondingDatapointValueIsOutOfService]
+                
+        ]
+    
+        ['DPT_Device_Control' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 5 '0x00']
+                                    
+                    [simple bit verifyModeIsOn]
+                                    
+                    [simple bit aDatagramWithTheOwnIndividualAddressAsSourceAddressHasBeenReceived]
+                                    
+                    [simple bit theUserApplicationIsStopped]
+                
+        ]
+    
+        ['DPT_ForceSign' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple bit roomhmax]
+                                    
+                    [simple bit roomhconf]
+                                    
+                    [simple bit dhwlegio]
+                                    
+                    [simple bit dhwnorm]
+                                    
+                    [simple bit overrun]
+                                    
+                    [simple bit oversupply]
+                                    
+                    [simple bit protection]
+                                    
+                    [simple bit forcerequest]
+                
+        ]
+    
+        ['DPT_ForceSignCool' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_StatusRHC' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple bit summermode]
+                                    
+                    [simple bit statusstopoptim]
+                                    
+                    [simple bit statusstartoptim]
+                                    
+                    [simple bit statusmorningboost]
+                                    
+                    [simple bit tempreturnlimit]
+                                    
+                    [simple bit tempflowlimit]
+                                    
+                    [simple bit satuseco]
+                                    
+                    [simple bit fault]
+                
+        ]
+    
+        ['DPT_StatusSDHWC' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 5 '0x00']
+                                    
+                    [simple bit solarloadsufficient]
+                                    
+                    [simple bit sdhwloadactive]
+                                    
+                    [simple bit fault]
+                
+        ]
+    
+        ['DPT_FuelTypeSet' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 5 '0x00']
+                                    
+                    [simple bit solidstate]
+                                    
+                    [simple bit gas]
+                                    
+                    [simple bit oil]
+                
+        ]
+    
+        ['DPT_StatusRCC' BOOL
+            [reserved uint 7 '0x00']
+            [simple   bit    value ]
+            
+        ]
+    
+        ['DPT_StatusAHU' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 4 '0x00']
+                                    
+                    [simple bit cool]
+                                    
+                    [simple bit heat]
+                                    
+                    [simple bit fanactive]
+                                    
+                    [simple bit fault]
+                
+        ]
+    
+        ['DPT_CombinedStatus_RTSM' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 3 '0x00']
+                                    
+                    [simple bit statusOfHvacModeUser]
+                                    
+                    [simple bit statusOfComfortProlongationUser]
+                                    
+                    [simple bit effectiveValueOfTheComfortPushButton]
+                                    
+                    [simple bit effectiveValueOfThePresenceStatus]
+                                    
+                    [simple bit effectiveValueOfTheWindowStatus]
+                
+        ]
+    
+        ['DPT_LightActuatorErrorInfo' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 1 '0x00']
+                                    
+                    [simple bit overheat]
+                                    
+                    [simple bit lampfailure]
+                                    
+                    [simple bit defectiveload]
+                                    
+                    [simple bit underload]
+                                    
+                    [simple bit overcurrent]
+                                    
+                    [simple bit undervoltage]
+                                    
+                    [simple bit loaddetectionerror]
+                
+        ]
+    
+        ['DPT_RF_ModeInfo' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 5 '0x00']
+                                    
+                    [simple bit bibatSlave]
+                                    
+                    [simple bit bibatMaster]
+                                    
+                    [simple bit asynchronous]
+                
+        ]
+    
+        ['DPT_RF_FilterInfo' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 5 '0x00']
+                                    
+                    [simple bit doa]
+                                    
+                    [simple bit knxSn]
+                                    
+                    [simple bit doaAndKnxSn]
+                
+        ]
+    
+        ['DPT_Channel_Activation_8' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple bit activationStateOfChannel1]
+                                    
+                    [simple bit activationStateOfChannel2]
+                                    
+                    [simple bit activationStateOfChannel3]
+                                    
+                    [simple bit activationStateOfChannel4]
+                                    
+                    [simple bit activationStateOfChannel5]
+                                    
+                    [simple bit activationStateOfChannel6]
+                                    
+                    [simple bit activationStateOfChannel7]
+                                    
+                    [simple bit activationStateOfChannel8]
+                
+        ]
+    
+        ['DPT_StatusDHWC' Struct
+           // Field Size 16
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 8 '0x00']
+                                    
+                    [simple bit tempoptimshiftactive]
+                                    
+                    [simple bit solarenergysupport]
+                                    
+                    [simple bit solarenergyonly]
+                                    
+                    [simple bit otherenergysourceactive]
+                                    
+                    [simple bit dhwpushactive]
+                                    
+                    [simple bit legioprotactive]
+                                    
+                    [simple bit dhwloadactive]
+                                    
+                    [simple bit fault]
+                
+        ]
+    
+        ['DPT_StatusRHCC' Struct
+           // Field Size 16
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 1 '0x00']
+                                    
+                    [simple bit overheatalarm]
+                                    
+                    [simple bit frostalarm]
+                                    
+                    [simple bit dewpointstatus]
+                                    
+                    [simple bit coolingdisabled]
+                                    
+                    [simple bit statusprecool]
+                                    
+                    [simple bit statusecoc]
+                                    
+                    [simple bit heatcoolmode]
+                                    
+                    [simple bit heatingdiabled]
+                                    
+                    [simple bit statusstopoptim]
+                                    
+                    [simple bit statusstartoptim]
+                                    
+                    [simple bit statusmorningboosth]
+                                    
+                    [simple bit tempflowreturnlimit]
+                                    
+                    [simple bit tempflowlimit]
+                                    
+                    [simple bit statusecoh]
+                                    
+                    [simple bit fault]
+                
+        ]
+    
+        ['DPT_CombinedStatus_HVA' Struct
+           // Field Size 16
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 7 '0x00']
+                                    
+                    [simple bit calibrationMode]
+                                    
+                    [simple bit lockedPosition]
+                                    
+                    [simple bit forcedPosition]
+                                    
+                    [simple bit manuaOperationOverridden]
+                                    
+                    [simple bit serviceMode]
+                                    
+                    [simple bit valveKick]
+                                    
+                    [simple bit overload]
+                                    
+                    [simple bit shortCircuit]
+                                    
+                    [simple bit currentValvePosition]
+                
+        ]
+    
+        ['DPT_CombinedStatus_RTC' Struct
+           // Field Size 16
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 7 '0x00']
+                                    
+                    [simple bit coolingModeEnabled]
+                                    
+                    [simple bit heatingModeEnabled]
+                                    
+                    [simple bit additionalHeatingCoolingStage2Stage]
+                                    
+                    [simple bit controllerInactive]
+                                    
+                    [simple bit overheatAlarm]
+                                    
+                    [simple bit frostAlarm]
+                                    
+                    [simple bit dewPointStatus]
+                                    
+                    [simple bit activeMode]
+                                    
+                    [simple bit generalFailureInformation]
+                
+        ]
+    
+        ['DPT_Media' Struct
+           // Field Size 16
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 10 '0x00']
+                                    
+                    [simple bit knxIp]
+                                    
+                    [simple bit rf]
+                                    
+                    [reserved uint 1 '0x00']
+                                    
+                    [simple bit pl110]
+                                    
+                    [simple bit tp1]
+                                    
+                    [reserved uint 1 '0x00']
+                
+        ]
+    
+        ['DPT_Channel_Activation_16' Struct
+           // Field Size 16
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple bit activationStateOfChannel1]
+                                    
+                    [simple bit activationStateOfChannel2]
+                                    
+                    [simple bit activationStateOfChannel3]
+                                    
+                    [simple bit activationStateOfChannel4]
+                                    
+                    [simple bit activationStateOfChannel5]
+                                    
+                    [simple bit activationStateOfChannel6]
+                                    
+                    [simple bit activationStateOfChannel7]
+                                    
+                    [simple bit activationStateOfChannel8]
+                                    
+                    [simple bit activationStateOfChannel9]
+                                    
+                    [simple bit activationStateOfChannel10]
+                                    
+                    [simple bit activationStateOfChannel11]
+                                    
+                    [simple bit activationStateOfChannel12]
+                                    
+                    [simple bit activationStateOfChannel13]
+                                    
+                    [simple bit activationStateOfChannel14]
+                                    
+                    [simple bit activationStateOfChannel15]
+                                    
+                    [simple bit activationStateOfChannel16]
+                
+        ]
+    
+        ['DPT_OnOffAction' USINT
+            [reserved uint 6 '0x00']
+                    
+            [simple   uint 2 value]
+            
+        ]
+    
+        ['DPT_Alarm_Reaction' USINT
+            [reserved uint 6 '0x00']
+                    
+            [simple   uint 2 value]
+            
+        ]
+    
+        ['DPT_UpDown_Action' USINT
+            [reserved uint 6 '0x00']
+                    
+            [simple   uint 2 value]
+            
+        ]
+    
+        ['DPT_HVAC_PB_Action' USINT
+            [reserved uint 6 '0x00']
+                    
+            [simple   uint 2 value]
+            
+        ]
+    
+        ['DPT_DoubleNibble' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [simple uint 4 busy]
+                                    
+                    [simple uint 4 nak]
+                
+        ]
+    
+        ['DPT_SceneInfo' Struct
+           // Field Size 8
+           [reserved uint 8 '0x00']
+
+                                        
+                    [reserved uint 1 '0x00']
+                                    
+                    [simple bit sceneIsInactive]
+                                    
+                    [simple uint 6 scenenumber]
+                
+        ]
+    
+        ['DPT_CombinedInfoOnOff' Struct
... 34537 lines suppressed ...