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 2020/11/05 12:52:05 UTC

[plc4x] branch feature/plc4go updated: - Defined all of the KNX datatypes - Optimized the DataIo code generation for Java - Fixed some wrong type declarationd in mspec dataIo

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

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


The following commit(s) were added to refs/heads/feature/plc4go by this push:
     new c5c7578  - Defined all of the KNX datatypes - Optimized the DataIo code generation for Java - Fixed some wrong type declarationd in mspec dataIo
c5c7578 is described below

commit c5c757820a9d95d341df38bedfa03fdddfbc34b9
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Nov 5 13:51:57 2020 +0100

    - Defined all of the KNX datatypes
    - Optimized the DataIo code generation for Java
    - Fixed some wrong type declarationd in mspec dataIo
---
 .../language/go/GoLanguageTemplateHelper.java      |   75 +-
 .../resources/templates/go/data-io-template.ftlh   |   39 +-
 .../language/java/JavaLanguageTemplateHelper.java  |   74 +-
 .../resources/templates/java/data-io-template.ftlh |  126 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go  |   16 +-
 .../plc4go/knxnetip/KnxNetIpFieldHandler.go        |   67 +
 .../knxnetip/readwrite/model/KnxDatapoint.go       |   67 +-
 .../knxnetip/readwrite/model/KnxDatapoint2.go      | 4820 ++++++++++++++++++++
 .../knxnetip/readwrite/model/KnxDatapointTypes.go  | 4379 ++++++++++++++++++
 .../knxnetip/readwrite/model/ParserHelper.go       |   32 +-
 .../knxnetip/readwrite/model/XmlParserHelper.go    |   96 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |  170 +-
 .../internal/plc4go/model/values/DATE_AND_TIME.go  |   14 +-
 plc4go/internal/plc4go/model/values/TIME_OF_DAY.go |   14 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |   52 +-
 plc4go/internal/plc4go/utils/WriteBuffer.go        |    2 +-
 plc4go/pom.xml                                     |    1 -
 .../ads/src/main/resources/protocols/ads/ads.mspec |   12 +-
 .../resources/protocols/knxnetip/knxnetip.mspec    |  994 +++-
 .../main/resources/protocols/modbus/modbus.mspec   |   34 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |    8 +-
 .../plc4c/generated-sources/modbus/src/data_item.c |   34 +-
 sandbox/plc4c/generated-sources/s7/src/data_item.c |    8 +-
 23 files changed, 10779 insertions(+), 355 deletions(-)

diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index 602403e..1640fce 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -139,6 +139,77 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         }
     }
 
+    public String getPlcValueTypeForTypeReference(TypeReference typeReference) {
+        if(typeReference instanceof SimpleTypeReference) {
+            SimpleTypeReference simpleTypeReference = (SimpleTypeReference) typeReference;
+            switch (simpleTypeReference.getBaseType()) {
+                case BIT: {
+                    return "values.NewPlcBOOL";
+                }
+                case UINT: {
+                    IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
+                    if (integerTypeReference.getSizeInBits() <= 8) {
+                        return "values.NewPlcUSINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 16) {
+                        return "values.NewPlcUINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 32) {
+                        return "values.NewPlcUDINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 64) {
+                        return "values.NewPlcULINT";
+                    }
+                    throw new RuntimeException("Unsupported simple type");
+                }
+                case INT: {
+                    IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
+                    if (integerTypeReference.getSizeInBits() <= 8) {
+                        return "values.NewPlcSINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 16) {
+                        return "values.NewPlcINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 32) {
+                        return "values.NewPlcDINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 64) {
+                        return "values.NewPlcLINT";
+                    }
+                    throw new RuntimeException("Unsupported simple type");
+                }
+                case FLOAT:
+                case UFLOAT: {
+                    FloatTypeReference floatTypeReference = (FloatTypeReference) simpleTypeReference;
+                    int sizeInBits = ((floatTypeReference.getBaseType() == SimpleTypeReference.SimpleBaseType.FLOAT) ? 1 : 0) +
+                        floatTypeReference.getExponent() + floatTypeReference.getMantissa();
+                    if (sizeInBits <= 32) {
+                        return "values.NewPlcREAL";
+                    }
+                    if (sizeInBits <= 64) {
+                        return "values.NewPlcLREAL";
+                    }
+                    throw new RuntimeException("Unsupported simple type");
+                }
+                case STRING: {
+                    return "values.NewPlcSTRING";
+                }
+                case TIME: {
+                    return "values.NewPlcTIME";
+                }
+                case DATE: {
+                    return "values.NewPlcDATE";
+                }
+                case DATETIME: {
+                    return "values.NewPlcDATE_AND_TIME";
+                }
+            }
+            throw new RuntimeException("Unsupported simple type");
+        } else {
+            return (typeReference != null) ? ((ComplexTypeReference) typeReference).getName() : "";
+        }
+    }
+
     @Override
     public String getNullValueForTypeReference(TypeReference typeReference) {
         if(typeReference instanceof SimpleTypeReference) {
@@ -288,8 +359,10 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             }
             case STRING: {
                 StringTypeReference stringTypeReference = (StringTypeReference) simpleTypeReference;
+                String encoding = ((stringTypeReference.getEncoding() != null) && (stringTypeReference.getEncoding().length() > 2)) ?
+                    stringTypeReference.getEncoding().substring(1, stringTypeReference.getEncoding().length() - 1) : "UTF-8";
                 return "io.WriteString(" + stringTypeReference.getSizeInBits() + ", \"" +
-                    stringTypeReference.getEncoding() + "\", " + fieldName + ")";
+                    encoding + "\", " + fieldName + ")";
             }
         }
         return "Hurz";
diff --git a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
index 2f03720..525d1f2 100644
--- a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
@@ -76,6 +76,7 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
         <#assign valueDefined=false>
         <#if case.name == "Struct">
             _map := map[string]interface{}{}
+            <#assign valueDefined=true>
         </#if>
         <#list case.fields as field>
             <#switch field.typeName>
@@ -85,11 +86,11 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
             // Array Field (${field.name})
             var ${field.name} []api.PlcValue
             for i := 0; i < int(${helper.toParseExpression(null, field.loopExpression, type.parserArguments)}); i++ {
-                _item, _itemErr := DataItemParse(io, ${type.parserArguments[0].name}, ${helper.getLanguageTypeNameForTypeReference(type.parserArguments[1].type)}(1))
+                _item, _itemErr := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>Complex type array in data-io parsing currently not implemented</#if>
                 if _itemErr != nil {
                     return nil, errors.New("Error parsing 'value' field " + _itemErr.Error())
                 }
-                ${field.name} = append(${field.name}, _item)
+                ${field.name} = append(${field.name}, ${helper.getPlcValueTypeForTypeReference(field.type)}(_item))
             }
                     <#if field.name == "value">
                         <#assign valueDefined=true>
@@ -119,29 +120,30 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
                     <#assign simpleField = field>
 
             // Simple Field (${field.name})
-            <#if case.name == "Struct" || field.name == "value">${field.name}<#else>_</#if>, _${field.name}Err := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArgume [...]
+            <#if case.name == "Struct" || ((case.name == "DATE_AND_TIME") && ((field.name == "year") || (field.name == "month") || (field.name == "day") || (field.name == "hour") || (field.name == "minutes") || (field.name == "seconds"))) || ((case.name == "DATE") && ((field.name == "year") || (field.name == "month") || (field.name == "day"))) || ((case.name == "TIME_OF_DAY") && ((field.name == "hour") || (field.name == "minutes") || (field.name == "seconds"))) || field.name == "value">$ [...]
             if _${field.name}Err != nil {
                 return nil, errors.New("Error parsing '${field.name}' field " + _${field.name}Err.Error())
             }
                     <#if case.name == "Struct">
             _map["${case.name}"] = ${field.name}
                     </#if>
-                    <#if field.name == "value">
-                        <#assign valueDefined=true>
-                    </#if>
+                    <#assign valueDefined=true>
                     <#break>
             </#switch>
         </#list>
         <#if valueDefined>
             <#switch case.name>
-                <#case "Time">
-            return values.NewPlcTIME(value), nil
+                <#case "TIME_OF_DAY">
+            value := time.Date(0,0,0, int(hour), int(minutes), int(seconds), 0, nil)
+            return values.NewPlcTIME_OF_DAY(value), nil
                     <#break>
-                <#case "Date">
-            return values.NewPlcTIME(value), nil
+                <#case "DATE">
+            value := time.Date(int(year), time.Month(month), int(day), 0, 0, 0, 0, nil)
+            return values.NewPlcDATE(value), nil
                     <#break>
-                <#case "DateTime">
-            return values.NewPlcTIME(value), nil
+                <#case "DATE_AND_TIME">
+            value := time.Date(int(year), time.Month(month), int(day), int(hour), int(minutes), int(seconds), 0, nil)
+            return values.NewPlcDATE_AND_TIME(value), nil
                     <#break>
                 <#case "Struct">
             return values.NewPlcStruct(_map), nil
@@ -149,16 +151,8 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
                 <#case "List">
             return values.NewPlcList(value), nil
                     <#break>
-            <#-- Disable this for now as Strings will only be parsed as manual fields
-                <#case "STRING">
-            //return values.NewPlcSTRING(value), nil
-                    <#break-->
                 <#default>
-                    <#if helper.isCountArrayField(case.fields[0])>
-            return values.NewPlcList(value), nil
-                    <#else>
             return values.NewPlc${case.name}(value), nil
-                    </#if>
             </#switch>
         </#if>
     </#list>
@@ -170,9 +164,6 @@ func ${type.name}Serialize(io *utils.WriteBuffer, value api.PlcValue<#if type.pa
     switch {
     <#list type.switchField.cases as case>
         case <#if case.discriminatorValues?has_content><#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == <#if helper.discriminatorValueNeedsStringEqualityCheck(type.switchField.discriminatorExpressions[discriminatorValue?index])>"${discriminatorValue}"<#else>${discriminatorValue}</#if><#sep> && </#sep></#list></#if>: // ${case.name}
-        <#if case.name == "Struct">
-            _map := map[string]interface{}{}
-        </#if>
         <#list case.fields as field>
             <#switch field.typeName>
                 <#case "array">
@@ -180,7 +171,7 @@ func ${type.name}Serialize(io *utils.WriteBuffer, value api.PlcValue<#if type.pa
 
             // Array Field (${field.name})
             for i := uint32(0); i < uint32(${helper.toSerializationExpression(null, field.loopExpression, type.parserArguments)}); i++ {
-                _itemErr := DataItemSerialize(io, value.GetIndex(i), ${type.parserArguments[0].name}, ${helper.getLanguageTypeNameForTypeReference(type.parserArguments[1].type)}(1))
+                _itemErr := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getWriteBufferWriteMethodCall(arrayField.type, arrayField.name + ".GetIndex(i).Get" + helper.getLanguageTypeNameForTypeReference(arrayField.type)?cap_first + "()")}<#else>Complex type array in data-io serialization currently not implemented</#if>
                 if _itemErr != nil {
                     return errors.New("Error serializing 'value' field " + _itemErr.Error())
                 }
diff --git a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 7d23021..2a99c7f 100644
--- a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -144,6 +144,74 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
         }
     }
 
+    public String getPlcValueTypeForTypeReference(TypeReference typeReference) {
+        if(typeReference instanceof SimpleTypeReference) {
+            SimpleTypeReference simpleTypeReference = (SimpleTypeReference) typeReference;
+            switch (simpleTypeReference.getBaseType()) {
+                case BIT: {
+                    return "PlcBOOL";
+                }
+                case UINT: {
+                    IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
+                    if (integerTypeReference.getSizeInBits() <= 4) {
+                        return "PlcUSINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 8) {
+                        return "PlcUINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 16) {
+                        return "PlcUDINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 32) {
+                        return "PlcULINT";
+                    }
+                }
+                case INT: {
+                    IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
+                    if (integerTypeReference.getSizeInBits() <= 8) {
+                        return "PlcSINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 16) {
+                        return "PlcINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 32) {
+                        return "PlcDINT";
+                    }
+                    if (integerTypeReference.getSizeInBits() <= 64) {
+                        return "PlcLINT";
+                    }
+                }
+                case FLOAT:
+                case UFLOAT: {
+                    FloatTypeReference floatTypeReference = (FloatTypeReference) simpleTypeReference;
+                    int sizeInBits = ((floatTypeReference.getBaseType() == SimpleTypeReference.SimpleBaseType.FLOAT) ? 1 : 0) +
+                        floatTypeReference.getExponent() + floatTypeReference.getMantissa();
+                    if (sizeInBits <= 32) {
+                        return "PlcREAL";
+                    }
+                    if (sizeInBits <= 64) {
+                        return "PlcLREAL";
+                    }
+                }
+                case STRING: {
+                    return "PlcSTRING";
+                }
+                case TIME: {
+                    return "PlcTIME";
+                }
+                case DATE: {
+                    return "PlcTIME";
+                }
+                case DATETIME: {
+                    return "PlcTIME";
+                }
+            }
+            throw new RuntimeException("Unsupported simple type");
+        } else {
+            return "PlcStruct";
+        }
+    }
+
     @Override
     public String getNullValueForTypeReference(TypeReference typeReference) {
         if(typeReference instanceof SimpleTypeReference) {
@@ -334,10 +402,12 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
             case UFLOAT: {
                 FloatTypeReference floatTypeReference = (FloatTypeReference) simpleTypeReference;
 
-                if (floatTypeReference.getSizeInBits() == 32) {
+                if (floatTypeReference.getSizeInBits() <= 32) {
                     return "io.writeFloat(" + fieldName + "," + floatTypeReference.getExponent() + "," + floatTypeReference.getMantissa() + ")";
-                } else if (floatTypeReference.getSizeInBits() == 64) {
+                } else if (floatTypeReference.getSizeInBits() <= 64) {
                     return "io.writeDouble(" + fieldName + "," + floatTypeReference.getExponent() + "," + floatTypeReference.getMantissa() + ")";
+                } else {
+                    throw new RuntimeException("Unsupported float type");
                 }
             }
             case STRING: {
diff --git a/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
index 358e587..edd72ac 100644
--- a/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
@@ -90,7 +90,7 @@ public class ${type.name}IO {
 
     public static PlcValue staticParse(ReadBuffer io<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${helper.getLanguageTypeNameForTypeReference(parserArgument.type, false)} ${parserArgument.name}<#sep>, </#sep></#list></#if>) throws ParseException {
         <#list type.switchField.cases as case><#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue>EvaluationHelper.equals(${helper.toParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)}, <#if helper.discriminatorValueNeedsStringEqualityCheck(type.switchField.discriminatorExpressions[discriminatorValue?index])>"${discriminatorValue}"<#else>${discriminatorValue}</#if>)<#sep> && </#se [...]
-            <#assign skipReturn=false>
+            <#assign valueDefined=false>
             <#list case.fields as field>
                 <#switch field.typeName>
                     <#case "array">
@@ -111,7 +111,7 @@ public class ${type.name}IO {
                 int itemCount = (int) ${helper.toParseExpression(field, field.loopExpression, type.parserArguments)};
                 ${field.name} = new LinkedList<>();
                 for(int curItem = 0; curItem < itemCount; curItem++) {
-                    ${field.name}.add(new Plc${case.name}((${helper.getNonPrimitiveLanguageTypeNameForField(field)}) <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)})<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type [...]
+                    ${field.name}.add(new ${helper.getPlcValueTypeForTypeReference(field.type)}((${helper.getNonPrimitiveLanguageTypeNameForField(field)}) <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)})<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParse [...]
                 }
             }
             <#-- In all other cases do we have to work with a list, that is later converted to an array -->
@@ -120,10 +120,10 @@ public class ${type.name}IO {
                             <#if helper.isLengthArrayField(field)>
             // Length array
             int _${field.name}Length = ${helper.toParseExpression(field, field.loopExpression, type.parserArguments)};
-            List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
+            List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> ${field.name} = new LinkedList<>();
             int ${field.name}EndPos = io.getPos() + _${field.name}Length;
             while(io.getPos() < ${field.name}EndPos) {
-                _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
+                ${field.name}.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
                 <#-- After parsing, update the current position, but only if it's needed -->
                                 <#if field.loopExpression.contains("curPos")>
                 curPos = io.getPos() - startPos;
@@ -132,9 +132,9 @@ public class ${type.name}IO {
             <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
                             <#elseif helper.isTerminatedArrayField(field)>
             // Terminated array
-            List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
+            List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> ${field.name} = new LinkedList<>();
             while(!((boolean) (${helper.toParseExpression(field, field.loopExpression, type.parserArguments)}))) {
-                _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
+                ${field.name}.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
 
                 <#-- After parsing, update the current position, but only if it's needed -->
                                 <#if field.loopExpression.contains("curPos")>
@@ -142,19 +142,9 @@ public class ${type.name}IO {
                                 </#if>
             }
                             </#if>
-            <#--
-                Convert the list into an array. However if the array is of a primitive
-                type we have to iterate over it's elements and explicitly cast them.
-                Otherwise a simple toArray call is fine.
-            -->
-                            <#if helper.isSimpleTypeReference(field.type)>
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[] ${field.name} = new ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[_${field.name}List.size()];
-            for(int i = 0; i < _${field.name}List.size(); i++) {
-                ${field.name}[i] = (${helper.getNonPrimitiveLanguageTypeNameForField(field)}) _${field.name}List.get(i);
-            }
-                            <#else>
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[] ${field.name} = _${field.name}List.toArray(new ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[0]);
-                            </#if>
+                        </#if>
+                        <#if field.name == "value">
+                            <#assign valueDefined=true>
                         </#if>
                     <#break>
                     <#case "const">
@@ -164,38 +154,25 @@ public class ${type.name}IO {
             if(${field.name} != ${type.name}.${field.name?upper_case}) {
                 throw new ParseException("Expected constant value " + ${type.name}.${field.name?upper_case} + " but got " + ${field.name});
             }
+                        <#if field.name == "value">
+                            <#assign valueDefined=true>
+                        </#if>
                     <#break>
                     <#case "enum">
 
             // Enum field (${field.name})
             ${helper.getNonPrimitiveLanguageTypeNameForField(field)} ${field.name} = ${helper.getNonPrimitiveLanguageTypeNameForField(field)}.valueOf(${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(field.type))});
+                        <#if field.name == "value">
+                            <#assign valueDefined=true>
+                        </#if>
                     <#break>
                     <#case "manual">
 
             // Manual Field (${field.name})
             ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(field, field.parseExpression, type.parserArguments)});
-                        <#-- If a manual field is detected, the value returned by this is instantly treated as the value -->
-                        <#switch case.name>
-                            <#case "Time">
-            return new PlcTime(${field.name});
-                            <#break>
-                            <#case "Date">
-            return new PlcDate(${field.name});
-                            <#break>
-                            <#case "DateTime">
-            return new PlcDateTime(${field.name});
-                            <#break>
-                            <#case "Struct">
-            return new PlcStruct(${field.name});
-                            <#break>
-                            <#case "String">
-            return new PlcString(${field.name});
-                            <#break>
-                            <#default>
-            return new Plc${case.name}(${field.name});
-                        </#switch>
-                        <#-- As we returned early, skip outputting a return at the end -->
-                        <#assign skipReturn=true>
+                        <#if field.name == "value">
+                            <#assign valueDefined=true>
+                        </#if>
                     <#break>
                     <#case "reserved">
 
@@ -211,25 +188,74 @@ public class ${type.name}IO {
 
             // Simple Field (${field.name})
             ${helper.getNonPrimitiveLanguageTypeNameForField(field)} ${field.name} = <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep [...]
+                        <#if field.name == "value">
+                            <#assign valueDefined=true>
+                        </#if>
                     <#break>
                 </#switch>
             </#list>
             <#if case.name == "Struct">
+
+                <#-- In this case we need to wrap each field in a PlcValue that matches it's natural type -->
             Map<String, PlcValue> _map = new HashMap<>();
                 <#list case.fields as field>
-            _map.put("${field.name}", IEC61131ValueHandler.of(${field.name}));
+                    <#if helper.isPropertyField(field)>
+                        <#switch helper.getLanguageTypeNameForTypeReference(field.type)>
+                            <#case "Boolean">
+            _map.put("${field.name}", new PlcBOOL(${field.name}));
+                                <#break>
+                            <#case "Byte">
+            _map.put("${field.name}", new PlcSINT(${field.name}));
+                                <#break>
+                            <#case "Short">
+            _map.put("${field.name}", new PlcINT(${field.name}));
+                                <#break>
+                            <#case "Integer">
+            _map.put("${field.name}", new PlcDINT(${field.name}));
+                                <#break>
+                            <#case "Long">
+            _map.put("${field.name}", new PlcLINT(${field.name}));
+                                <#break>
+                            <#case "BigInteger">
+            _map.put("${field.name}", new PlcBigInteger(${field.name}));
+                                <#break>
+                            <#case "Float">
+            _map.put("${field.name}", new PlcREAL(${field.name}));
+                                <#break>
+                            <#case "Double">
+            _map.put("${field.name}", new PlcLREAL(${field.name}));
+                                <#break>
+                            <#case "BigDecimal">
+            _map.put("${field.name}", new PlcBigDecimal(${field.name}));
+                                <#break>
+                            <#case "String">
+            _map.put("${field.name}", new PlcSTRING(${field.name}));
+                                <#break>
+                            <#case "LocalTime">
+            _map.put("${field.name}", new PlcTime(${field.name}));
+                                <#break>
+                            <#case "LocalDate">
+            _map.put("${field.name}", new PlcTime(${field.name}));
+                                <#break>
+                            <#case "LocalDateTime">
+            _map.put("${field.name}", new PlcTime(${field.name}));
+                                <#break>
+                        </#switch>
+                    </#if>
                 </#list>
+                <#assign valueDefined=true>
             </#if>
-            <#if !skipReturn>
+
+            <#if valueDefined>
                 <#switch case.name>
                     <#case "Time">
-            return new PlcTime(LocalTime.of((int) hours, (int) minutes, (int) seconds));
+            return new PlcTime(value);
                     <#break>
                     <#case "Date">
-            return new PlcDate(LocalDate.of((int) year, (int) month, (int) day));
+            return new PlcDate(value);
                     <#break>
                     <#case "DateTime">
-            return new PlcDateTime(LocalDateTime.of((int) year, (int) month, (int) day, (int) hours, (int) minutes, (int) seconds));
+            return new PlcDateTime(value);
                     <#break>
                     <#case "Struct">
             return new PlcStruct(_map);
@@ -237,16 +263,8 @@ public class ${type.name}IO {
                     <#case "List">
             return new PlcList(value);
                     <#break>
-            <#-- Disable this for now as Strings will only be parsed as manual fields -->
-                    <#case "STRING">
-            //return new PlcString(_map);
-                    <#break>
                     <#default>
-                    <#if helper.isCountArrayField(case.fields[0])>
-            return new PlcList(value);
-                    <#else>
             return new Plc${case.name}(value);
-                    </#if>
                 </#switch>
             </#if>
         }<#sep> else </#sep></#list>
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go b/plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go
index efc2fa5..2e43bbb 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go
+++ b/plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go
@@ -18,8 +18,18 @@
 //
 package knxnetip
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go"
+import (
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go"
+)
 
-func NewKnxNetIpDriver() plc4go.PlcDriver {
-	return nil
+type KnxNetIpDriver struct {
+    fieldHandler spi.PlcFieldHandler
+    plc4go.PlcDriver
+}
+
+func NewKnxNetIpDriver() KnxNetIpDriver {
+	return &KnxNetIpDriver{
+	    fieldHandler:
+    }
 }
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go b/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
new file mode 100644
index 0000000..3d1ee8d
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
@@ -0,0 +1,67 @@
+//
+// 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
+//
+//      http://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.
+//
+package knxnetip
+
+import (
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go/model"
+    "regexp"
+)
+
+type KnxNetIpFieldType uint8
+
+const (
+    KNX_NET_IP_FIELD_COIL KnxNetIpFieldType = 0x00
+)
+
+func (m KnxNetIpFieldType) GetName() string {
+    switch m {
+    case KNX_NET_IP_FIELD_COIL:
+        return "ModbusFieldHoldingRegister"
+    }
+    return ""
+}
+
+type FieldHandler struct {
+    knxNetIpGroupAddress3Level *regexp.Regexp
+    knxNetIpGroupAddress2Level *regexp.Regexp
+    knxNetIpGroupAddress1Level *regexp.Regexp
+    spi.PlcFieldHandler
+}
+
+func NewFieldHandler() FieldHandler {
+    return FieldHandler{
+        knxNetIpGroupAddress3Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*))/(?P<middleGroup>(\d|\*))/(?P<subGroup>(\d{1,3}|\*))`),
+        knxNetIpGroupAddress2Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*))/(?P<subGroup>(\d{1,4}|\*))`),
+        knxNetIpGroupAddress1Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,5}|\*))`),
+    }
+}
+
+func (m FieldHandler) ParseQuery(query string) (model.PlcField, error) {
+    if match := utils.GetSubgropMatches(m.knxNetIpGroupAddress3Level, query); match != nil {
+        return NewModbusPlcFieldFromStrings(MODBUS_FIELD_COIL, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
+    } else if match := utils.GetSubgropMatches(m.knxNetIpGroupAddress2Level, query); match != nil {
+        return NewModbusPlcFieldFromStrings(MODBUS_FIELD_COIL, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
+    } else if match := utils.GetSubgropMatches(m.knxNetIpGroupAddress1Level, query); match != nil {
+        return NewModbusPlcFieldFromStrings(MODBUS_FIELD_DISCRETE_INPUT, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
+    }
+    return nil, errors.New("Invalid address format for address '" + query + "'")
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
index fc993f0..34e832c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
@@ -40,7 +40,8 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
                 return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
             }
             return values.NewPlcBOOL(value), nil
-        case mainNumber == 2: // BOOL
+        case mainNumber == 2: // Struct
+            _map := map[string]interface{}{}
 
             // Reserved Field (Just skip the bytes)
             if _, _err := io.ReadUint8(6); _err != nil {
@@ -48,17 +49,19 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
             }
 
             // Simple Field (control)
-            _, _controlErr := io.ReadBit()
+            control, _controlErr := io.ReadBit()
             if _controlErr != nil {
                 return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
             }
+            _map["Struct"] = control
 
             // Simple Field (value)
             value, _valueErr := io.ReadBit()
             if _valueErr != nil {
                 return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
             }
-            return values.NewPlcBOOL(value), nil
+            _map["Struct"] = value
+            return values.NewPlcStruct(_map), nil
         case mainNumber == 21: // Struct
             _map := map[string]interface{}{}
 
@@ -117,7 +120,9 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
                 return nil, errors.New("Error parsing 'b0' field " + _b0Err.Error())
             }
             _map["Struct"] = b0
-        case mainNumber == 3: // USINT
+            return values.NewPlcStruct(_map), nil
+        case mainNumber == 3: // Struct
+            _map := map[string]interface{}{}
 
             // Reserved Field (Just skip the bytes)
             if _, _err := io.ReadUint8(4); _err != nil {
@@ -125,24 +130,28 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
             }
 
             // Simple Field (control)
-            _, _controlErr := io.ReadBit()
+            control, _controlErr := io.ReadBit()
             if _controlErr != nil {
                 return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
             }
+            _map["Struct"] = control
 
             // Simple Field (value)
             value, _valueErr := io.ReadUint8(3)
             if _valueErr != nil {
                 return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
             }
-            return values.NewPlcUSINT(value), nil
-        case mainNumber == 18: // USINT
+            _map["Struct"] = value
+            return values.NewPlcStruct(_map), nil
+        case mainNumber == 18: // Struct
+            _map := map[string]interface{}{}
 
             // Simple Field (control)
-            _, _controlErr := io.ReadBit()
+            control, _controlErr := io.ReadBit()
             if _controlErr != nil {
                 return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
             }
+            _map["Struct"] = control
 
             // Reserved Field (Just skip the bytes)
             if _, _err := io.ReadUint8(1); _err != nil {
@@ -154,7 +163,8 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
             if _valueErr != nil {
                 return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
             }
-            return values.NewPlcUSINT(value), nil
+            _map["Struct"] = value
+            return values.NewPlcStruct(_map), nil
         case mainNumber == 17: // USINT
 
             // Reserved Field (Just skip the bytes)
@@ -207,44 +217,51 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
                 return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
             }
             return values.NewPlcUDINT(value), nil
-        case mainNumber == 6 && subNumber == 20: // SINT
+        case mainNumber == 6 && subNumber == 20: // Struct
+            _map := map[string]interface{}{}
 
             // Simple Field (a)
-            _, _aErr := io.ReadBit()
+            a, _aErr := io.ReadBit()
             if _aErr != nil {
                 return nil, errors.New("Error parsing 'a' field " + _aErr.Error())
             }
+            _map["Struct"] = a
 
             // Simple Field (b)
-            _, _bErr := io.ReadBit()
+            b, _bErr := io.ReadBit()
             if _bErr != nil {
                 return nil, errors.New("Error parsing 'b' field " + _bErr.Error())
             }
+            _map["Struct"] = b
 
             // Simple Field (c)
-            _, _cErr := io.ReadBit()
+            c, _cErr := io.ReadBit()
             if _cErr != nil {
                 return nil, errors.New("Error parsing 'c' field " + _cErr.Error())
             }
+            _map["Struct"] = c
 
             // Simple Field (d)
-            _, _dErr := io.ReadBit()
+            d, _dErr := io.ReadBit()
             if _dErr != nil {
                 return nil, errors.New("Error parsing 'd' field " + _dErr.Error())
             }
+            _map["Struct"] = d
 
             // Simple Field (e)
-            _, _eErr := io.ReadBit()
+            e, _eErr := io.ReadBit()
             if _eErr != nil {
                 return nil, errors.New("Error parsing 'e' field " + _eErr.Error())
             }
+            _map["Struct"] = e
 
             // Simple Field (value)
             value, _valueErr := io.ReadInt8(8)
             if _valueErr != nil {
                 return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
             }
-            return values.NewPlcSINT(value), nil
+            _map["Struct"] = value
+            return values.NewPlcStruct(_map), nil
         case mainNumber == 6: // SINT
 
             // Reserved Field (Just skip the bytes)
@@ -371,6 +388,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
             if _secondsErr != nil {
                 return nil, errors.New("Error parsing 'seconds' field " + _secondsErr.Error())
             }
+            return values.NewPlcTime(value), nil
         case mainNumber == 11: // Date
 
             // Reserved Field (Just skip the bytes)
@@ -405,6 +423,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
             if _yearErr != nil {
                 return nil, errors.New("Error parsing 'year' field " + _yearErr.Error())
             }
+            return values.NewPlcDate(value), nil
         case mainNumber == 19: // DateTime
 
             // Simple Field (year)
@@ -522,6 +541,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
             if _clockQualityErr != nil {
                 return nil, errors.New("Error parsing 'clockQuality' field " + _clockQualityErr.Error())
             }
+            return values.NewPlcDateTime(value), nil
         case mainNumber == 15: // Struct
             _map := map[string]interface{}{}
 
@@ -601,6 +621,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16
                 return nil, errors.New("Error parsing 'index' field " + _indexErr.Error())
             }
             _map["Struct"] = index
+            return values.NewPlcStruct(_map), nil
     }
     return nil, errors.New("unsupported type")
 }
@@ -618,7 +639,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
             if _err := io.WriteBit(value.GetBool()); _err != nil {
                 return errors.New("Error serializing 'value' field " + _err.Error())
             }
-        case mainNumber == 2: // BOOL
+        case mainNumber == 2: // Struct
 
             // Reserved Field (Just skip the bytes)
             if _err := io.WriteUint8(6, uint8(0x0)); _err != nil {
@@ -635,7 +656,6 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
                 return errors.New("Error serializing 'value' field " + _err.Error())
             }
         case mainNumber == 21: // Struct
-            _map := map[string]interface{}{}
 
             // Simple Field (b7)
             if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -676,7 +696,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
             if _err := io.WriteBit(value.GetBool()); _err != nil {
                 return errors.New("Error serializing 'b0' field " + _err.Error())
             }
-        case mainNumber == 3: // USINT
+        case mainNumber == 3: // Struct
 
             // Reserved Field (Just skip the bytes)
             if _err := io.WriteUint8(4, uint8(0x0)); _err != nil {
@@ -692,7 +712,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
             if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
                 return errors.New("Error serializing 'value' field " + _err.Error())
             }
-        case mainNumber == 18: // USINT
+        case mainNumber == 18: // Struct
 
             // Simple Field (control)
             if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -752,7 +772,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
             if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
                 return errors.New("Error serializing 'value' field " + _err.Error())
             }
-        case mainNumber == 6 && subNumber == 20: // SINT
+        case mainNumber == 6 && subNumber == 20: // Struct
 
             // Simple Field (a)
             if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -847,7 +867,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
             }
 
             // Simple Field (value)
-            if _err := io.WriteString(8, "UTF-8", value.GetString()); _err != nil {
+            if _err := io.WriteString(8, "TF-", value.GetString()); _err != nil {
                 return errors.New("Error serializing 'value' field " + _err.Error())
             }
         case mainNumber == 16: // STRING
@@ -858,7 +878,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
             }
 
             // Simple Field (value)
-            if _err := io.WriteString(112, "UTF-8", value.GetString()); _err != nil {
+            if _err := io.WriteString(112, "TF-", value.GetString()); _err != nil {
                 return errors.New("Error serializing 'value' field " + _err.Error())
             }
         case mainNumber == 10: // Time
@@ -1025,7 +1045,6 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, mainNumber
                 return errors.New("Error serializing 'clockQuality' field " + _err.Error())
             }
         case mainNumber == 15: // Struct
-            _map := map[string]interface{}{}
 
             // Simple Field (D6)
             if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint2.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint2.go
new file mode 100644
index 0000000..ca6d95e
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint2.go
@@ -0,0 +1,4820 @@
+//
+// 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
+//
+//      http://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.
+//
+package model
+
+import (
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/model/values"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+    api "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go/values"
+)
+
+func KnxDatapoint2Parse(io *utils.ReadBuffer, formatName string) (api.PlcValue, error) {
+    switch {
+        case formatName == "B1": // BOOL
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(7); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadBit()
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcBOOL(value), nil
+        case formatName == "B2": // Struct
+            _map := map[string]interface{}{}
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(6); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (control)
+            control, _controlErr := io.ReadBit()
+            if _controlErr != nil {
+                return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
+            }
+            _map["Struct"] = control
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadBit()
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            _map["Struct"] = value
+            return values.NewPlcStruct(_map), nil
+        case formatName == "B1U3": // Struct
+            _map := map[string]interface{}{}
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (control)
+            control, _controlErr := io.ReadBit()
+            if _controlErr != nil {
+                return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
+            }
+            _map["Struct"] = control
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint8(3)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            _map["Struct"] = value
+            return values.NewPlcStruct(_map), nil
+        case formatName == "A8_ASCII": // STRING
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadString(8)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcSTRING(value), nil
+        case formatName == "A8_8859_1": // STRING
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadString(8)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcSTRING(value), nil
+        case formatName == "U8": // USINT
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint8(8)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcUSINT(value), nil
+        case formatName == "V8": // SINT
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadInt8(8)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcSINT(value), nil
+        case formatName == "F16": // REAL
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadFloat32(16)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcREAL(value), nil
+        case formatName == "N3N5r2N6r2N6": // TIME_OF_DAY
+
+            // Simple Field (day)
+            _, _dayErr := io.ReadUint8(3)
+            if _dayErr != nil {
+                return nil, errors.New("Error parsing 'day' field " + _dayErr.Error())
+            }
+
+            // Simple Field (hour)
+            hour, _hourErr := io.ReadUint8(5)
+            if _hourErr != nil {
+                return nil, errors.New("Error parsing 'hour' field " + _hourErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(2); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (minutes)
+            minutes, _minutesErr := io.ReadUint8(6)
+            if _minutesErr != nil {
+                return nil, errors.New("Error parsing 'minutes' field " + _minutesErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(2); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (seconds)
+            seconds, _secondsErr := io.ReadUint8(6)
+            if _secondsErr != nil {
+                return nil, errors.New("Error parsing 'seconds' field " + _secondsErr.Error())
+            }
+            value := time.Date(0,0,0, int(hour), int(minutes), int(seconds), 0, nil)
+            return values.NewPlcTIME_OF_DAY(value), nil
+        case formatName == "r3N5r4N4r1U7": // DATE
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(3); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (day)
+            day, _dayErr := io.ReadUint8(5)
+            if _dayErr != nil {
+                return nil, errors.New("Error parsing 'day' field " + _dayErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (month)
+            month, _monthErr := io.ReadUint8(4)
+            if _monthErr != nil {
+                return nil, errors.New("Error parsing 'month' field " + _monthErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(1); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (year)
+            year, _yearErr := io.ReadUint8(7)
+            if _yearErr != nil {
+                return nil, errors.New("Error parsing 'year' field " + _yearErr.Error())
+            }
+            value := time.Date(int(year), time.Month(month), int(day), 0, 0, 0, 0, nil)
+            return values.NewPlcDATE(value), nil
+        case formatName == "U32": // UDINT
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint32(32)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcUDINT(value), nil
+        case formatName == "V32": // DINT
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadInt32(32)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcDINT(value), nil
+        case formatName == "F32": // REAL
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadFloat32(32)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcREAL(value), nil
+        case formatName == "U4U4U4U4U4U4B4N4": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (d6)
+            d6, _d6Err := io.ReadUint8(4)
+            if _d6Err != nil {
+                return nil, errors.New("Error parsing 'd6' field " + _d6Err.Error())
+            }
+            _map["Struct"] = d6
+
+            // Simple Field (d5)
+            d5, _d5Err := io.ReadUint8(4)
+            if _d5Err != nil {
+                return nil, errors.New("Error parsing 'd5' field " + _d5Err.Error())
+            }
+            _map["Struct"] = d5
+
+            // Simple Field (d4)
+            d4, _d4Err := io.ReadUint8(4)
+            if _d4Err != nil {
+                return nil, errors.New("Error parsing 'd4' field " + _d4Err.Error())
+            }
+            _map["Struct"] = d4
+
+            // Simple Field (d3)
+            d3, _d3Err := io.ReadUint8(4)
+            if _d3Err != nil {
+                return nil, errors.New("Error parsing 'd3' field " + _d3Err.Error())
+            }
+            _map["Struct"] = d3
+
+            // Simple Field (d2)
+            d2, _d2Err := io.ReadUint8(4)
+            if _d2Err != nil {
+                return nil, errors.New("Error parsing 'd2' field " + _d2Err.Error())
+            }
+            _map["Struct"] = d2
+
+            // Simple Field (d1)
+            d1, _d1Err := io.ReadUint8(4)
+            if _d1Err != nil {
+                return nil, errors.New("Error parsing 'd1' field " + _d1Err.Error())
+            }
+            _map["Struct"] = d1
+
+            // Simple Field (e)
+            e, _eErr := io.ReadBit()
+            if _eErr != nil {
+                return nil, errors.New("Error parsing 'e' field " + _eErr.Error())
+            }
+            _map["Struct"] = e
+
+            // Simple Field (p)
+            p, _pErr := io.ReadBit()
+            if _pErr != nil {
+                return nil, errors.New("Error parsing 'p' field " + _pErr.Error())
+            }
+            _map["Struct"] = p
+
+            // Simple Field (d)
+            d, _dErr := io.ReadBit()
+            if _dErr != nil {
+                return nil, errors.New("Error parsing 'd' field " + _dErr.Error())
+            }
+            _map["Struct"] = d
+
+            // Simple Field (c)
+            c, _cErr := io.ReadBit()
+            if _cErr != nil {
+                return nil, errors.New("Error parsing 'c' field " + _cErr.Error())
+            }
+            _map["Struct"] = c
+
+            // Simple Field (index)
+            index, _indexErr := io.ReadUint8(4)
+            if _indexErr != nil {
+                return nil, errors.New("Error parsing 'index' field " + _indexErr.Error())
+            }
+            _map["Struct"] = index
+            return values.NewPlcStruct(_map), nil
+        case formatName == "A112_ASCII": // STRING
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadString(112)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcSTRING(value), nil
+        case formatName == "A112_8859_1": // STRING
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadString(112)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcSTRING(value), nil
+        case formatName == "r2U6": // USINT
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(2); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint8(6)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcUSINT(value), nil
+        case formatName == "B1r1U6": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (learn)
+            learn, _learnErr := io.ReadBit()
+            if _learnErr != nil {
+                return nil, errors.New("Error parsing 'learn' field " + _learnErr.Error())
+            }
+            _map["Struct"] = learn
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(1); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (sceneNumber)
+            sceneNumber, _sceneNumberErr := io.ReadUint8(6)
+            if _sceneNumberErr != nil {
+                return nil, errors.New("Error parsing 'sceneNumber' field " + _sceneNumberErr.Error())
+            }
+            _map["Struct"] = sceneNumber
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8r4U4r3U5U3U5r2U6r2U6B16": // DATE_AND_TIME
+
+            // Simple Field (year)
+            year, _yearErr := io.ReadUint8(8)
+            if _yearErr != nil {
+                return nil, errors.New("Error parsing 'year' field " + _yearErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (month)
+            month, _monthErr := io.ReadUint8(4)
+            if _monthErr != nil {
+                return nil, errors.New("Error parsing 'month' field " + _monthErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(3); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (day)
+            day, _dayErr := io.ReadUint8(5)
+            if _dayErr != nil {
+                return nil, errors.New("Error parsing 'day' field " + _dayErr.Error())
+            }
+
+            // Simple Field (dayOfWeek)
+            _, _dayOfWeekErr := io.ReadUint8(3)
+            if _dayOfWeekErr != nil {
+                return nil, errors.New("Error parsing 'dayOfWeek' field " + _dayOfWeekErr.Error())
+            }
+
+            // Simple Field (hour)
+            hour, _hourErr := io.ReadUint8(5)
+            if _hourErr != nil {
+                return nil, errors.New("Error parsing 'hour' field " + _hourErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(2); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (minutes)
+            minutes, _minutesErr := io.ReadUint8(6)
+            if _minutesErr != nil {
+                return nil, errors.New("Error parsing 'minutes' field " + _minutesErr.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(2); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (seconds)
+            seconds, _secondsErr := io.ReadUint8(6)
+            if _secondsErr != nil {
+                return nil, errors.New("Error parsing 'seconds' field " + _secondsErr.Error())
+            }
+
+            // Simple Field (fault)
+            _, _faultErr := io.ReadBit()
+            if _faultErr != nil {
+                return nil, errors.New("Error parsing 'fault' field " + _faultErr.Error())
+            }
+
+            // Simple Field (workingDay)
+            _, _workingDayErr := io.ReadBit()
+            if _workingDayErr != nil {
+                return nil, errors.New("Error parsing 'workingDay' field " + _workingDayErr.Error())
+            }
+
+            // Simple Field (noWorkingDay)
+            _, _noWorkingDayErr := io.ReadBit()
+            if _noWorkingDayErr != nil {
+                return nil, errors.New("Error parsing 'noWorkingDay' field " + _noWorkingDayErr.Error())
+            }
+
+            // Simple Field (noYear)
+            _, _noYearErr := io.ReadBit()
+            if _noYearErr != nil {
+                return nil, errors.New("Error parsing 'noYear' field " + _noYearErr.Error())
+            }
+
+            // Simple Field (noMonthAndDay)
+            _, _noMonthAndDayErr := io.ReadBit()
+            if _noMonthAndDayErr != nil {
+                return nil, errors.New("Error parsing 'noMonthAndDay' field " + _noMonthAndDayErr.Error())
+            }
+
+            // Simple Field (noDayOfWeek)
+            _, _noDayOfWeekErr := io.ReadBit()
+            if _noDayOfWeekErr != nil {
+                return nil, errors.New("Error parsing 'noDayOfWeek' field " + _noDayOfWeekErr.Error())
+            }
+
+            // Simple Field (noTime)
+            _, _noTimeErr := io.ReadBit()
+            if _noTimeErr != nil {
+                return nil, errors.New("Error parsing 'noTime' field " + _noTimeErr.Error())
+            }
+
+            // Simple Field (standardSummerTime)
+            _, _standardSummerTimeErr := io.ReadBit()
+            if _standardSummerTimeErr != nil {
+                return nil, errors.New("Error parsing 'standardSummerTime' field " + _standardSummerTimeErr.Error())
+            }
+
+            // Simple Field (clockWithSyncSignal)
+            _, _clockWithSyncSignalErr := io.ReadBit()
+            if _clockWithSyncSignalErr != nil {
+                return nil, errors.New("Error parsing 'clockWithSyncSignal' field " + _clockWithSyncSignalErr.Error())
+            }
+            value := time.Date(int(year), time.Month(month), int(day), int(hour), int(minutes), int(seconds), 0, nil)
+            return values.NewPlcDATE_AND_TIME(value), nil
+        case formatName == "N8": // USINT
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint8(8)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcUSINT(value), nil
+        case formatName == "B8": // BYTE
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint8(8)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcBYTE(value), nil
+        case formatName == "B16": // WORD
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint16(16)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcWORD(value), nil
+        case formatName == "U4U4": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (busy)
+            busy, _busyErr := io.ReadUint8(4)
+            if _busyErr != nil {
+                return nil, errors.New("Error parsing 'busy' field " + _busyErr.Error())
+            }
+            _map["Struct"] = busy
+
+            // Simple Field (nak)
+            nak, _nakErr := io.ReadUint8(4)
+            if _nakErr != nil {
+                return nil, errors.New("Error parsing 'nak' field " + _nakErr.Error())
+            }
+            _map["Struct"] = nak
+            return values.NewPlcStruct(_map), nil
+        case formatName == "r1b1U6": // Struct
+            _map := map[string]interface{}{}
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(1); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (sceneActive)
+            sceneActive, _sceneActiveErr := io.ReadBit()
+            if _sceneActiveErr != nil {
+                return nil, errors.New("Error parsing 'sceneActive' field " + _sceneActiveErr.Error())
+            }
+            _map["Struct"] = sceneActive
+
+            // Simple Field (sceneNumber)
+            sceneNumber, _sceneNumberErr := io.ReadUint8(6)
+            if _sceneNumberErr != nil {
+                return nil, errors.New("Error parsing 'sceneNumber' field " + _sceneNumberErr.Error())
+            }
+            _map["Struct"] = sceneNumber
+            return values.NewPlcStruct(_map), nil
+        case formatName == "B32": // DWORD
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint32(32)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcDWORD(value), nil
+        case formatName == "V64": // LINT
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadInt64(64)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcLINT(value), nil
+        case formatName == "B24": // List
+
+            // Array Field (value)
+            var value []api.PlcValue
+            for i := 0; i < int((24)); i++ {
+                _item, _itemErr := io.ReadBit()
+                if _itemErr != nil {
+                    return nil, errors.New("Error parsing 'value' field " + _itemErr.Error())
+                }
+                value = append(value, values.NewPlcBOOL(_item))
+            }
+            return values.NewPlcList(value), nil
+        case formatName == "N3": // USINT
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(5); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            value, _valueErr := io.ReadUint8(3)
+            if _valueErr != nil {
+                return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
+            }
+            return values.NewPlcUSINT(value), nil
+        case formatName == "B1Z8HeatingOrCoolingZ": // Struct
+            _map := map[string]interface{}{}
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(7); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (heating)
+            heating, _heatingErr := io.ReadBit()
+            if _heatingErr != nil {
+                return nil, errors.New("Error parsing 'heating' field " + _heatingErr.Error())
+            }
+            _map["Struct"] = heating
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "B1Z8BinaryValueZ": // Struct
+            _map := map[string]interface{}{}
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(7); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (high)
+            high, _highErr := io.ReadBit()
+            if _highErr != nil {
+                return nil, errors.New("Error parsing 'high' field " + _highErr.Error())
+            }
+            _map["Struct"] = high
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8HvacOperatingMode": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (hvacOperatingMode)
+            hvacOperatingMode, _hvacOperatingModeErr := io.ReadUint8(8)
+            if _hvacOperatingModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacOperatingMode' field " + _hvacOperatingModeErr.Error())
+            }
+            _map["Struct"] = hvacOperatingMode
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8DhwMode": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (dhwMode)
+            dhwMode, _dhwModeErr := io.ReadUint8(8)
+            if _dhwModeErr != nil {
+                return nil, errors.New("Error parsing 'dhwMode' field " + _dhwModeErr.Error())
+            }
+            _map["Struct"] = dhwMode
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8HvacControllingMode": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (hvacControllingMode)
+            hvacControllingMode, _hvacControllingModeErr := io.ReadUint8(8)
+            if _hvacControllingModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacControllingMode' field " + _hvacControllingModeErr.Error())
+            }
+            _map["Struct"] = hvacControllingMode
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8EnableHeatingOrCoolingStage": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (enableHeatingOrCoolingStage)
+            enableHeatingOrCoolingStage, _enableHeatingOrCoolingStageErr := io.ReadUint8(8)
+            if _enableHeatingOrCoolingStageErr != nil {
+                return nil, errors.New("Error parsing 'enableHeatingOrCoolingStage' field " + _enableHeatingOrCoolingStageErr.Error())
+            }
+            _map["Struct"] = enableHeatingOrCoolingStage
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8BuildingMode": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (buildingMode)
+            buildingMode, _buildingModeErr := io.ReadUint8(8)
+            if _buildingModeErr != nil {
+                return nil, errors.New("Error parsing 'buildingMode' field " + _buildingModeErr.Error())
+            }
+            _map["Struct"] = buildingMode
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8OccupancyMode": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (occupancyMode)
+            occupancyMode, _occupancyModeErr := io.ReadUint8(8)
+            if _occupancyModeErr != nil {
+                return nil, errors.New("Error parsing 'occupancyMode' field " + _occupancyModeErr.Error())
+            }
+            _map["Struct"] = occupancyMode
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N8Z8EmergencyMode": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (hvacEmergencyMode)
+            hvacEmergencyMode, _hvacEmergencyModeErr := io.ReadUint8(8)
+            if _hvacEmergencyModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacEmergencyMode' field " + _hvacEmergencyModeErr.Error())
+            }
+            _map["Struct"] = hvacEmergencyMode
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8Z8Rel": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (relValue)
+            relValue, _relValueErr := io.ReadUint8(8)
+            if _relValueErr != nil {
+                return nil, errors.New("Error parsing 'relValue' field " + _relValueErr.Error())
+            }
+            _map["Struct"] = relValue
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8Z8Counter": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (counterValue)
+            counterValue, _counterValueErr := io.ReadUint8(8)
+            if _counterValueErr != nil {
+                return nil, errors.New("Error parsing 'counterValue' field " + _counterValueErr.Error())
+            }
+            _map["Struct"] = counterValue
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8TimePeriod": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (timePeriod)
+            timePeriod, _timePeriodErr := io.ReadUint16(16)
+            if _timePeriodErr != nil {
+                return nil, errors.New("Error parsing 'timePeriod' field " + _timePeriodErr.Error())
+            }
+            _map["Struct"] = timePeriod
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8FlowRate": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (flowRate)
+            flowRate, _flowRateErr := io.ReadUint16(16)
+            if _flowRateErr != nil {
+                return nil, errors.New("Error parsing 'flowRate' field " + _flowRateErr.Error())
+            }
+            _map["Struct"] = flowRate
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8Counter": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (counterValue)
+            counterValue, _counterValueErr := io.ReadUint16(16)
+            if _counterValueErr != nil {
+                return nil, errors.New("Error parsing 'counterValue' field " + _counterValueErr.Error())
+            }
+            _map["Struct"] = counterValue
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8ElectricCurrent": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (electricalCurrent)
+            electricalCurrent, _electricalCurrentErr := io.ReadUint16(16)
+            if _electricalCurrentErr != nil {
+                return nil, errors.New("Error parsing 'electricalCurrent' field " + _electricalCurrentErr.Error())
+            }
+            _map["Struct"] = electricalCurrent
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8Power": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (power)
+            power, _powerErr := io.ReadUint16(16)
+            if _powerErr != nil {
+                return nil, errors.New("Error parsing 'power' field " + _powerErr.Error())
+            }
+            _map["Struct"] = power
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8AtmPressure": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (atmPressure)
+            atmPressure, _atmPressureErr := io.ReadUint16(16)
+            if _atmPressureErr != nil {
+                return nil, errors.New("Error parsing 'atmPressure' field " + _atmPressureErr.Error())
+            }
+            _map["Struct"] = atmPressure
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8PercentValue": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (percentValue)
+            percentValue, _percentValueErr := io.ReadUint16(16)
+            if _percentValueErr != nil {
+                return nil, errors.New("Error parsing 'percentValue' field " + _percentValueErr.Error())
+            }
+            _map["Struct"] = percentValue
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8HvacAirQuality": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (ppmResolution)
+            ppmResolution, _ppmResolutionErr := io.ReadUint16(16)
+            if _ppmResolutionErr != nil {
+                return nil, errors.New("Error parsing 'ppmResolution' field " + _ppmResolutionErr.Error())
+            }
+            _map["Struct"] = ppmResolution
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8WindSpeed": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (windSpeed)
+            windSpeed, _windSpeedErr := io.ReadUint16(16)
+            if _windSpeedErr != nil {
+                return nil, errors.New("Error parsing 'windSpeed' field " + _windSpeedErr.Error())
+            }
+            _map["Struct"] = windSpeed
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8SunIntensity": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (sunIntensity)
+            sunIntensity, _sunIntensityErr := io.ReadUint16(16)
+            if _sunIntensityErr != nil {
+                return nil, errors.New("Error parsing 'sunIntensity' field " + _sunIntensityErr.Error())
+            }
+            _map["Struct"] = sunIntensity
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16Z8HvacAirFlow": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (airFlow)
+            airFlow, _airFlowErr := io.ReadUint16(16)
+            if _airFlowErr != nil {
+                return nil, errors.New("Error parsing 'airFlow' field " + _airFlowErr.Error())
+            }
+            _map["Struct"] = airFlow
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V8Z8RelSignedValue": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (relSignedValue)
+            relSignedValue, _relSignedValueErr := io.ReadInt8(8)
+            if _relSignedValueErr != nil {
+                return nil, errors.New("Error parsing 'relSignedValue' field " + _relSignedValueErr.Error())
+            }
+            _map["Struct"] = relSignedValue
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16Z8DeltaTime": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (deltaTime)
+            deltaTime, _deltaTimeErr := io.ReadInt16(16)
+            if _deltaTimeErr != nil {
+                return nil, errors.New("Error parsing 'deltaTime' field " + _deltaTimeErr.Error())
+            }
+            _map["Struct"] = deltaTime
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16Z8RelSignedValue": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (relSignedValue)
+            relSignedValue, _relSignedValueErr := io.ReadInt16(16)
+            if _relSignedValueErr != nil {
+                return nil, errors.New("Error parsing 'relSignedValue' field " + _relSignedValueErr.Error())
+            }
+            _map["Struct"] = relSignedValue
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16N8HvacModeAndTimeDelay": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (delayTime)
+            delayTime, _delayTimeErr := io.ReadUint16(16)
+            if _delayTimeErr != nil {
+                return nil, errors.New("Error parsing 'delayTime' field " + _delayTimeErr.Error())
+            }
+            _map["Struct"] = delayTime
+
+            // Simple Field (hvacMode)
+            hvacMode, _hvacModeErr := io.ReadUint8(8)
+            if _hvacModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacMode' field " + _hvacModeErr.Error())
+            }
+            _map["Struct"] = hvacMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16N8DhwModeAndTimeDelay": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (delayTime)
+            delayTime, _delayTimeErr := io.ReadUint16(16)
+            if _delayTimeErr != nil {
+                return nil, errors.New("Error parsing 'delayTime' field " + _delayTimeErr.Error())
+            }
+            _map["Struct"] = delayTime
+
+            // Simple Field (dhwMode)
+            dhwMode, _dhwModeErr := io.ReadUint8(8)
+            if _dhwModeErr != nil {
+                return nil, errors.New("Error parsing 'dhwMode' field " + _dhwModeErr.Error())
+            }
+            _map["Struct"] = dhwMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16N8OccupancyModeAndTimeDelay": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (delayTime)
+            delayTime, _delayTimeErr := io.ReadUint16(16)
+            if _delayTimeErr != nil {
+                return nil, errors.New("Error parsing 'delayTime' field " + _delayTimeErr.Error())
+            }
+            _map["Struct"] = delayTime
+
+            // Simple Field (occupationMode)
+            occupationMode, _occupationModeErr := io.ReadUint8(8)
+            if _occupationModeErr != nil {
+                return nil, errors.New("Error parsing 'occupationMode' field " + _occupationModeErr.Error())
+            }
+            _map["Struct"] = occupationMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16N8BuildingModeAndTimeDelay": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (delayTime)
+            delayTime, _delayTimeErr := io.ReadUint16(16)
+            if _delayTimeErr != nil {
+                return nil, errors.New("Error parsing 'delayTime' field " + _delayTimeErr.Error())
+            }
+            _map["Struct"] = delayTime
+
+            // Simple Field (buildingMode)
+            buildingMode, _buildingModeErr := io.ReadUint8(8)
+            if _buildingModeErr != nil {
+                return nil, errors.New("Error parsing 'buildingMode' field " + _buildingModeErr.Error())
+            }
+            _map["Struct"] = buildingMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8B8StatusBurnerController": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (actualRelativePower)
+            actualRelativePower, _actualRelativePowerErr := io.ReadUint8(8)
+            if _actualRelativePowerErr != nil {
+                return nil, errors.New("Error parsing 'actualRelativePower' field " + _actualRelativePowerErr.Error())
+            }
+            _map["Struct"] = actualRelativePower
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (stage2Active)
+            stage2Active, _stage2ActiveErr := io.ReadBit()
+            if _stage2ActiveErr != nil {
+                return nil, errors.New("Error parsing 'stage2Active' field " + _stage2ActiveErr.Error())
+            }
+            _map["Struct"] = stage2Active
+
+            // Simple Field (stage1Active)
+            stage1Active, _stage1ActiveErr := io.ReadBit()
+            if _stage1ActiveErr != nil {
+                return nil, errors.New("Error parsing 'stage1Active' field " + _stage1ActiveErr.Error())
+            }
+            _map["Struct"] = stage1Active
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+
+            // Simple Field (actualRelativePowerValid)
+            actualRelativePowerValid, _actualRelativePowerValidErr := io.ReadBit()
+            if _actualRelativePowerValidErr != nil {
+                return nil, errors.New("Error parsing 'actualRelativePowerValid' field " + _actualRelativePowerValidErr.Error())
+            }
+            _map["Struct"] = actualRelativePowerValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8B8LockingSignal": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (requestedPowerReduction)
+            requestedPowerReduction, _requestedPowerReductionErr := io.ReadUint8(8)
+            if _requestedPowerReductionErr != nil {
+                return nil, errors.New("Error parsing 'requestedPowerReduction' field " + _requestedPowerReductionErr.Error())
+            }
+            _map["Struct"] = requestedPowerReduction
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(6); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (critical)
+            critical, _criticalErr := io.ReadBit()
+            if _criticalErr != nil {
+                return nil, errors.New("Error parsing 'critical' field " + _criticalErr.Error())
+            }
+            _map["Struct"] = critical
+
+            // Simple Field (requestedPowerReductionValid)
+            requestedPowerReductionValid, _requestedPowerReductionValidErr := io.ReadBit()
+            if _requestedPowerReductionValidErr != nil {
+                return nil, errors.New("Error parsing 'requestedPowerReductionValid' field " + _requestedPowerReductionValidErr.Error())
+            }
+            _map["Struct"] = requestedPowerReductionValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8B8BoilerControllerDemandSignal": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (relativeDemand)
+            relativeDemand, _relativeDemandErr := io.ReadUint8(8)
+            if _relativeDemandErr != nil {
+                return nil, errors.New("Error parsing 'relativeDemand' field " + _relativeDemandErr.Error())
+            }
+            _map["Struct"] = relativeDemand
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(6); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (controlsOperationStage2)
+            controlsOperationStage2, _controlsOperationStage2Err := io.ReadBit()
+            if _controlsOperationStage2Err != nil {
+                return nil, errors.New("Error parsing 'controlsOperationStage2' field " + _controlsOperationStage2Err.Error())
+            }
+            _map["Struct"] = controlsOperationStage2
+
+            // Simple Field (controlsOperationStage1)
+            controlsOperationStage1, _controlsOperationStage1Err := io.ReadBit()
+            if _controlsOperationStage1Err != nil {
+                return nil, errors.New("Error parsing 'controlsOperationStage1' field " + _controlsOperationStage1Err.Error())
+            }
+            _map["Struct"] = controlsOperationStage1
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8B8ActuatorPositionDemand": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (actuatorPositionDemand)
+            actuatorPositionDemand, _actuatorPositionDemandErr := io.ReadUint8(8)
+            if _actuatorPositionDemandErr != nil {
+                return nil, errors.New("Error parsing 'actuatorPositionDemand' field " + _actuatorPositionDemandErr.Error())
+            }
+            _map["Struct"] = actuatorPositionDemand
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (emergencyDemand)
+            emergencyDemand, _emergencyDemandErr := io.ReadBit()
+            if _emergencyDemandErr != nil {
+                return nil, errors.New("Error parsing 'emergencyDemand' field " + _emergencyDemandErr.Error())
+            }
+            _map["Struct"] = emergencyDemand
+
+            // Simple Field (shiftLoadPriority)
+            shiftLoadPriority, _shiftLoadPriorityErr := io.ReadBit()
+            if _shiftLoadPriorityErr != nil {
+                return nil, errors.New("Error parsing 'shiftLoadPriority' field " + _shiftLoadPriorityErr.Error())
+            }
+            _map["Struct"] = shiftLoadPriority
+
+            // Simple Field (absoluteLoadPriority)
+            absoluteLoadPriority, _absoluteLoadPriorityErr := io.ReadBit()
+            if _absoluteLoadPriorityErr != nil {
+                return nil, errors.New("Error parsing 'absoluteLoadPriority' field " + _absoluteLoadPriorityErr.Error())
+            }
+            _map["Struct"] = absoluteLoadPriority
+
+            // Simple Field (actuatorPositionDemandValid)
+            actuatorPositionDemandValid, _actuatorPositionDemandValidErr := io.ReadBit()
+            if _actuatorPositionDemandValidErr != nil {
+                return nil, errors.New("Error parsing 'actuatorPositionDemandValid' field " + _actuatorPositionDemandValidErr.Error())
+            }
+            _map["Struct"] = actuatorPositionDemandValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8B8ActuatorPositionStatus": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (actualActuatorPosition)
+            actualActuatorPosition, _actualActuatorPositionErr := io.ReadUint8(8)
+            if _actualActuatorPositionErr != nil {
+                return nil, errors.New("Error parsing 'actualActuatorPosition' field " + _actualActuatorPositionErr.Error())
+            }
+            _map["Struct"] = actualActuatorPosition
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(3); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (synchronizationMode)
+            synchronizationMode, _synchronizationModeErr := io.ReadBit()
+            if _synchronizationModeErr != nil {
+                return nil, errors.New("Error parsing 'synchronizationMode' field " + _synchronizationModeErr.Error())
+            }
+            _map["Struct"] = synchronizationMode
+
+            // Simple Field (valveKick)
+            valveKick, _valveKickErr := io.ReadBit()
+            if _valveKickErr != nil {
+                return nil, errors.New("Error parsing 'valveKick' field " + _valveKickErr.Error())
+            }
+            _map["Struct"] = valveKick
+
+            // Simple Field (callibrationMode)
+            callibrationMode, _callibrationModeErr := io.ReadBit()
+            if _callibrationModeErr != nil {
+                return nil, errors.New("Error parsing 'callibrationMode' field " + _callibrationModeErr.Error())
+            }
+            _map["Struct"] = callibrationMode
+
+            // Simple Field (positionManuallyOverridden)
+            positionManuallyOverridden, _positionManuallyOverriddenErr := io.ReadBit()
+            if _positionManuallyOverriddenErr != nil {
+                return nil, errors.New("Error parsing 'positionManuallyOverridden' field " + _positionManuallyOverriddenErr.Error())
+            }
+            _map["Struct"] = positionManuallyOverridden
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8B8StatusLightingActuator": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (lightingLevel)
+            lightingLevel, _lightingLevelErr := io.ReadUint8(8)
+            if _lightingLevelErr != nil {
+                return nil, errors.New("Error parsing 'lightingLevel' field " + _lightingLevelErr.Error())
+            }
+            _map["Struct"] = lightingLevel
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+
+            // Simple Field (localOverride)
+            localOverride, _localOverrideErr := io.ReadBit()
+            if _localOverrideErr != nil {
+                return nil, errors.New("Error parsing 'localOverride' field " + _localOverrideErr.Error())
+            }
+            _map["Struct"] = localOverride
+
+            // Simple Field (dimming)
+            dimming, _dimmingErr := io.ReadBit()
+            if _dimmingErr != nil {
+                return nil, errors.New("Error parsing 'dimming' field " + _dimmingErr.Error())
+            }
+            _map["Struct"] = dimming
+
+            // Simple Field (staircaseLightingFunction)
+            staircaseLightingFunction, _staircaseLightingFunctionErr := io.ReadBit()
+            if _staircaseLightingFunctionErr != nil {
+                return nil, errors.New("Error parsing 'staircaseLightingFunction' field " + _staircaseLightingFunctionErr.Error())
+            }
+            _map["Struct"] = staircaseLightingFunction
+
+            // Simple Field (nightMode)
+            nightMode, _nightModeErr := io.ReadBit()
+            if _nightModeErr != nil {
+                return nil, errors.New("Error parsing 'nightMode' field " + _nightModeErr.Error())
+            }
+            _map["Struct"] = nightMode
+
+            // Simple Field (forced)
+            forced, _forcedErr := io.ReadBit()
+            if _forcedErr != nil {
+                return nil, errors.New("Error parsing 'forced' field " + _forcedErr.Error())
+            }
+            _map["Struct"] = forced
+
+            // Simple Field (locked)
+            locked, _lockedErr := io.ReadBit()
+            if _lockedErr != nil {
+                return nil, errors.New("Error parsing 'locked' field " + _lockedErr.Error())
+            }
+            _map["Struct"] = locked
+
+            // Simple Field (lightingLevelValid)
+            lightingLevelValid, _lightingLevelValidErr := io.ReadBit()
+            if _lightingLevelValidErr != nil {
+                return nil, errors.New("Error parsing 'lightingLevelValid' field " + _lightingLevelValidErr.Error())
+            }
+            _map["Struct"] = lightingLevelValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16B8HeatProducerManagerStatus": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (tempFlowProdSegmH)
+            tempFlowProdSegmH, _tempFlowProdSegmHErr := io.ReadFloat32(16)
+            if _tempFlowProdSegmHErr != nil {
+                return nil, errors.New("Error parsing 'tempFlowProdSegmH' field " + _tempFlowProdSegmHErr.Error())
+            }
+            _map["Struct"] = tempFlowProdSegmH
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(3); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (temporarilyOff)
+            temporarilyOff, _temporarilyOffErr := io.ReadBit()
+            if _temporarilyOffErr != nil {
+                return nil, errors.New("Error parsing 'temporarilyOff' field " + _temporarilyOffErr.Error())
+            }
+            _map["Struct"] = temporarilyOff
+
+            // Simple Field (permanentlyOff)
+            permanentlyOff, _permanentlyOffErr := io.ReadBit()
+            if _permanentlyOffErr != nil {
+                return nil, errors.New("Error parsing 'permanentlyOff' field " + _permanentlyOffErr.Error())
+            }
+            _map["Struct"] = permanentlyOff
+
+            // Simple Field (switchedOffSummerMode)
+            switchedOffSummerMode, _switchedOffSummerModeErr := io.ReadBit()
+            if _switchedOffSummerModeErr != nil {
+                return nil, errors.New("Error parsing 'switchedOffSummerMode' field " + _switchedOffSummerModeErr.Error())
+            }
+            _map["Struct"] = switchedOffSummerMode
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+
+            // Simple Field (tempFlowProdSegmHValid)
+            tempFlowProdSegmHValid, _tempFlowProdSegmHValidErr := io.ReadBit()
+            if _tempFlowProdSegmHValidErr != nil {
+                return nil, errors.New("Error parsing 'tempFlowProdSegmHValid' field " + _tempFlowProdSegmHValidErr.Error())
+            }
+            _map["Struct"] = tempFlowProdSegmHValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16B8RoomTemperatureDemand": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (roomTemperatureDemand)
+            roomTemperatureDemand, _roomTemperatureDemandErr := io.ReadFloat32(16)
+            if _roomTemperatureDemandErr != nil {
+                return nil, errors.New("Error parsing 'roomTemperatureDemand' field " + _roomTemperatureDemandErr.Error())
+            }
+            _map["Struct"] = roomTemperatureDemand
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (emergencyDemand)
+            emergencyDemand, _emergencyDemandErr := io.ReadBit()
+            if _emergencyDemandErr != nil {
+                return nil, errors.New("Error parsing 'emergencyDemand' field " + _emergencyDemandErr.Error())
+            }
+            _map["Struct"] = emergencyDemand
+
+            // Simple Field (shiftLoadPriority)
+            shiftLoadPriority, _shiftLoadPriorityErr := io.ReadBit()
+            if _shiftLoadPriorityErr != nil {
+                return nil, errors.New("Error parsing 'shiftLoadPriority' field " + _shiftLoadPriorityErr.Error())
+            }
+            _map["Struct"] = shiftLoadPriority
+
+            // Simple Field (absoluteLoadPriority)
+            absoluteLoadPriority, _absoluteLoadPriorityErr := io.ReadBit()
+            if _absoluteLoadPriorityErr != nil {
+                return nil, errors.New("Error parsing 'absoluteLoadPriority' field " + _absoluteLoadPriorityErr.Error())
+            }
+            _map["Struct"] = absoluteLoadPriority
+
+            // Simple Field (roomTemperatureDemandValid)
+            roomTemperatureDemandValid, _roomTemperatureDemandValidErr := io.ReadBit()
+            if _roomTemperatureDemandValidErr != nil {
+                return nil, errors.New("Error parsing 'roomTemperatureDemandValid' field " + _roomTemperatureDemandValidErr.Error())
+            }
+            _map["Struct"] = roomTemperatureDemandValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16B8ColdWaterProducerManagerStatus": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (flowTemperatureProdSegmC)
+            flowTemperatureProdSegmC, _flowTemperatureProdSegmCErr := io.ReadFloat32(16)
+            if _flowTemperatureProdSegmCErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureProdSegmC' field " + _flowTemperatureProdSegmCErr.Error())
+            }
+            _map["Struct"] = flowTemperatureProdSegmC
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (temporarilyOff)
+            temporarilyOff, _temporarilyOffErr := io.ReadBit()
+            if _temporarilyOffErr != nil {
+                return nil, errors.New("Error parsing 'temporarilyOff' field " + _temporarilyOffErr.Error())
+            }
+            _map["Struct"] = temporarilyOff
+
+            // Simple Field (permanentlyOff)
+            permanentlyOff, _permanentlyOffErr := io.ReadBit()
+            if _permanentlyOffErr != nil {
+                return nil, errors.New("Error parsing 'permanentlyOff' field " + _permanentlyOffErr.Error())
+            }
+            _map["Struct"] = permanentlyOff
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+
+            // Simple Field (flowTemperatureProdSegmCValid)
+            flowTemperatureProdSegmCValid, _flowTemperatureProdSegmCValidErr := io.ReadBit()
+            if _flowTemperatureProdSegmCValidErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureProdSegmCValid' field " + _flowTemperatureProdSegmCValidErr.Error())
+            }
+            _map["Struct"] = flowTemperatureProdSegmCValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16B8WaterTemperatureControllerStatus": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (actualTemperature)
+            actualTemperature, _actualTemperatureErr := io.ReadFloat32(16)
+            if _actualTemperatureErr != nil {
+                return nil, errors.New("Error parsing 'actualTemperature' field " + _actualTemperatureErr.Error())
+            }
+            _map["Struct"] = actualTemperature
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(5); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (controllerWorking)
+            controllerWorking, _controllerWorkingErr := io.ReadBit()
+            if _controllerWorkingErr != nil {
+                return nil, errors.New("Error parsing 'controllerWorking' field " + _controllerWorkingErr.Error())
+            }
+            _map["Struct"] = controllerWorking
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+
+            // Simple Field (actualTemperatureValid)
+            actualTemperatureValid, _actualTemperatureValidErr := io.ReadBit()
+            if _actualTemperatureValidErr != nil {
+                return nil, errors.New("Error parsing 'actualTemperatureValid' field " + _actualTemperatureValidErr.Error())
+            }
+            _map["Struct"] = actualTemperatureValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16B16": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (flowTemperatureDemand)
+            flowTemperatureDemand, _flowTemperatureDemandErr := io.ReadFloat32(16)
+            if _flowTemperatureDemandErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureDemand' field " + _flowTemperatureDemandErr.Error())
+            }
+            _map["Struct"] = flowTemperatureDemand
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (demandFromDhwWhileLegionellaFunctionIsActive)
+            demandFromDhwWhileLegionellaFunctionIsActive, _demandFromDhwWhileLegionellaFunctionIsActiveErr := io.ReadBit()
+            if _demandFromDhwWhileLegionellaFunctionIsActiveErr != nil {
+                return nil, errors.New("Error parsing 'demandFromDhwWhileLegionellaFunctionIsActive' field " + _demandFromDhwWhileLegionellaFunctionIsActiveErr.Error())
+            }
+            _map["Struct"] = demandFromDhwWhileLegionellaFunctionIsActive
+
+            // Simple Field (emergencyDemandForFrostProtection)
+            emergencyDemandForFrostProtection, _emergencyDemandForFrostProtectionErr := io.ReadBit()
+            if _emergencyDemandForFrostProtectionErr != nil {
+                return nil, errors.New("Error parsing 'emergencyDemandForFrostProtection' field " + _emergencyDemandForFrostProtectionErr.Error())
+            }
+            _map["Struct"] = emergencyDemandForFrostProtection
+
+            // Simple Field (requestForWaterCirculationInPrimaryDistributionSegment)
+            requestForWaterCirculationInPrimaryDistributionSegment, _requestForWaterCirculationInPrimaryDistributionSegmentErr := io.ReadBit()
+            if _requestForWaterCirculationInPrimaryDistributionSegmentErr != nil {
+                return nil, errors.New("Error parsing 'requestForWaterCirculationInPrimaryDistributionSegment' field " + _requestForWaterCirculationInPrimaryDistributionSegmentErr.Error())
+            }
+            _map["Struct"] = requestForWaterCirculationInPrimaryDistributionSegment
+
+            // Simple Field (demandFromAuxillaryHeatOrCoolConsumer)
+            demandFromAuxillaryHeatOrCoolConsumer, _demandFromAuxillaryHeatOrCoolConsumerErr := io.ReadBit()
+            if _demandFromAuxillaryHeatOrCoolConsumerErr != nil {
+                return nil, errors.New("Error parsing 'demandFromAuxillaryHeatOrCoolConsumer' field " + _demandFromAuxillaryHeatOrCoolConsumerErr.Error())
+            }
+            _map["Struct"] = demandFromAuxillaryHeatOrCoolConsumer
+
+            // Simple Field (demandFromVentilation)
+            demandFromVentilation, _demandFromVentilationErr := io.ReadBit()
+            if _demandFromVentilationErr != nil {
+                return nil, errors.New("Error parsing 'demandFromVentilation' field " + _demandFromVentilationErr.Error())
+            }
+            _map["Struct"] = demandFromVentilation
+
+            // Simple Field (demandForRoomHeatingOrCooling)
+            demandForRoomHeatingOrCooling, _demandForRoomHeatingOrCoolingErr := io.ReadBit()
+            if _demandForRoomHeatingOrCoolingErr != nil {
+                return nil, errors.New("Error parsing 'demandForRoomHeatingOrCooling' field " + _demandForRoomHeatingOrCoolingErr.Error())
+            }
+            _map["Struct"] = demandForRoomHeatingOrCooling
+
+            // Simple Field (heatDemandFromDhw)
+            heatDemandFromDhw, _heatDemandFromDhwErr := io.ReadBit()
+            if _heatDemandFromDhwErr != nil {
+                return nil, errors.New("Error parsing 'heatDemandFromDhw' field " + _heatDemandFromDhwErr.Error())
+            }
+            _map["Struct"] = heatDemandFromDhw
+
+            // Simple Field (flowTemperatureDemandIsMin)
+            flowTemperatureDemandIsMin, _flowTemperatureDemandIsMinErr := io.ReadBit()
+            if _flowTemperatureDemandIsMinErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureDemandIsMin' field " + _flowTemperatureDemandIsMinErr.Error())
+            }
+            _map["Struct"] = flowTemperatureDemandIsMin
+
+            // Simple Field (flowTemperatureDemandIsMax)
+            flowTemperatureDemandIsMax, _flowTemperatureDemandIsMaxErr := io.ReadBit()
+            if _flowTemperatureDemandIsMaxErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureDemandIsMax' field " + _flowTemperatureDemandIsMaxErr.Error())
+            }
+            _map["Struct"] = flowTemperatureDemandIsMax
+
+            // Simple Field (shiftLoadPriority)
+            shiftLoadPriority, _shiftLoadPriorityErr := io.ReadBit()
+            if _shiftLoadPriorityErr != nil {
+                return nil, errors.New("Error parsing 'shiftLoadPriority' field " + _shiftLoadPriorityErr.Error())
+            }
+            _map["Struct"] = shiftLoadPriority
+
+            // Simple Field (absoluteLoadPriority)
+            absoluteLoadPriority, _absoluteLoadPriorityErr := io.ReadBit()
+            if _absoluteLoadPriorityErr != nil {
+                return nil, errors.New("Error parsing 'absoluteLoadPriority' field " + _absoluteLoadPriorityErr.Error())
+            }
+            _map["Struct"] = absoluteLoadPriority
+
+            // Simple Field (flowTemperatureDemandValid)
+            flowTemperatureDemandValid, _flowTemperatureDemandValidErr := io.ReadBit()
+            if _flowTemperatureDemandValidErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureDemandValid' field " + _flowTemperatureDemandValidErr.Error())
+            }
+            _map["Struct"] = flowTemperatureDemandValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8N8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (energyDemand)
+            energyDemand, _energyDemandErr := io.ReadUint8(8)
+            if _energyDemandErr != nil {
+                return nil, errors.New("Error parsing 'energyDemand' field " + _energyDemandErr.Error())
+            }
+            _map["Struct"] = energyDemand
+
+            // Simple Field (actualControllerMode)
+            actualControllerMode, _actualControllerModeErr := io.ReadUint8(8)
+            if _actualControllerModeErr != nil {
+                return nil, errors.New("Error parsing 'actualControllerMode' field " + _actualControllerModeErr.Error())
+            }
+            _map["Struct"] = actualControllerMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16V16V16RoomTemperature": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (temperatureSetpointComfort)
+            temperatureSetpointComfort, _temperatureSetpointComfortErr := io.ReadFloat32(16)
+            if _temperatureSetpointComfortErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointComfort' field " + _temperatureSetpointComfortErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointComfort
+
+            // Simple Field (temperatureSetpointStandby)
+            temperatureSetpointStandby, _temperatureSetpointStandbyErr := io.ReadFloat32(16)
+            if _temperatureSetpointStandbyErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointStandby' field " + _temperatureSetpointStandbyErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointStandby
+
+            // Simple Field (temperatureSetpointEco)
+            temperatureSetpointEco, _temperatureSetpointEcoErr := io.ReadFloat32(16)
+            if _temperatureSetpointEcoErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointEco' field " + _temperatureSetpointEcoErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointEco
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16V16V16RoomTemperatureShift": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (temperatureSetpointShiftComfort)
+            temperatureSetpointShiftComfort, _temperatureSetpointShiftComfortErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftComfortErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftComfort' field " + _temperatureSetpointShiftComfortErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftComfort
+
+            // Simple Field (temperatureSetpointShiftStandby)
+            temperatureSetpointShiftStandby, _temperatureSetpointShiftStandbyErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftStandbyErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftStandby' field " + _temperatureSetpointShiftStandbyErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftStandby
+
+            // Simple Field (temperatureSetpointShiftEco)
+            temperatureSetpointShiftEco, _temperatureSetpointShiftEcoErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftEcoErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftEco' field " + _temperatureSetpointShiftEcoErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftEco
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16V16V16V16RoomTemperature": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (temperatureSetpointComfort)
+            temperatureSetpointComfort, _temperatureSetpointComfortErr := io.ReadFloat32(16)
+            if _temperatureSetpointComfortErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointComfort' field " + _temperatureSetpointComfortErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointComfort
+
+            // Simple Field (temperatureSetpointStandby)
+            temperatureSetpointStandby, _temperatureSetpointStandbyErr := io.ReadFloat32(16)
+            if _temperatureSetpointStandbyErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointStandby' field " + _temperatureSetpointStandbyErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointStandby
+
+            // Simple Field (temperatureSetpointEco)
+            temperatureSetpointEco, _temperatureSetpointEcoErr := io.ReadFloat32(16)
+            if _temperatureSetpointEcoErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointEco' field " + _temperatureSetpointEcoErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointEco
+
+            // Simple Field (temperatureSetpointBProt)
+            temperatureSetpointBProt, _temperatureSetpointBProtErr := io.ReadFloat32(16)
+            if _temperatureSetpointBProtErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointBProt' field " + _temperatureSetpointBProtErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointBProt
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16V16V16V16DhwtTemperature": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (temperatureSetpointLegioProtect)
+            temperatureSetpointLegioProtect, _temperatureSetpointLegioProtectErr := io.ReadFloat32(16)
+            if _temperatureSetpointLegioProtectErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointLegioProtect' field " + _temperatureSetpointLegioProtectErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointLegioProtect
+
+            // Simple Field (temperatureSetpointNormal)
+            temperatureSetpointNormal, _temperatureSetpointNormalErr := io.ReadFloat32(16)
+            if _temperatureSetpointNormalErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointNormal' field " + _temperatureSetpointNormalErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointNormal
+
+            // Simple Field (temperatureSetpointReduced)
+            temperatureSetpointReduced, _temperatureSetpointReducedErr := io.ReadFloat32(16)
+            if _temperatureSetpointReducedErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointReduced' field " + _temperatureSetpointReducedErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointReduced
+
+            // Simple Field (temperatureSetpointFrostProtect)
+            temperatureSetpointFrostProtect, _temperatureSetpointFrostProtectErr := io.ReadFloat32(16)
+            if _temperatureSetpointFrostProtectErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointFrostProtect' field " + _temperatureSetpointFrostProtectErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointFrostProtect
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16V16V16V16RoomTemperatureShift": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (temperatureSetpointShiftComfort)
+            temperatureSetpointShiftComfort, _temperatureSetpointShiftComfortErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftComfortErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftComfort' field " + _temperatureSetpointShiftComfortErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftComfort
+
+            // Simple Field (temperatureSetpointShiftStandby)
+            temperatureSetpointShiftStandby, _temperatureSetpointShiftStandbyErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftStandbyErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftStandby' field " + _temperatureSetpointShiftStandbyErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftStandby
+
+            // Simple Field (temperatureSetpointShiftEco)
+            temperatureSetpointShiftEco, _temperatureSetpointShiftEcoErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftEcoErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftEco' field " + _temperatureSetpointShiftEcoErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftEco
+
+            // Simple Field (temperatureSetpointShiftBProt)
+            temperatureSetpointShiftBProt, _temperatureSetpointShiftBProtErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftBProtErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftBProt' field " + _temperatureSetpointShiftBProtErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftBProt
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16U8B8Heat": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (flowTemperatureDemand)
+            flowTemperatureDemand, _flowTemperatureDemandErr := io.ReadInt16(16)
+            if _flowTemperatureDemandErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureDemand' field " + _flowTemperatureDemandErr.Error())
+            }
+            _map["Struct"] = flowTemperatureDemand
+
+            // Simple Field (relativePower)
+            relativePower, _relativePowerErr := io.ReadUint8(8)
+            if _relativePowerErr != nil {
+                return nil, errors.New("Error parsing 'relativePower' field " + _relativePowerErr.Error())
+            }
+            _map["Struct"] = relativePower
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(2); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (boilerEnabled)
+            boilerEnabled, _boilerEnabledErr := io.ReadBit()
+            if _boilerEnabledErr != nil {
+                return nil, errors.New("Error parsing 'boilerEnabled' field " + _boilerEnabledErr.Error())
+            }
+            _map["Struct"] = boilerEnabled
+
+            // Simple Field (stage2Forced)
+            stage2Forced, _stage2ForcedErr := io.ReadBit()
+            if _stage2ForcedErr != nil {
+                return nil, errors.New("Error parsing 'stage2Forced' field " + _stage2ForcedErr.Error())
+            }
+            _map["Struct"] = stage2Forced
+
+            // Simple Field (stage2Enabled)
+            stage2Enabled, _stage2EnabledErr := io.ReadBit()
+            if _stage2EnabledErr != nil {
+                return nil, errors.New("Error parsing 'stage2Enabled' field " + _stage2EnabledErr.Error())
+            }
+            _map["Struct"] = stage2Enabled
+
+            // Simple Field (stage1Forced)
+            stage1Forced, _stage1ForcedErr := io.ReadBit()
+            if _stage1ForcedErr != nil {
+                return nil, errors.New("Error parsing 'stage1Forced' field " + _stage1ForcedErr.Error())
+            }
+            _map["Struct"] = stage1Forced
+
+            // Simple Field (stage1Enabled)
+            stage1Enabled, _stage1EnabledErr := io.ReadBit()
+            if _stage1EnabledErr != nil {
+                return nil, errors.New("Error parsing 'stage1Enabled' field " + _stage1EnabledErr.Error())
+            }
+            _map["Struct"] = stage1Enabled
+
+            // Simple Field (flowTemperatureDemandValid)
+            flowTemperatureDemandValid, _flowTemperatureDemandValidErr := io.ReadBit()
+            if _flowTemperatureDemandValidErr != nil {
+                return nil, errors.New("Error parsing 'flowTemperatureDemandValid' field " + _flowTemperatureDemandValidErr.Error())
+            }
+            _map["Struct"] = flowTemperatureDemandValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16U8B8ChilledWater": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (chilledWaterFlowTemperatureDemand)
+            chilledWaterFlowTemperatureDemand, _chilledWaterFlowTemperatureDemandErr := io.ReadInt16(16)
+            if _chilledWaterFlowTemperatureDemandErr != nil {
+                return nil, errors.New("Error parsing 'chilledWaterFlowTemperatureDemand' field " + _chilledWaterFlowTemperatureDemandErr.Error())
+            }
+            _map["Struct"] = chilledWaterFlowTemperatureDemand
+
+            // Simple Field (relativePower)
+            relativePower, _relativePowerErr := io.ReadUint8(8)
+            if _relativePowerErr != nil {
+                return nil, errors.New("Error parsing 'relativePower' field " + _relativePowerErr.Error())
+            }
+            _map["Struct"] = relativePower
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(5); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (chilledWaterPumpEnabled)
+            chilledWaterPumpEnabled, _chilledWaterPumpEnabledErr := io.ReadBit()
+            if _chilledWaterPumpEnabledErr != nil {
+                return nil, errors.New("Error parsing 'chilledWaterPumpEnabled' field " + _chilledWaterPumpEnabledErr.Error())
+            }
+            _map["Struct"] = chilledWaterPumpEnabled
+
+            // Simple Field (relativePowerValid)
+            relativePowerValid, _relativePowerValidErr := io.ReadBit()
+            if _relativePowerValidErr != nil {
+                return nil, errors.New("Error parsing 'relativePowerValid' field " + _relativePowerValidErr.Error())
+            }
+            _map["Struct"] = relativePowerValid
+
+            // Simple Field (chilledWaterFlowTemperatureDemandValid)
+            chilledWaterFlowTemperatureDemandValid, _chilledWaterFlowTemperatureDemandValidErr := io.ReadBit()
+            if _chilledWaterFlowTemperatureDemandValidErr != nil {
+                return nil, errors.New("Error parsing 'chilledWaterFlowTemperatureDemandValid' field " + _chilledWaterFlowTemperatureDemandValidErr.Error())
+            }
+            _map["Struct"] = chilledWaterFlowTemperatureDemandValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16U8B16Boiler": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (tempBoiler)
+            tempBoiler, _tempBoilerErr := io.ReadInt16(16)
+            if _tempBoilerErr != nil {
+                return nil, errors.New("Error parsing 'tempBoiler' field " + _tempBoilerErr.Error())
+            }
+            _map["Struct"] = tempBoiler
+
+            // Simple Field (relativePower)
+            relativePower, _relativePowerErr := io.ReadUint8(8)
+            if _relativePowerErr != nil {
+                return nil, errors.New("Error parsing 'relativePower' field " + _relativePowerErr.Error())
+            }
+            _map["Struct"] = relativePower
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (chimneySweepFunctionActive)
+            chimneySweepFunctionActive, _chimneySweepFunctionActiveErr := io.ReadBit()
+            if _chimneySweepFunctionActiveErr != nil {
+                return nil, errors.New("Error parsing 'chimneySweepFunctionActive' field " + _chimneySweepFunctionActiveErr.Error())
+            }
+            _map["Struct"] = chimneySweepFunctionActive
+
+            // Simple Field (reducedAvailability)
+            reducedAvailability, _reducedAvailabilityErr := io.ReadBit()
+            if _reducedAvailabilityErr != nil {
+                return nil, errors.New("Error parsing 'reducedAvailability' field " + _reducedAvailabilityErr.Error())
+            }
+            _map["Struct"] = reducedAvailability
+
+            // Simple Field (powerLimitBoilerReached)
+            powerLimitBoilerReached, _powerLimitBoilerReachedErr := io.ReadBit()
+            if _powerLimitBoilerReachedErr != nil {
+                return nil, errors.New("Error parsing 'powerLimitBoilerReached' field " + _powerLimitBoilerReachedErr.Error())
+            }
+            _map["Struct"] = powerLimitBoilerReached
+
+            // Simple Field (powerLimitStage1Reached)
+            powerLimitStage1Reached, _powerLimitStage1ReachedErr := io.ReadBit()
+            if _powerLimitStage1ReachedErr != nil {
+                return nil, errors.New("Error parsing 'powerLimitStage1Reached' field " + _powerLimitStage1ReachedErr.Error())
+            }
+            _map["Struct"] = powerLimitStage1Reached
+
+            // Simple Field (stage2Enabled)
+            stage2Enabled, _stage2EnabledErr := io.ReadBit()
+            if _stage2EnabledErr != nil {
+                return nil, errors.New("Error parsing 'stage2Enabled' field " + _stage2EnabledErr.Error())
+            }
+            _map["Struct"] = stage2Enabled
+
+            // Simple Field (stage1Enabled)
+            stage1Enabled, _stage1EnabledErr := io.ReadBit()
+            if _stage1EnabledErr != nil {
+                return nil, errors.New("Error parsing 'stage1Enabled' field " + _stage1EnabledErr.Error())
+            }
+            _map["Struct"] = stage1Enabled
+
+            // Simple Field (boilerTemporarilyNotProvidingHeat)
+            boilerTemporarilyNotProvidingHeat, _boilerTemporarilyNotProvidingHeatErr := io.ReadBit()
+            if _boilerTemporarilyNotProvidingHeatErr != nil {
+                return nil, errors.New("Error parsing 'boilerTemporarilyNotProvidingHeat' field " + _boilerTemporarilyNotProvidingHeatErr.Error())
+            }
+            _map["Struct"] = boilerTemporarilyNotProvidingHeat
+
+            // Simple Field (permanentlyOff)
+            permanentlyOff, _permanentlyOffErr := io.ReadBit()
+            if _permanentlyOffErr != nil {
+                return nil, errors.New("Error parsing 'permanentlyOff' field " + _permanentlyOffErr.Error())
+            }
+            _map["Struct"] = permanentlyOff
+
+            // Simple Field (boilerSwitchedOffWinterSummerMode)
+            boilerSwitchedOffWinterSummerMode, _boilerSwitchedOffWinterSummerModeErr := io.ReadBit()
+            if _boilerSwitchedOffWinterSummerModeErr != nil {
+                return nil, errors.New("Error parsing 'boilerSwitchedOffWinterSummerMode' field " + _boilerSwitchedOffWinterSummerModeErr.Error())
+            }
+            _map["Struct"] = boilerSwitchedOffWinterSummerMode
+
+            // Simple Field (boilerFailure)
+            boilerFailure, _boilerFailureErr := io.ReadBit()
+            if _boilerFailureErr != nil {
+                return nil, errors.New("Error parsing 'boilerFailure' field " + _boilerFailureErr.Error())
+            }
+            _map["Struct"] = boilerFailure
+
+            // Simple Field (relativePowerValid)
+            relativePowerValid, _relativePowerValidErr := io.ReadBit()
+            if _relativePowerValidErr != nil {
+                return nil, errors.New("Error parsing 'relativePowerValid' field " + _relativePowerValidErr.Error())
+            }
+            _map["Struct"] = relativePowerValid
+
+            // Simple Field (tempBoilerValid)
+            tempBoilerValid, _tempBoilerValidErr := io.ReadBit()
+            if _tempBoilerValidErr != nil {
+                return nil, errors.New("Error parsing 'tempBoilerValid' field " + _tempBoilerValidErr.Error())
+            }
+            _map["Struct"] = tempBoilerValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16U8B16Chiller": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (tempChiller)
+            tempChiller, _tempChillerErr := io.ReadInt16(16)
+            if _tempChillerErr != nil {
+                return nil, errors.New("Error parsing 'tempChiller' field " + _tempChillerErr.Error())
+            }
+            _map["Struct"] = tempChiller
+
+            // Simple Field (relativePower)
+            relativePower, _relativePowerErr := io.ReadUint8(8)
+            if _relativePowerErr != nil {
+                return nil, errors.New("Error parsing 'relativePower' field " + _relativePowerErr.Error())
+            }
+            _map["Struct"] = relativePower
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(8); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (reducedAvailability)
+            reducedAvailability, _reducedAvailabilityErr := io.ReadBit()
+            if _reducedAvailabilityErr != nil {
+                return nil, errors.New("Error parsing 'reducedAvailability' field " + _reducedAvailabilityErr.Error())
+            }
+            _map["Struct"] = reducedAvailability
+
+            // Simple Field (powerLimitChillerReached)
+            powerLimitChillerReached, _powerLimitChillerReachedErr := io.ReadBit()
+            if _powerLimitChillerReachedErr != nil {
+                return nil, errors.New("Error parsing 'powerLimitChillerReached' field " + _powerLimitChillerReachedErr.Error())
+            }
+            _map["Struct"] = powerLimitChillerReached
+
+            // Simple Field (powerLimitCurrentStageReached)
+            powerLimitCurrentStageReached, _powerLimitCurrentStageReachedErr := io.ReadBit()
+            if _powerLimitCurrentStageReachedErr != nil {
+                return nil, errors.New("Error parsing 'powerLimitCurrentStageReached' field " + _powerLimitCurrentStageReachedErr.Error())
+            }
+            _map["Struct"] = powerLimitCurrentStageReached
+
+            // Simple Field (permanentlyOff)
+            permanentlyOff, _permanentlyOffErr := io.ReadBit()
+            if _permanentlyOffErr != nil {
+                return nil, errors.New("Error parsing 'permanentlyOff' field " + _permanentlyOffErr.Error())
+            }
+            _map["Struct"] = permanentlyOff
+
+            // Simple Field (chillerFailure)
+            chillerFailure, _chillerFailureErr := io.ReadBit()
+            if _chillerFailureErr != nil {
+                return nil, errors.New("Error parsing 'chillerFailure' field " + _chillerFailureErr.Error())
+            }
+            _map["Struct"] = chillerFailure
+
+            // Simple Field (chillerRunningStatus)
+            chillerRunningStatus, _chillerRunningStatusErr := io.ReadBit()
+            if _chillerRunningStatusErr != nil {
+                return nil, errors.New("Error parsing 'chillerRunningStatus' field " + _chillerRunningStatusErr.Error())
+            }
+            _map["Struct"] = chillerRunningStatus
+
+            // Simple Field (relativePowerValid)
+            relativePowerValid, _relativePowerValidErr := io.ReadBit()
+            if _relativePowerValidErr != nil {
+                return nil, errors.New("Error parsing 'relativePowerValid' field " + _relativePowerValidErr.Error())
+            }
+            _map["Struct"] = relativePowerValid
+
+            // Simple Field (tempChillerValid)
+            tempChillerValid, _tempChillerValidErr := io.ReadBit()
+            if _tempChillerValidErr != nil {
+                return nil, errors.New("Error parsing 'tempChillerValid' field " + _tempChillerValidErr.Error())
+            }
+            _map["Struct"] = tempChillerValid
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16U8N8B8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (nominalPower)
+            nominalPower, _nominalPowerErr := io.ReadUint16(16)
+            if _nominalPowerErr != nil {
+                return nil, errors.New("Error parsing 'nominalPower' field " + _nominalPowerErr.Error())
+            }
+            _map["Struct"] = nominalPower
+
+            // Simple Field (relativePowerLimit)
+            relativePowerLimit, _relativePowerLimitErr := io.ReadUint8(8)
+            if _relativePowerLimitErr != nil {
+                return nil, errors.New("Error parsing 'relativePowerLimit' field " + _relativePowerLimitErr.Error())
+            }
+            _map["Struct"] = relativePowerLimit
+
+            // Simple Field (burnerType)
+            burnerType, _burnerTypeErr := io.ReadInt8(8)
+            if _burnerTypeErr != nil {
+                return nil, errors.New("Error parsing 'burnerType' field " + _burnerTypeErr.Error())
+            }
+            _map["Struct"] = burnerType
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(5); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (solidState)
+            solidState, _solidStateErr := io.ReadBit()
+            if _solidStateErr != nil {
+                return nil, errors.New("Error parsing 'solidState' field " + _solidStateErr.Error())
+            }
+            _map["Struct"] = solidState
+
+            // Simple Field (gas)
+            gas, _gasErr := io.ReadBit()
+            if _gasErr != nil {
+                return nil, errors.New("Error parsing 'gas' field " + _gasErr.Error())
+            }
+            _map["Struct"] = gas
+
+            // Simple Field (oil)
+            oil, _oilErr := io.ReadBit()
+            if _oilErr != nil {
+                return nil, errors.New("Error parsing 'oil' field " + _oilErr.Error())
+            }
+            _map["Struct"] = oil
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U5U5U6": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (magicNumber)
+            magicNumber, _magicNumberErr := io.ReadUint8(5)
+            if _magicNumberErr != nil {
+                return nil, errors.New("Error parsing 'magicNumber' field " + _magicNumberErr.Error())
+            }
+            _map["Struct"] = magicNumber
+
+            // Simple Field (versionNumber)
+            versionNumber, _versionNumberErr := io.ReadUint8(5)
+            if _versionNumberErr != nil {
+                return nil, errors.New("Error parsing 'versionNumber' field " + _versionNumberErr.Error())
+            }
+            _map["Struct"] = versionNumber
+
+            // Simple Field (revisionNumber)
+            revisionNumber, _revisionNumberErr := io.ReadUint8(6)
+            if _revisionNumberErr != nil {
+                return nil, errors.New("Error parsing 'revisionNumber' field " + _revisionNumberErr.Error())
+            }
+            _map["Struct"] = revisionNumber
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V32Z8VolumeLiter": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (volumeLiter)
+            volumeLiter, _volumeLiterErr := io.ReadInt32(32)
+            if _volumeLiterErr != nil {
+                return nil, errors.New("Error parsing 'volumeLiter' field " + _volumeLiterErr.Error())
+            }
+            _map["Struct"] = volumeLiter
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V32Z8FlowRate": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (flowRate)
+            flowRate, _flowRateErr := io.ReadInt32(32)
+            if _flowRateErr != nil {
+                return nil, errors.New("Error parsing 'flowRate' field " + _flowRateErr.Error())
+            }
+            _map["Struct"] = flowRate
+
+            // Simple Field (statusCommand)
+            statusCommand, _statusCommandErr := io.ReadUint8(8)
+            if _statusCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusCommand' field " + _statusCommandErr.Error())
+            }
+            _map["Struct"] = statusCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8N8N8N8B8B8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (logNumber)
+            logNumber, _logNumberErr := io.ReadUint8(8)
+            if _logNumberErr != nil {
+                return nil, errors.New("Error parsing 'logNumber' field " + _logNumberErr.Error())
+            }
+            _map["Struct"] = logNumber
+
+            // Simple Field (alarmPriority)
+            alarmPriority, _alarmPriorityErr := io.ReadUint8(8)
+            if _alarmPriorityErr != nil {
+                return nil, errors.New("Error parsing 'alarmPriority' field " + _alarmPriorityErr.Error())
+            }
+            _map["Struct"] = alarmPriority
+
+            // Simple Field (applicationArea)
+            applicationArea, _applicationAreaErr := io.ReadUint8(8)
+            if _applicationAreaErr != nil {
+                return nil, errors.New("Error parsing 'applicationArea' field " + _applicationAreaErr.Error())
+            }
+            _map["Struct"] = applicationArea
+
+            // Simple Field (errorClass)
+            errorClass, _errorClassErr := io.ReadUint8(8)
+            if _errorClassErr != nil {
+                return nil, errors.New("Error parsing 'errorClass' field " + _errorClassErr.Error())
+            }
+            _map["Struct"] = errorClass
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(4); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (errorCode_Sup)
+            errorCode_Sup, _errorCode_SupErr := io.ReadBit()
+            if _errorCode_SupErr != nil {
+                return nil, errors.New("Error parsing 'errorCode_Sup' field " + _errorCode_SupErr.Error())
+            }
+            _map["Struct"] = errorCode_Sup
+
+            // Simple Field (alarmText_Sup)
+            alarmText_Sup, _alarmText_SupErr := io.ReadBit()
+            if _alarmText_SupErr != nil {
+                return nil, errors.New("Error parsing 'alarmText_Sup' field " + _alarmText_SupErr.Error())
+            }
+            _map["Struct"] = alarmText_Sup
+
+            // Simple Field (timeStamp_Sup)
+            timeStamp_Sup, _timeStamp_SupErr := io.ReadBit()
+            if _timeStamp_SupErr != nil {
+                return nil, errors.New("Error parsing 'timeStamp_Sup' field " + _timeStamp_SupErr.Error())
+            }
+            _map["Struct"] = timeStamp_Sup
+
+            // Simple Field (ack_Sup)
+            ack_Sup, _ack_SupErr := io.ReadBit()
+            if _ack_SupErr != nil {
+                return nil, errors.New("Error parsing 'ack_Sup' field " + _ack_SupErr.Error())
+            }
+            _map["Struct"] = ack_Sup
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(5); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (alarmUnAck)
+            alarmUnAck, _alarmUnAckErr := io.ReadBit()
+            if _alarmUnAckErr != nil {
+                return nil, errors.New("Error parsing 'alarmUnAck' field " + _alarmUnAckErr.Error())
+            }
+            _map["Struct"] = alarmUnAck
+
+            // Simple Field (locked)
+            locked, _lockedErr := io.ReadBit()
+            if _lockedErr != nil {
+                return nil, errors.New("Error parsing 'locked' field " + _lockedErr.Error())
+            }
+            _map["Struct"] = locked
+
+            // Simple Field (inAlarm)
+            inAlarm, _inAlarmErr := io.ReadBit()
+            if _inAlarmErr != nil {
+                return nil, errors.New("Error parsing 'inAlarm' field " + _inAlarmErr.Error())
+            }
+            _map["Struct"] = inAlarm
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16V16": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (delayTime)
+            delayTime, _delayTimeErr := io.ReadUint16(16)
+            if _delayTimeErr != nil {
+                return nil, errors.New("Error parsing 'delayTime' field " + _delayTimeErr.Error())
+            }
+            _map["Struct"] = delayTime
+
+            // Simple Field (temperature)
+            temperature, _temperatureErr := io.ReadInt16(16)
+            if _temperatureErr != nil {
+                return nil, errors.New("Error parsing 'temperature' field " + _temperatureErr.Error())
+            }
+            _map["Struct"] = temperature
+            return values.NewPlcStruct(_map), nil
+        case formatName == "N16U32": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (manufacturerCode)
+            manufacturerCode, _manufacturerCodeErr := io.ReadUint16(16)
+            if _manufacturerCodeErr != nil {
+                return nil, errors.New("Error parsing 'manufacturerCode' field " + _manufacturerCodeErr.Error())
+            }
+            _map["Struct"] = manufacturerCode
+
+            // Simple Field (incrementedNumber)
+            incrementedNumber, _incrementedNumberErr := io.ReadUint32(32)
+            if _incrementedNumberErr != nil {
+                return nil, errors.New("Error parsing 'incrementedNumber' field " + _incrementedNumberErr.Error())
+            }
+            _map["Struct"] = incrementedNumber
+            return values.NewPlcStruct(_map), nil
+        case formatName == "F16F16F16": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (temperatureSetpointComfort)
+            temperatureSetpointComfort, _temperatureSetpointComfortErr := io.ReadFloat32(16)
+            if _temperatureSetpointComfortErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointComfort' field " + _temperatureSetpointComfortErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointComfort
+
+            // Simple Field (temperatureSetpointShiftStandby)
+            temperatureSetpointShiftStandby, _temperatureSetpointShiftStandbyErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftStandbyErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftStandby' field " + _temperatureSetpointShiftStandbyErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftStandby
+
+            // Simple Field (temperatureSetpointShiftEco)
+            temperatureSetpointShiftEco, _temperatureSetpointShiftEcoErr := io.ReadFloat32(16)
+            if _temperatureSetpointShiftEcoErr != nil {
+                return nil, errors.New("Error parsing 'temperatureSetpointShiftEco' field " + _temperatureSetpointShiftEcoErr.Error())
+            }
+            _map["Struct"] = temperatureSetpointShiftEco
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V8N8N8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (energyDemand)
+            energyDemand, _energyDemandErr := io.ReadInt8(8)
+            if _energyDemandErr != nil {
+                return nil, errors.New("Error parsing 'energyDemand' field " + _energyDemandErr.Error())
+            }
+            _map["Struct"] = energyDemand
+
+            // Simple Field (hvacControllerMode)
+            hvacControllerMode, _hvacControllerModeErr := io.ReadUint8(8)
+            if _hvacControllerModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacControllerMode' field " + _hvacControllerModeErr.Error())
+            }
+            _map["Struct"] = hvacControllerMode
+
+            // Simple Field (hvacEmergencyMode)
+            hvacEmergencyMode, _hvacEmergencyModeErr := io.ReadUint8(8)
+            if _hvacEmergencyModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacEmergencyMode' field " + _hvacEmergencyModeErr.Error())
+            }
+            _map["Struct"] = hvacEmergencyMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V16V16N8N8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (tempSetpointCooling)
+            tempSetpointCooling, _tempSetpointCoolingErr := io.ReadInt16(16)
+            if _tempSetpointCoolingErr != nil {
+                return nil, errors.New("Error parsing 'tempSetpointCooling' field " + _tempSetpointCoolingErr.Error())
+            }
+            _map["Struct"] = tempSetpointCooling
+
+            // Simple Field (tempSetpointHeating)
+            tempSetpointHeating, _tempSetpointHeatingErr := io.ReadInt16(16)
+            if _tempSetpointHeatingErr != nil {
+                return nil, errors.New("Error parsing 'tempSetpointHeating' field " + _tempSetpointHeatingErr.Error())
+            }
+            _map["Struct"] = tempSetpointHeating
+
+            // Simple Field (hvacControllerMode)
+            hvacControllerMode, _hvacControllerModeErr := io.ReadUint8(8)
+            if _hvacControllerModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacControllerMode' field " + _hvacControllerModeErr.Error())
+            }
+            _map["Struct"] = hvacControllerMode
+
+            // Simple Field (hvacEmergencyMode)
+            hvacEmergencyMode, _hvacEmergencyModeErr := io.ReadUint8(8)
+            if _hvacEmergencyModeErr != nil {
+                return nil, errors.New("Error parsing 'hvacEmergencyMode' field " + _hvacEmergencyModeErr.Error())
+            }
+            _map["Struct"] = hvacEmergencyMode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16U8Scaling": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (timePeriod)
+            timePeriod, _timePeriodErr := io.ReadUint16(16)
+            if _timePeriodErr != nil {
+                return nil, errors.New("Error parsing 'timePeriod' field " + _timePeriodErr.Error())
+            }
+            _map["Struct"] = timePeriod
+
+            // Simple Field (percent)
+            percent, _percentErr := io.ReadUint8(8)
+            if _percentErr != nil {
+                return nil, errors.New("Error parsing 'percent' field " + _percentErr.Error())
+            }
+            _map["Struct"] = percent
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16U8TariffNext": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (delayTime)
+            delayTime, _delayTimeErr := io.ReadUint16(16)
+            if _delayTimeErr != nil {
+                return nil, errors.New("Error parsing 'delayTime' field " + _delayTimeErr.Error())
+            }
+            _map["Struct"] = delayTime
+
+            // Simple Field (tariff)
+            tariff, _tariffErr := io.ReadUint8(8)
+            if _tariffErr != nil {
+                return nil, errors.New("Error parsing 'tariff' field " + _tariffErr.Error())
+            }
+            _map["Struct"] = tariff
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V32N8Z8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (countVal)
+            countVal, _countValErr := io.ReadInt32(32)
+            if _countValErr != nil {
+                return nil, errors.New("Error parsing 'countVal' field " + _countValErr.Error())
+            }
+            _map["Struct"] = countVal
+
+            // Simple Field (valInfField)
+            valInfField, _valInfFieldErr := io.ReadUint8(8)
+            if _valInfFieldErr != nil {
+                return nil, errors.New("Error parsing 'valInfField' field " + _valInfFieldErr.Error())
+            }
+            _map["Struct"] = valInfField
+
+            // Simple Field (statusOrCommand)
+            statusOrCommand, _statusOrCommandErr := io.ReadUint8(8)
+            if _statusOrCommandErr != nil {
+                return nil, errors.New("Error parsing 'statusOrCommand' field " + _statusOrCommandErr.Error())
+            }
+            _map["Struct"] = statusOrCommand
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U16U32U8N8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (manufacturerId)
+            manufacturerId, _manufacturerIdErr := io.ReadUint16(16)
+            if _manufacturerIdErr != nil {
+                return nil, errors.New("Error parsing 'manufacturerId' field " + _manufacturerIdErr.Error())
+            }
+            _map["Struct"] = manufacturerId
+
+            // Simple Field (identNumber)
+            identNumber, _identNumberErr := io.ReadUint32(32)
+            if _identNumberErr != nil {
+                return nil, errors.New("Error parsing 'identNumber' field " + _identNumberErr.Error())
+            }
+            _map["Struct"] = identNumber
+
+            // Simple Field (version)
+            version, _versionErr := io.ReadUint8(8)
+            if _versionErr != nil {
+                return nil, errors.New("Error parsing 'version' field " + _versionErr.Error())
+            }
+            _map["Struct"] = version
+
+            // Simple Field (medium)
+            medium, _mediumErr := io.ReadInt8(8)
+            if _mediumErr != nil {
+                return nil, errors.New("Error parsing 'medium' field " + _mediumErr.Error())
+            }
+            _map["Struct"] = medium
+            return values.NewPlcStruct(_map), nil
+        case formatName == "A8A8A8A8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (languageCode)
+            languageCode, _languageCodeErr := io.ReadString(16)
+            if _languageCodeErr != nil {
+                return nil, errors.New("Error parsing 'languageCode' field " + _languageCodeErr.Error())
+            }
+            _map["Struct"] = languageCode
+
+            // Simple Field (regionCode)
+            regionCode, _regionCodeErr := io.ReadString(16)
+            if _regionCodeErr != nil {
+                return nil, errors.New("Error parsing 'regionCode' field " + _regionCodeErr.Error())
+            }
+            _map["Struct"] = regionCode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8U8U8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (red)
+            red, _redErr := io.ReadUint8(8)
+            if _redErr != nil {
+                return nil, errors.New("Error parsing 'red' field " + _redErr.Error())
+            }
+            _map["Struct"] = red
+
+            // Simple Field (green)
+            green, _greenErr := io.ReadUint8(8)
+            if _greenErr != nil {
+                return nil, errors.New("Error parsing 'green' field " + _greenErr.Error())
+            }
+            _map["Struct"] = green
+
+            // Simple Field (blue)
+            blue, _blueErr := io.ReadUint8(8)
+            if _blueErr != nil {
+                return nil, errors.New("Error parsing 'blue' field " + _blueErr.Error())
+            }
+            _map["Struct"] = blue
+            return values.NewPlcStruct(_map), nil
+        case formatName == "A8A8Language": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (languageCode)
+            languageCode, _languageCodeErr := io.ReadString(16)
+            if _languageCodeErr != nil {
+                return nil, errors.New("Error parsing 'languageCode' field " + _languageCodeErr.Error())
+            }
+            _map["Struct"] = languageCode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "A8A8Region": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (regionCode)
+            regionCode, _regionCodeErr := io.ReadString(16)
+            if _regionCodeErr != nil {
+                return nil, errors.New("Error parsing 'regionCode' field " + _regionCodeErr.Error())
+            }
+            _map["Struct"] = regionCode
+            return values.NewPlcStruct(_map), nil
+        case formatName == "V32U8B8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (activeElectricalEnergy)
+            activeElectricalEnergy, _activeElectricalEnergyErr := io.ReadInt32(32)
+            if _activeElectricalEnergyErr != nil {
+                return nil, errors.New("Error parsing 'activeElectricalEnergy' field " + _activeElectricalEnergyErr.Error())
+            }
+            _map["Struct"] = activeElectricalEnergy
+
+            // Simple Field (tariff)
+            tariff, _tariffErr := io.ReadUint8(8)
+            if _tariffErr != nil {
+                return nil, errors.New("Error parsing 'tariff' field " + _tariffErr.Error())
+            }
+            _map["Struct"] = tariff
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(6); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (noTariff)
+            noTariff, _noTariffErr := io.ReadBit()
+            if _noTariffErr != nil {
+                return nil, errors.New("Error parsing 'noTariff' field " + _noTariffErr.Error())
+            }
+            _map["Struct"] = noTariff
+
+            // Simple Field (noActiveElectricalEnergy)
+            noActiveElectricalEnergy, _noActiveElectricalEnergyErr := io.ReadBit()
+            if _noActiveElectricalEnergyErr != nil {
+                return nil, errors.New("Error parsing 'noActiveElectricalEnergy' field " + _noActiveElectricalEnergyErr.Error())
+            }
+            _map["Struct"] = noActiveElectricalEnergy
+            return values.NewPlcStruct(_map), nil
+        case formatName == "B1N3N4": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (deactivationOfPriority)
+            deactivationOfPriority, _deactivationOfPriorityErr := io.ReadBit()
+            if _deactivationOfPriorityErr != nil {
+                return nil, errors.New("Error parsing 'deactivationOfPriority' field " + _deactivationOfPriorityErr.Error())
+            }
+            _map["Struct"] = deactivationOfPriority
+
+            // Simple Field (priorityLevel)
+            priorityLevel, _priorityLevelErr := io.ReadUint8(3)
+            if _priorityLevelErr != nil {
+                return nil, errors.New("Error parsing 'priorityLevel' field " + _priorityLevelErr.Error())
+            }
+            _map["Struct"] = priorityLevel
+
+            // Simple Field (modeLevel)
+            modeLevel, _modeLevelErr := io.ReadUint8(4)
+            if _modeLevelErr != nil {
+                return nil, errors.New("Error parsing 'modeLevel' field " + _modeLevelErr.Error())
+            }
+            _map["Struct"] = modeLevel
+            return values.NewPlcStruct(_map), nil
+        case formatName == "B10U6": // Struct
+            _map := map[string]interface{}{}
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(5); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (convertorError)
+            convertorError, _convertorErrorErr := io.ReadBit()
+            if _convertorErrorErr != nil {
+                return nil, errors.New("Error parsing 'convertorError' field " + _convertorErrorErr.Error())
+            }
+            _map["Struct"] = convertorError
+
+            // Simple Field (ballastFailure)
+            ballastFailure, _ballastFailureErr := io.ReadBit()
+            if _ballastFailureErr != nil {
+                return nil, errors.New("Error parsing 'ballastFailure' field " + _ballastFailureErr.Error())
+            }
+            _map["Struct"] = ballastFailure
+
+            // Simple Field (lampError)
+            lampError, _lampErrorErr := io.ReadBit()
+            if _lampErrorErr != nil {
+                return nil, errors.New("Error parsing 'lampError' field " + _lampErrorErr.Error())
+            }
+            _map["Struct"] = lampError
+
+            // Simple Field (read)
+            read, _readErr := io.ReadBit()
+            if _readErr != nil {
+                return nil, errors.New("Error parsing 'read' field " + _readErr.Error())
+            }
+            _map["Struct"] = read
+
+            // Simple Field (groupAddress)
+            groupAddress, _groupAddressErr := io.ReadBit()
+            if _groupAddressErr != nil {
+                return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
+            }
+            _map["Struct"] = groupAddress
+
+            // Simple Field (address)
+            address, _addressErr := io.ReadUint8(6)
+            if _addressErr != nil {
+                return nil, errors.New("Error parsing 'address' field " + _addressErr.Error())
+            }
+            _map["Struct"] = address
+            return values.NewPlcStruct(_map), nil
+        case formatName == "B2U6": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (sceneActivationInactive)
+            sceneActivationInactive, _sceneActivationInactiveErr := io.ReadBit()
+            if _sceneActivationInactiveErr != nil {
+                return nil, errors.New("Error parsing 'sceneActivationInactive' field " + _sceneActivationInactiveErr.Error())
+            }
+            _map["Struct"] = sceneActivationInactive
+
+            // Simple Field (storageFunctionDisable)
+            storageFunctionDisable, _storageFunctionDisableErr := io.ReadBit()
+            if _storageFunctionDisableErr != nil {
+                return nil, errors.New("Error parsing 'storageFunctionDisable' field " + _storageFunctionDisableErr.Error())
+            }
+            _map["Struct"] = storageFunctionDisable
+
+            // Simple Field (sceneNumber)
+            sceneNumber, _sceneNumberErr := io.ReadUint8(6)
+            if _sceneNumberErr != nil {
+                return nil, errors.New("Error parsing 'sceneNumber' field " + _sceneNumberErr.Error())
+            }
+            _map["Struct"] = sceneNumber
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8r7B1": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (setValue)
+            setValue, _setValueErr := io.ReadUint8(8)
+            if _setValueErr != nil {
+                return nil, errors.New("Error parsing 'setValue' field " + _setValueErr.Error())
+            }
+            _map["Struct"] = setValue
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(7); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (channelActivationActive)
+            channelActivationActive, _channelActivationActiveErr := io.ReadBit()
+            if _channelActivationActiveErr != nil {
+                return nil, errors.New("Error parsing 'channelActivationActive' field " + _channelActivationActiveErr.Error())
+            }
+            _map["Struct"] = channelActivationActive
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8U8B8": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (heightPosition)
+            heightPosition, _heightPositionErr := io.ReadUint8(8)
+            if _heightPositionErr != nil {
+                return nil, errors.New("Error parsing 'heightPosition' field " + _heightPositionErr.Error())
+            }
+            _map["Struct"] = heightPosition
+
+            // Simple Field (slatsPosition)
+            slatsPosition, _slatsPositionErr := io.ReadUint8(8)
+            if _slatsPositionErr != nil {
+                return nil, errors.New("Error parsing 'slatsPosition' field " + _slatsPositionErr.Error())
+            }
+            _map["Struct"] = slatsPosition
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(6); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (validSlatsPos)
+            validSlatsPos, _validSlatsPosErr := io.ReadBit()
+            if _validSlatsPosErr != nil {
+                return nil, errors.New("Error parsing 'validSlatsPos' field " + _validSlatsPosErr.Error())
+            }
+            _map["Struct"] = validSlatsPos
+
+            // Simple Field (validHeightPos)
+            validHeightPos, _validHeightPosErr := io.ReadBit()
+            if _validHeightPosErr != nil {
+                return nil, errors.New("Error parsing 'validHeightPos' field " + _validHeightPosErr.Error())
+            }
+            _map["Struct"] = validHeightPos
+            return values.NewPlcStruct(_map), nil
+        case formatName == "U8U8B16": // Struct
+            _map := map[string]interface{}{}
+
+            // Simple Field (heightPosition)
+            heightPosition, _heightPositionErr := io.ReadUint8(8)
+            if _heightPositionErr != nil {
+                return nil, errors.New("Error parsing 'heightPosition' field " + _heightPositionErr.Error())
+            }
+            _map["Struct"] = heightPosition
+
+            // Simple Field (slatsPosition)
+            slatsPosition, _slatsPositionErr := io.ReadUint8(8)
+            if _slatsPositionErr != nil {
+                return nil, errors.New("Error parsing 'slatsPosition' field " + _slatsPositionErr.Error())
+            }
+            _map["Struct"] = slatsPosition
+
+            // Simple Field (validSlatsPos)
+            validSlatsPos, _validSlatsPosErr := io.ReadBit()
+            if _validSlatsPosErr != nil {
+                return nil, errors.New("Error parsing 'validSlatsPos' field " + _validSlatsPosErr.Error())
+            }
+            _map["Struct"] = validSlatsPos
+
+            // Simple Field (validHeightPos)
+            validHeightPos, _validHeightPosErr := io.ReadBit()
+            if _validHeightPosErr != nil {
+                return nil, errors.New("Error parsing 'validHeightPos' field " + _validHeightPosErr.Error())
+            }
+            _map["Struct"] = validHeightPos
+
+            // Reserved Field (Just skip the bytes)
+            if _, _err := io.ReadUint8(3); _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            failure, _failureErr := io.ReadBit()
+            if _failureErr != nil {
+                return nil, errors.New("Error parsing 'failure' field " + _failureErr.Error())
+            }
+            _map["Struct"] = failure
+
+            // Simple Field (localOverride)
+            localOverride, _localOverrideErr := io.ReadBit()
+            if _localOverrideErr != nil {
+                return nil, errors.New("Error parsing 'localOverride' field " + _localOverrideErr.Error())
+            }
+            _map["Struct"] = localOverride
+
+            // Simple Field (locked)
+            locked, _lockedErr := io.ReadBit()
+            if _lockedErr != nil {
+                return nil, errors.New("Error parsing 'locked' field " + _lockedErr.Error())
+            }
+            _map["Struct"] = locked
+
+            // Simple Field (forced)
+            forced, _forcedErr := io.ReadBit()
+            if _forcedErr != nil {
+                return nil, errors.New("Error parsing 'forced' field " + _forcedErr.Error())
+            }
+            _map["Struct"] = forced
+
+            // Simple Field (weatherAlarm)
+            weatherAlarm, _weatherAlarmErr := io.ReadBit()
+            if _weatherAlarmErr != nil {
+                return nil, errors.New("Error parsing 'weatherAlarm' field " + _weatherAlarmErr.Error())
+            }
+            _map["Struct"] = weatherAlarm
+
+            // Simple Field (targetSPosRestrict)
+            targetSPosRestrict, _targetSPosRestrictErr := io.ReadBit()
+            if _targetSPosRestrictErr != nil {
+                return nil, errors.New("Error parsing 'targetSPosRestrict' field " + _targetSPosRestrictErr.Error())
+            }
+            _map["Struct"] = targetSPosRestrict
+
+            // Simple Field (targetHPosRestrict)
+            targetHPosRestrict, _targetHPosRestrictErr := io.ReadBit()
+            if _targetHPosRestrictErr != nil {
+                return nil, errors.New("Error parsing 'targetHPosRestrict' field " + _targetHPosRestrictErr.Error())
+            }
+            _map["Struct"] = targetHPosRestrict
+
+            // Simple Field (driveState)
+            driveState, _driveStateErr := io.ReadBit()
+            if _driveStateErr != nil {
+                return nil, errors.New("Error parsing 'driveState' field " + _driveStateErr.Error())
+            }
+            _map["Struct"] = driveState
+
+            // Simple Field (lowerPredefPos)
+            lowerPredefPos, _lowerPredefPosErr := io.ReadBit()
+            if _lowerPredefPosErr != nil {
+                return nil, errors.New("Error parsing 'lowerPredefPos' field " + _lowerPredefPosErr.Error())
+            }
+            _map["Struct"] = lowerPredefPos
+
+            // Simple Field (lowerEndPos)
+            lowerEndPos, _lowerEndPosErr := io.ReadBit()
+            if _lowerEndPosErr != nil {
+                return nil, errors.New("Error parsing 'lowerEndPos' field " + _lowerEndPosErr.Error())
+            }
+            _map["Struct"] = lowerEndPos
+
+            // Simple Field (upperEndPos)
+            upperEndPos, _upperEndPosErr := io.ReadBit()
+            if _upperEndPosErr != nil {
+                return nil, errors.New("Error parsing 'upperEndPos' field " + _upperEndPosErr.Error())
+            }
+            _map["Struct"] = upperEndPos
+            return values.NewPlcStruct(_map), nil
+    }
+    return nil, errors.New("unsupported type")
+}
+
+func KnxDatapoint2Serialize(io *utils.WriteBuffer, value api.PlcValue, formatName string) error {
+    switch {
+        case formatName == "B1": // BOOL
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(7, uint8(0x0)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B2": // Struct
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(6, uint8(0x0)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (control)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'control' field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B1U3": // Struct
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x0)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (control)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'control' field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "A8_ASCII": // STRING
+
+            // Simple Field (value)
+            if _err := io.WriteString(8, "ASCII", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "A8_8859_1": // STRING
+
+            // Simple Field (value)
+            if _err := io.WriteString(8, "ISO-8859-1", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "U8": // USINT
+
+            // Simple Field (value)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "V8": // SINT
+
+            // Simple Field (value)
+            if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "F16": // REAL
+
+            // Simple Field (value)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "N3N5r2N6r2N6": // TIME_OF_DAY
+
+            // Simple Field (day)
+            if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'day' field " + _err.Error())
+            }
+
+            // Simple Field (hour)
+            if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hour' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(2, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (minutes)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'minutes' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(2, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (seconds)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'seconds' field " + _err.Error())
+            }
+        case formatName == "r3N5r4N4r1U7": // DATE
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (day)
+            if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'day' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (month)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'month' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (year)
+            if _err := io.WriteUint8(7, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'year' field " + _err.Error())
+            }
+        case formatName == "U32": // UDINT
+
+            // Simple Field (value)
+            if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "V32": // DINT
+
+            // Simple Field (value)
+            if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "F32": // REAL
+
+            // Simple Field (value)
+            if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "U4U4U4U4U4U4B4N4": // Struct
+
+            // Simple Field (d6)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'd6' field " + _err.Error())
+            }
+
+            // Simple Field (d5)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'd5' field " + _err.Error())
+            }
+
+            // Simple Field (d4)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'd4' field " + _err.Error())
+            }
+
+            // Simple Field (d3)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'd3' field " + _err.Error())
+            }
+
+            // Simple Field (d2)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'd2' field " + _err.Error())
+            }
+
+            // Simple Field (d1)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'd1' field " + _err.Error())
+            }
+
+            // Simple Field (e)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'e' field " + _err.Error())
+            }
+
+            // Simple Field (p)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'p' field " + _err.Error())
+            }
+
+            // Simple Field (d)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'd' field " + _err.Error())
+            }
+
+            // Simple Field (c)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'c' field " + _err.Error())
+            }
+
+            // Simple Field (index)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'index' field " + _err.Error())
+            }
+        case formatName == "A112_ASCII": // STRING
+
+            // Simple Field (value)
+            if _err := io.WriteString(112, "ASCII", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "A112_8859_1": // STRING
+
+            // Simple Field (value)
+            if _err := io.WriteString(112, "ISO-8859-1", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "r2U6": // USINT
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(2, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B1r1U6": // Struct
+
+            // Simple Field (learn)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'learn' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (sceneNumber)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'sceneNumber' field " + _err.Error())
+            }
+        case formatName == "U8r4U4r3U5U3U5r2U6r2U6B16": // DATE_AND_TIME
+
+            // Simple Field (year)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'year' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (month)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'month' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (day)
+            if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'day' field " + _err.Error())
+            }
+
+            // Simple Field (dayOfWeek)
+            if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'dayOfWeek' field " + _err.Error())
+            }
+
+            // Simple Field (hour)
+            if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hour' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(2, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (minutes)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'minutes' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(2, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (seconds)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'seconds' field " + _err.Error())
+            }
+
+            // Simple Field (fault)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'fault' field " + _err.Error())
+            }
+
+            // Simple Field (workingDay)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'workingDay' field " + _err.Error())
+            }
+
+            // Simple Field (noWorkingDay)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noWorkingDay' field " + _err.Error())
+            }
+
+            // Simple Field (noYear)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noYear' field " + _err.Error())
+            }
+
+            // Simple Field (noMonthAndDay)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noMonthAndDay' field " + _err.Error())
+            }
+
+            // Simple Field (noDayOfWeek)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noDayOfWeek' field " + _err.Error())
+            }
+
+            // Simple Field (noTime)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noTime' field " + _err.Error())
+            }
+
+            // Simple Field (standardSummerTime)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'standardSummerTime' field " + _err.Error())
+            }
+
+            // Simple Field (clockWithSyncSignal)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'clockWithSyncSignal' field " + _err.Error())
+            }
+        case formatName == "N8": // USINT
+
+            // Simple Field (value)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B8": // BYTE
+
+            // Simple Field (value)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B16": // WORD
+
+            // Simple Field (value)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "U4U4": // Struct
+
+            // Simple Field (busy)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'busy' field " + _err.Error())
+            }
+
+            // Simple Field (nak)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'nak' field " + _err.Error())
+            }
+        case formatName == "r1b1U6": // Struct
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (sceneActive)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'sceneActive' field " + _err.Error())
+            }
+
+            // Simple Field (sceneNumber)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'sceneNumber' field " + _err.Error())
+            }
+        case formatName == "B32": // DWORD
+
+            // Simple Field (value)
+            if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "V64": // LINT
+
+            // Simple Field (value)
+            if _err := io.WriteInt64(64, value.GetInt64()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B24": // List
+
+            // Array Field (value)
+            for i := uint32(0); i < uint32((24)); i++ {
+                _itemErr := io.WriteBit(value.GetIndex(i).GetBool())
+                if _itemErr != nil {
+                    return errors.New("Error serializing 'value' field " + _itemErr.Error())
+                }
+            }
+        case formatName == "N3": // USINT
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (value)
+            if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'value' field " + _err.Error())
+            }
+        case formatName == "B1Z8HeatingOrCoolingZ": // Struct
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (heating)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'heating' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "B1Z8BinaryValueZ": // Struct
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (high)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'high' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8HvacOperatingMode": // Struct
+
+            // Simple Field (hvacOperatingMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacOperatingMode' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8DhwMode": // Struct
+
+            // Simple Field (dhwMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'dhwMode' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8HvacControllingMode": // Struct
+
+            // Simple Field (hvacControllingMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacControllingMode' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8EnableHeatingOrCoolingStage": // Struct
+
+            // Simple Field (enableHeatingOrCoolingStage)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'enableHeatingOrCoolingStage' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8BuildingMode": // Struct
+
+            // Simple Field (buildingMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'buildingMode' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8OccupancyMode": // Struct
+
+            // Simple Field (occupancyMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'occupancyMode' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "N8Z8EmergencyMode": // Struct
+
+            // Simple Field (hvacEmergencyMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacEmergencyMode' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U8Z8Rel": // Struct
+
+            // Simple Field (relValue)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relValue' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U8Z8Counter": // Struct
+
+            // Simple Field (counterValue)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'counterValue' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8TimePeriod": // Struct
+
+            // Simple Field (timePeriod)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'timePeriod' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8FlowRate": // Struct
+
+            // Simple Field (flowRate)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'flowRate' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8Counter": // Struct
+
+            // Simple Field (counterValue)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'counterValue' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8ElectricCurrent": // Struct
+
+            // Simple Field (electricalCurrent)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'electricalCurrent' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8Power": // Struct
+
+            // Simple Field (power)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'power' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8AtmPressure": // Struct
+
+            // Simple Field (atmPressure)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'atmPressure' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8PercentValue": // Struct
+
+            // Simple Field (percentValue)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'percentValue' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8HvacAirQuality": // Struct
+
+            // Simple Field (ppmResolution)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'ppmResolution' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8WindSpeed": // Struct
+
+            // Simple Field (windSpeed)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'windSpeed' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8SunIntensity": // Struct
+
+            // Simple Field (sunIntensity)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'sunIntensity' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16Z8HvacAirFlow": // Struct
+
+            // Simple Field (airFlow)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'airFlow' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "V8Z8RelSignedValue": // Struct
+
+            // Simple Field (relSignedValue)
+            if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
+                return errors.New("Error serializing 'relSignedValue' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "V16Z8DeltaTime": // Struct
+
+            // Simple Field (deltaTime)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'deltaTime' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "V16Z8RelSignedValue": // Struct
+
+            // Simple Field (relSignedValue)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'relSignedValue' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U16N8HvacModeAndTimeDelay": // Struct
+
+            // Simple Field (delayTime)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'delayTime' field " + _err.Error())
+            }
+
+            // Simple Field (hvacMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacMode' field " + _err.Error())
+            }
+        case formatName == "U16N8DhwModeAndTimeDelay": // Struct
+
+            // Simple Field (delayTime)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'delayTime' field " + _err.Error())
+            }
+
+            // Simple Field (dhwMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'dhwMode' field " + _err.Error())
+            }
+        case formatName == "U16N8OccupancyModeAndTimeDelay": // Struct
+
+            // Simple Field (delayTime)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'delayTime' field " + _err.Error())
+            }
+
+            // Simple Field (occupationMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'occupationMode' field " + _err.Error())
+            }
+        case formatName == "U16N8BuildingModeAndTimeDelay": // Struct
+
+            // Simple Field (delayTime)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'delayTime' field " + _err.Error())
+            }
+
+            // Simple Field (buildingMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'buildingMode' field " + _err.Error())
+            }
+        case formatName == "U8B8StatusBurnerController": // Struct
+
+            // Simple Field (actualRelativePower)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'actualRelativePower' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (stage2Active)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage2Active' field " + _err.Error())
+            }
+
+            // Simple Field (stage1Active)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage1Active' field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+
+            // Simple Field (actualRelativePowerValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'actualRelativePowerValid' field " + _err.Error())
+            }
+        case formatName == "U8B8LockingSignal": // Struct
+
+            // Simple Field (requestedPowerReduction)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'requestedPowerReduction' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (critical)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'critical' field " + _err.Error())
+            }
+
+            // Simple Field (requestedPowerReductionValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'requestedPowerReductionValid' field " + _err.Error())
+            }
+        case formatName == "U8B8BoilerControllerDemandSignal": // Struct
+
+            // Simple Field (relativeDemand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relativeDemand' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (controlsOperationStage2)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'controlsOperationStage2' field " + _err.Error())
+            }
+
+            // Simple Field (controlsOperationStage1)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'controlsOperationStage1' field " + _err.Error())
+            }
+        case formatName == "U8B8ActuatorPositionDemand": // Struct
+
+            // Simple Field (actuatorPositionDemand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'actuatorPositionDemand' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (emergencyDemand)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'emergencyDemand' field " + _err.Error())
+            }
+
+            // Simple Field (shiftLoadPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'shiftLoadPriority' field " + _err.Error())
+            }
+
+            // Simple Field (absoluteLoadPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'absoluteLoadPriority' field " + _err.Error())
+            }
+
+            // Simple Field (actuatorPositionDemandValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'actuatorPositionDemandValid' field " + _err.Error())
+            }
+        case formatName == "U8B8ActuatorPositionStatus": // Struct
+
+            // Simple Field (actualActuatorPosition)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'actualActuatorPosition' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (synchronizationMode)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'synchronizationMode' field " + _err.Error())
+            }
+
+            // Simple Field (valveKick)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'valveKick' field " + _err.Error())
+            }
+
+            // Simple Field (callibrationMode)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'callibrationMode' field " + _err.Error())
+            }
+
+            // Simple Field (positionManuallyOverridden)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'positionManuallyOverridden' field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+        case formatName == "U8B8StatusLightingActuator": // Struct
+
+            // Simple Field (lightingLevel)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'lightingLevel' field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+
+            // Simple Field (localOverride)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'localOverride' field " + _err.Error())
+            }
+
+            // Simple Field (dimming)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'dimming' field " + _err.Error())
+            }
+
+            // Simple Field (staircaseLightingFunction)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'staircaseLightingFunction' field " + _err.Error())
+            }
+
+            // Simple Field (nightMode)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'nightMode' field " + _err.Error())
+            }
+
+            // Simple Field (forced)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'forced' field " + _err.Error())
+            }
+
+            // Simple Field (locked)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'locked' field " + _err.Error())
+            }
+
+            // Simple Field (lightingLevelValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'lightingLevelValid' field " + _err.Error())
+            }
+        case formatName == "V16B8HeatProducerManagerStatus": // Struct
+
+            // Simple Field (tempFlowProdSegmH)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'tempFlowProdSegmH' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (temporarilyOff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'temporarilyOff' field " + _err.Error())
+            }
+
+            // Simple Field (permanentlyOff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'permanentlyOff' field " + _err.Error())
+            }
+
+            // Simple Field (switchedOffSummerMode)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'switchedOffSummerMode' field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+
+            // Simple Field (tempFlowProdSegmHValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'tempFlowProdSegmHValid' field " + _err.Error())
+            }
+        case formatName == "V16B8RoomTemperatureDemand": // Struct
+
+            // Simple Field (roomTemperatureDemand)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'roomTemperatureDemand' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (emergencyDemand)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'emergencyDemand' field " + _err.Error())
+            }
+
+            // Simple Field (shiftLoadPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'shiftLoadPriority' field " + _err.Error())
+            }
+
+            // Simple Field (absoluteLoadPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'absoluteLoadPriority' field " + _err.Error())
+            }
+
+            // Simple Field (roomTemperatureDemandValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'roomTemperatureDemandValid' field " + _err.Error())
+            }
+        case formatName == "V16B8ColdWaterProducerManagerStatus": // Struct
+
+            // Simple Field (flowTemperatureProdSegmC)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureProdSegmC' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (temporarilyOff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'temporarilyOff' field " + _err.Error())
+            }
+
+            // Simple Field (permanentlyOff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'permanentlyOff' field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+
+            // Simple Field (flowTemperatureProdSegmCValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureProdSegmCValid' field " + _err.Error())
+            }
+        case formatName == "V16B8WaterTemperatureControllerStatus": // Struct
+
+            // Simple Field (actualTemperature)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'actualTemperature' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (controllerWorking)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'controllerWorking' field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+
+            // Simple Field (actualTemperatureValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'actualTemperatureValid' field " + _err.Error())
+            }
+        case formatName == "V16B16": // Struct
+
+            // Simple Field (flowTemperatureDemand)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureDemand' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (demandFromDhwWhileLegionellaFunctionIsActive)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'demandFromDhwWhileLegionellaFunctionIsActive' field " + _err.Error())
+            }
+
+            // Simple Field (emergencyDemandForFrostProtection)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'emergencyDemandForFrostProtection' field " + _err.Error())
+            }
+
+            // Simple Field (requestForWaterCirculationInPrimaryDistributionSegment)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'requestForWaterCirculationInPrimaryDistributionSegment' field " + _err.Error())
+            }
+
+            // Simple Field (demandFromAuxillaryHeatOrCoolConsumer)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'demandFromAuxillaryHeatOrCoolConsumer' field " + _err.Error())
+            }
+
+            // Simple Field (demandFromVentilation)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'demandFromVentilation' field " + _err.Error())
+            }
+
+            // Simple Field (demandForRoomHeatingOrCooling)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'demandForRoomHeatingOrCooling' field " + _err.Error())
+            }
+
+            // Simple Field (heatDemandFromDhw)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'heatDemandFromDhw' field " + _err.Error())
+            }
+
+            // Simple Field (flowTemperatureDemandIsMin)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureDemandIsMin' field " + _err.Error())
+            }
+
+            // Simple Field (flowTemperatureDemandIsMax)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureDemandIsMax' field " + _err.Error())
+            }
+
+            // Simple Field (shiftLoadPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'shiftLoadPriority' field " + _err.Error())
+            }
+
+            // Simple Field (absoluteLoadPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'absoluteLoadPriority' field " + _err.Error())
+            }
+
+            // Simple Field (flowTemperatureDemandValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureDemandValid' field " + _err.Error())
+            }
+        case formatName == "U8N8": // Struct
+
+            // Simple Field (energyDemand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'energyDemand' field " + _err.Error())
+            }
+
+            // Simple Field (actualControllerMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'actualControllerMode' field " + _err.Error())
+            }
+        case formatName == "V16V16V16RoomTemperature": // Struct
+
+            // Simple Field (temperatureSetpointComfort)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointComfort' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointStandby)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointStandby' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointEco)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointEco' field " + _err.Error())
+            }
+        case formatName == "V16V16V16RoomTemperatureShift": // Struct
+
+            // Simple Field (temperatureSetpointShiftComfort)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftComfort' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftStandby)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftStandby' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftEco)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftEco' field " + _err.Error())
+            }
+        case formatName == "V16V16V16V16RoomTemperature": // Struct
+
+            // Simple Field (temperatureSetpointComfort)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointComfort' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointStandby)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointStandby' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointEco)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointEco' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointBProt)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointBProt' field " + _err.Error())
+            }
+        case formatName == "V16V16V16V16DhwtTemperature": // Struct
+
+            // Simple Field (temperatureSetpointLegioProtect)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointLegioProtect' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointNormal)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointNormal' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointReduced)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointReduced' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointFrostProtect)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointFrostProtect' field " + _err.Error())
+            }
+        case formatName == "V16V16V16V16RoomTemperatureShift": // Struct
+
+            // Simple Field (temperatureSetpointShiftComfort)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftComfort' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftStandby)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftStandby' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftEco)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftEco' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftBProt)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftBProt' field " + _err.Error())
+            }
+        case formatName == "V16U8B8Heat": // Struct
+
+            // Simple Field (flowTemperatureDemand)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureDemand' field " + _err.Error())
+            }
+
+            // Simple Field (relativePower)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relativePower' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(2, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (boilerEnabled)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'boilerEnabled' field " + _err.Error())
+            }
+
+            // Simple Field (stage2Forced)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage2Forced' field " + _err.Error())
+            }
+
+            // Simple Field (stage2Enabled)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage2Enabled' field " + _err.Error())
+            }
+
+            // Simple Field (stage1Forced)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage1Forced' field " + _err.Error())
+            }
+
+            // Simple Field (stage1Enabled)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage1Enabled' field " + _err.Error())
+            }
+
+            // Simple Field (flowTemperatureDemandValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'flowTemperatureDemandValid' field " + _err.Error())
+            }
+        case formatName == "V16U8B8ChilledWater": // Struct
+
+            // Simple Field (chilledWaterFlowTemperatureDemand)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'chilledWaterFlowTemperatureDemand' field " + _err.Error())
+            }
+
+            // Simple Field (relativePower)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relativePower' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (chilledWaterPumpEnabled)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'chilledWaterPumpEnabled' field " + _err.Error())
+            }
+
+            // Simple Field (relativePowerValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'relativePowerValid' field " + _err.Error())
+            }
+
+            // Simple Field (chilledWaterFlowTemperatureDemandValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'chilledWaterFlowTemperatureDemandValid' field " + _err.Error())
+            }
+        case formatName == "V16U8B16Boiler": // Struct
+
+            // Simple Field (tempBoiler)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'tempBoiler' field " + _err.Error())
+            }
+
+            // Simple Field (relativePower)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relativePower' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (chimneySweepFunctionActive)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'chimneySweepFunctionActive' field " + _err.Error())
+            }
+
+            // Simple Field (reducedAvailability)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'reducedAvailability' field " + _err.Error())
+            }
+
+            // Simple Field (powerLimitBoilerReached)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'powerLimitBoilerReached' field " + _err.Error())
+            }
+
+            // Simple Field (powerLimitStage1Reached)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'powerLimitStage1Reached' field " + _err.Error())
+            }
+
+            // Simple Field (stage2Enabled)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage2Enabled' field " + _err.Error())
+            }
+
+            // Simple Field (stage1Enabled)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'stage1Enabled' field " + _err.Error())
+            }
+
+            // Simple Field (boilerTemporarilyNotProvidingHeat)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'boilerTemporarilyNotProvidingHeat' field " + _err.Error())
+            }
+
+            // Simple Field (permanentlyOff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'permanentlyOff' field " + _err.Error())
+            }
+
+            // Simple Field (boilerSwitchedOffWinterSummerMode)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'boilerSwitchedOffWinterSummerMode' field " + _err.Error())
+            }
+
+            // Simple Field (boilerFailure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'boilerFailure' field " + _err.Error())
+            }
+
+            // Simple Field (relativePowerValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'relativePowerValid' field " + _err.Error())
+            }
+
+            // Simple Field (tempBoilerValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'tempBoilerValid' field " + _err.Error())
+            }
+        case formatName == "V16U8B16Chiller": // Struct
+
+            // Simple Field (tempChiller)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'tempChiller' field " + _err.Error())
+            }
+
+            // Simple Field (relativePower)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relativePower' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(8, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (reducedAvailability)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'reducedAvailability' field " + _err.Error())
+            }
+
+            // Simple Field (powerLimitChillerReached)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'powerLimitChillerReached' field " + _err.Error())
+            }
+
+            // Simple Field (powerLimitCurrentStageReached)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'powerLimitCurrentStageReached' field " + _err.Error())
+            }
+
+            // Simple Field (permanentlyOff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'permanentlyOff' field " + _err.Error())
+            }
+
+            // Simple Field (chillerFailure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'chillerFailure' field " + _err.Error())
+            }
+
+            // Simple Field (chillerRunningStatus)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'chillerRunningStatus' field " + _err.Error())
+            }
+
+            // Simple Field (relativePowerValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'relativePowerValid' field " + _err.Error())
+            }
+
+            // Simple Field (tempChillerValid)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'tempChillerValid' field " + _err.Error())
+            }
+        case formatName == "U16U8N8B8": // Struct
+
+            // Simple Field (nominalPower)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'nominalPower' field " + _err.Error())
+            }
+
+            // Simple Field (relativePowerLimit)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'relativePowerLimit' field " + _err.Error())
+            }
+
+            // Simple Field (burnerType)
+            if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
+                return errors.New("Error serializing 'burnerType' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (solidState)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'solidState' field " + _err.Error())
+            }
+
+            // Simple Field (gas)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'gas' field " + _err.Error())
+            }
+
+            // Simple Field (oil)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'oil' field " + _err.Error())
+            }
+        case formatName == "U5U5U6": // Struct
+
+            // Simple Field (magicNumber)
+            if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'magicNumber' field " + _err.Error())
+            }
+
+            // Simple Field (versionNumber)
+            if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'versionNumber' field " + _err.Error())
+            }
+
+            // Simple Field (revisionNumber)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'revisionNumber' field " + _err.Error())
+            }
+        case formatName == "V32Z8VolumeLiter": // Struct
+
+            // Simple Field (volumeLiter)
+            if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
+                return errors.New("Error serializing 'volumeLiter' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "V32Z8FlowRate": // Struct
+
+            // Simple Field (flowRate)
+            if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
+                return errors.New("Error serializing 'flowRate' field " + _err.Error())
+            }
+
+            // Simple Field (statusCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusCommand' field " + _err.Error())
+            }
+        case formatName == "U8N8N8N8B8B8": // Struct
+
+            // Simple Field (logNumber)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'logNumber' field " + _err.Error())
+            }
+
+            // Simple Field (alarmPriority)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'alarmPriority' field " + _err.Error())
+            }
+
+            // Simple Field (applicationArea)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'applicationArea' field " + _err.Error())
+            }
+
+            // Simple Field (errorClass)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'errorClass' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (errorCode_Sup)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'errorCode_Sup' field " + _err.Error())
+            }
+
+            // Simple Field (alarmText_Sup)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'alarmText_Sup' field " + _err.Error())
+            }
+
+            // Simple Field (timeStamp_Sup)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'timeStamp_Sup' field " + _err.Error())
+            }
+
+            // Simple Field (ack_Sup)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'ack_Sup' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (alarmUnAck)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'alarmUnAck' field " + _err.Error())
+            }
+
+            // Simple Field (locked)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'locked' field " + _err.Error())
+            }
+
+            // Simple Field (inAlarm)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'inAlarm' field " + _err.Error())
+            }
+        case formatName == "U16V16": // Struct
+
+            // Simple Field (delayTime)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'delayTime' field " + _err.Error())
+            }
+
+            // Simple Field (temperature)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'temperature' field " + _err.Error())
+            }
+        case formatName == "N16U32": // Struct
+
+            // Simple Field (manufacturerCode)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'manufacturerCode' field " + _err.Error())
+            }
+
+            // Simple Field (incrementedNumber)
+            if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
+                return errors.New("Error serializing 'incrementedNumber' field " + _err.Error())
+            }
+        case formatName == "F16F16F16": // Struct
+
+            // Simple Field (temperatureSetpointComfort)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointComfort' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftStandby)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftStandby' field " + _err.Error())
+            }
+
+            // Simple Field (temperatureSetpointShiftEco)
+            if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
+                return errors.New("Error serializing 'temperatureSetpointShiftEco' field " + _err.Error())
+            }
+        case formatName == "V8N8N8": // Struct
+
+            // Simple Field (energyDemand)
+            if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
+                return errors.New("Error serializing 'energyDemand' field " + _err.Error())
+            }
+
+            // Simple Field (hvacControllerMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacControllerMode' field " + _err.Error())
+            }
+
+            // Simple Field (hvacEmergencyMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacEmergencyMode' field " + _err.Error())
+            }
+        case formatName == "V16V16N8N8": // Struct
+
+            // Simple Field (tempSetpointCooling)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'tempSetpointCooling' field " + _err.Error())
+            }
+
+            // Simple Field (tempSetpointHeating)
+            if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
+                return errors.New("Error serializing 'tempSetpointHeating' field " + _err.Error())
+            }
+
+            // Simple Field (hvacControllerMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacControllerMode' field " + _err.Error())
+            }
+
+            // Simple Field (hvacEmergencyMode)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'hvacEmergencyMode' field " + _err.Error())
+            }
+        case formatName == "U16U8Scaling": // Struct
+
+            // Simple Field (timePeriod)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'timePeriod' field " + _err.Error())
+            }
+
+            // Simple Field (percent)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'percent' field " + _err.Error())
+            }
+        case formatName == "U16U8TariffNext": // Struct
+
+            // Simple Field (delayTime)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'delayTime' field " + _err.Error())
+            }
+
+            // Simple Field (tariff)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'tariff' field " + _err.Error())
+            }
+        case formatName == "V32N8Z8": // Struct
+
+            // Simple Field (countVal)
+            if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
+                return errors.New("Error serializing 'countVal' field " + _err.Error())
+            }
+
+            // Simple Field (valInfField)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'valInfField' field " + _err.Error())
+            }
+
+            // Simple Field (statusOrCommand)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'statusOrCommand' field " + _err.Error())
+            }
+        case formatName == "U16U32U8N8": // Struct
+
+            // Simple Field (manufacturerId)
+            if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
+                return errors.New("Error serializing 'manufacturerId' field " + _err.Error())
+            }
+
+            // Simple Field (identNumber)
+            if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
+                return errors.New("Error serializing 'identNumber' field " + _err.Error())
+            }
+
+            // Simple Field (version)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'version' field " + _err.Error())
+            }
+
+            // Simple Field (medium)
+            if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
+                return errors.New("Error serializing 'medium' field " + _err.Error())
+            }
+        case formatName == "A8A8A8A8": // Struct
+
+            // Simple Field (languageCode)
+            if _err := io.WriteString(16, "ASCII", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'languageCode' field " + _err.Error())
+            }
+
+            // Simple Field (regionCode)
+            if _err := io.WriteString(16, "ASCII", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'regionCode' field " + _err.Error())
+            }
+        case formatName == "U8U8U8": // Struct
+
+            // Simple Field (red)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'red' field " + _err.Error())
+            }
+
+            // Simple Field (green)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'green' field " + _err.Error())
+            }
+
+            // Simple Field (blue)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'blue' field " + _err.Error())
+            }
+        case formatName == "A8A8Language": // Struct
+
+            // Simple Field (languageCode)
+            if _err := io.WriteString(16, "ASCII", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'languageCode' field " + _err.Error())
+            }
+        case formatName == "A8A8Region": // Struct
+
+            // Simple Field (regionCode)
+            if _err := io.WriteString(16, "ASCII", value.GetString()); _err != nil {
+                return errors.New("Error serializing 'regionCode' field " + _err.Error())
+            }
+        case formatName == "V32U8B8": // Struct
+
+            // Simple Field (activeElectricalEnergy)
+            if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
+                return errors.New("Error serializing 'activeElectricalEnergy' field " + _err.Error())
+            }
+
+            // Simple Field (tariff)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'tariff' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (noTariff)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noTariff' field " + _err.Error())
+            }
+
+            // Simple Field (noActiveElectricalEnergy)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'noActiveElectricalEnergy' field " + _err.Error())
+            }
+        case formatName == "B1N3N4": // Struct
+
+            // Simple Field (deactivationOfPriority)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'deactivationOfPriority' field " + _err.Error())
+            }
+
+            // Simple Field (priorityLevel)
+            if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'priorityLevel' field " + _err.Error())
+            }
+
+            // Simple Field (modeLevel)
+            if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'modeLevel' field " + _err.Error())
+            }
+        case formatName == "B10U6": // Struct
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (convertorError)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'convertorError' field " + _err.Error())
+            }
+
+            // Simple Field (ballastFailure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'ballastFailure' field " + _err.Error())
+            }
+
+            // Simple Field (lampError)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'lampError' field " + _err.Error())
+            }
+
+            // Simple Field (read)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'read' field " + _err.Error())
+            }
+
+            // Simple Field (groupAddress)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'groupAddress' field " + _err.Error())
+            }
+
+            // Simple Field (address)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'address' field " + _err.Error())
+            }
+        case formatName == "B2U6": // Struct
+
+            // Simple Field (sceneActivationInactive)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'sceneActivationInactive' field " + _err.Error())
+            }
+
+            // Simple Field (storageFunctionDisable)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'storageFunctionDisable' field " + _err.Error())
+            }
+
+            // Simple Field (sceneNumber)
+            if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'sceneNumber' field " + _err.Error())
+            }
+        case formatName == "U8r7B1": // Struct
+
+            // Simple Field (setValue)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'setValue' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (channelActivationActive)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'channelActivationActive' field " + _err.Error())
+            }
+        case formatName == "U8U8B8": // Struct
+
+            // Simple Field (heightPosition)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'heightPosition' field " + _err.Error())
+            }
+
+            // Simple Field (slatsPosition)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'slatsPosition' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (validSlatsPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'validSlatsPos' field " + _err.Error())
+            }
+
+            // Simple Field (validHeightPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'validHeightPos' field " + _err.Error())
+            }
+        case formatName == "U8U8B16": // Struct
+
+            // Simple Field (heightPosition)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'heightPosition' field " + _err.Error())
+            }
+
+            // Simple Field (slatsPosition)
+            if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
+                return errors.New("Error serializing 'slatsPosition' field " + _err.Error())
+            }
+
+            // Simple Field (validSlatsPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'validSlatsPos' field " + _err.Error())
+            }
+
+            // Simple Field (validHeightPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'validHeightPos' field " + _err.Error())
+            }
+
+            // Reserved Field (Just skip the bytes)
+            if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+
+            // Simple Field (failure)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'failure' field " + _err.Error())
+            }
+
+            // Simple Field (localOverride)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'localOverride' field " + _err.Error())
+            }
+
+            // Simple Field (locked)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'locked' field " + _err.Error())
+            }
+
+            // Simple Field (forced)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'forced' field " + _err.Error())
+            }
+
+            // Simple Field (weatherAlarm)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'weatherAlarm' field " + _err.Error())
+            }
+
+            // Simple Field (targetSPosRestrict)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'targetSPosRestrict' field " + _err.Error())
+            }
+
+            // Simple Field (targetHPosRestrict)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'targetHPosRestrict' field " + _err.Error())
+            }
+
+            // Simple Field (driveState)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'driveState' field " + _err.Error())
+            }
+
+            // Simple Field (lowerPredefPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'lowerPredefPos' field " + _err.Error())
+            }
+
+            // Simple Field (lowerEndPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'lowerEndPos' field " + _err.Error())
+            }
+
+            // Simple Field (upperEndPos)
+            if _err := io.WriteBit(value.GetBool()); _err != nil {
+                return errors.New("Error serializing 'upperEndPos' field " + _err.Error())
+            }
+        default:
+
+            return errors.New("unsupported type")
+    }
+    return nil
+}
+
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointTypes.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointTypes.go
new file mode 100644
index 0000000..fc148d6
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointTypes.go
@@ -0,0 +1,4379 @@
+//
+// 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
+//
+//      http://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.
+//
+package model
+
+import (
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
+
+type KnxDatapointTypes string
+
+type IKnxDatapointTypes interface {
+    spi.Message
+    FormatName() string
+    MainNumber() uint16
+    SubNumber() uint16
+    Serialize(io utils.WriteBuffer) error
+}
+
+const(
+    KnxDatapointTypes_DPT_Switch KnxDatapointTypes = "DPT_Switch"
+    KnxDatapointTypes_DPT_Bool KnxDatapointTypes = "DPT_Bool"
+    KnxDatapointTypes_DPT_Enable KnxDatapointTypes = "DPT_Enable"
+    KnxDatapointTypes_DPT_Ramp KnxDatapointTypes = "DPT_Ramp"
+    KnxDatapointTypes_DPT_Alarm KnxDatapointTypes = "DPT_Alarm"
+    KnxDatapointTypes_DPT_BinaryValue KnxDatapointTypes = "DPT_BinaryValue"
+    KnxDatapointTypes_DPT_Step KnxDatapointTypes = "DPT_Step"
+    KnxDatapointTypes_DPT_UpDown KnxDatapointTypes = "DPT_UpDown"
+    KnxDatapointTypes_DPT_OpenClose KnxDatapointTypes = "DPT_OpenClose"
+    KnxDatapointTypes_DPT_Start KnxDatapointTypes = "DPT_Start"
+    KnxDatapointTypes_DPT_State KnxDatapointTypes = "DPT_State"
+    KnxDatapointTypes_DPT_Invert KnxDatapointTypes = "DPT_Invert"
+    KnxDatapointTypes_DPT_DimSendStyle KnxDatapointTypes = "DPT_DimSendStyle"
+    KnxDatapointTypes_DPT_InputSource KnxDatapointTypes = "DPT_InputSource"
+    KnxDatapointTypes_DPT_Reset KnxDatapointTypes = "DPT_Reset"
+    KnxDatapointTypes_DPT_Ack KnxDatapointTypes = "DPT_Ack"
+    KnxDatapointTypes_DPT_Trigger KnxDatapointTypes = "DPT_Trigger"
+    KnxDatapointTypes_DPT_Occupancy KnxDatapointTypes = "DPT_Occupancy"
+    KnxDatapointTypes_DPT_Window_Door KnxDatapointTypes = "DPT_Window_Door"
+    KnxDatapointTypes_DPT_LogicalFunction KnxDatapointTypes = "DPT_LogicalFunction"
+    KnxDatapointTypes_DPT_Scene_AB KnxDatapointTypes = "DPT_Scene_AB"
+    KnxDatapointTypes_DPT_ShutterBlinds_Mode KnxDatapointTypes = "DPT_ShutterBlinds_Mode"
+    KnxDatapointTypes_DPT_Heat_Cool KnxDatapointTypes = "DPT_Heat_Cool"
+    KnxDatapointTypes_DPT_Switch_Control KnxDatapointTypes = "DPT_Switch_Control"
+    KnxDatapointTypes_DPT_Bool_Control KnxDatapointTypes = "DPT_Bool_Control"
+    KnxDatapointTypes_DPT_Enable_Control KnxDatapointTypes = "DPT_Enable_Control"
+    KnxDatapointTypes_DPT_Ramp_Control KnxDatapointTypes = "DPT_Ramp_Control"
+    KnxDatapointTypes_DPT_Alarm_Control KnxDatapointTypes = "DPT_Alarm_Control"
+    KnxDatapointTypes_DPT_BinaryValue_Control KnxDatapointTypes = "DPT_BinaryValue_Control"
+    KnxDatapointTypes_DPT_Step_Control KnxDatapointTypes = "DPT_Step_Control"
+    KnxDatapointTypes_DPT_Direction1_Control KnxDatapointTypes = "DPT_Direction1_Control"
+    KnxDatapointTypes_DPT_Direction2_Control KnxDatapointTypes = "DPT_Direction2_Control"
+    KnxDatapointTypes_DPT_Start_Control KnxDatapointTypes = "DPT_Start_Control"
+    KnxDatapointTypes_DPT_State_Control KnxDatapointTypes = "DPT_State_Control"
+    KnxDatapointTypes_DPT_Invert_Control KnxDatapointTypes = "DPT_Invert_Control"
+    KnxDatapointTypes_DPT_Control_Dimming KnxDatapointTypes = "DPT_Control_Dimming"
+    KnxDatapointTypes_DPT_Control_Blinds KnxDatapointTypes = "DPT_Control_Blinds"
+    KnxDatapointTypes_DPT_Char_ASCII KnxDatapointTypes = "DPT_Char_ASCII"
+    KnxDatapointTypes_DPT_Char_8859_1 KnxDatapointTypes = "DPT_Char_8859_1"
+    KnxDatapointTypes_DPT_Scaling KnxDatapointTypes = "DPT_Scaling"
+    KnxDatapointTypes_DPT_Angle KnxDatapointTypes = "DPT_Angle"
+    KnxDatapointTypes_DPT_Percent_U8 KnxDatapointTypes = "DPT_Percent_U8"
+    KnxDatapointTypes_DPT_DecimalFactor KnxDatapointTypes = "DPT_DecimalFactor"
+    KnxDatapointTypes_DPT_Tariff KnxDatapointTypes = "DPT_Tariff"
+    KnxDatapointTypes_DPT_Value_1_Ucount KnxDatapointTypes = "DPT_Value_1_Ucount"
+    KnxDatapointTypes_DPT_Percent_V8 KnxDatapointTypes = "DPT_Percent_V8"
+    KnxDatapointTypes_DPT_Value_1_Count KnxDatapointTypes = "DPT_Value_1_Count"
+    KnxDatapointTypes_DPT_Status_Mode3 KnxDatapointTypes = "DPT_Status_Mode3"
+    KnxDatapointTypes_DPT_Value_2_Ucount KnxDatapointTypes = "DPT_Value_2_Ucount"
+    KnxDatapointTypes_DPT_TimePeriodMsec KnxDatapointTypes = "DPT_TimePeriodMsec"
+    KnxDatapointTypes_DPT_TimePeriod10MSec KnxDatapointTypes = "DPT_TimePeriod10MSec"
+    KnxDatapointTypes_DPT_TimePeriod100MSec KnxDatapointTypes = "DPT_TimePeriod100MSec"
+    KnxDatapointTypes_DPT_TimePeriodSec KnxDatapointTypes = "DPT_TimePeriodSec"
+    KnxDatapointTypes_DPT_TimePeriodMin KnxDatapointTypes = "DPT_TimePeriodMin"
+    KnxDatapointTypes_DPT_TimePeriodHrs KnxDatapointTypes = "DPT_TimePeriodHrs"
+    KnxDatapointTypes_DPT_PropDataType KnxDatapointTypes = "DPT_PropDataType"
+    KnxDatapointTypes_DPT_Length_mm KnxDatapointTypes = "DPT_Length_mm"
+    KnxDatapointTypes_DPT_UElCurrentmA KnxDatapointTypes = "DPT_UElCurrentmA"
+    KnxDatapointTypes_DPT_Brightness KnxDatapointTypes = "DPT_Brightness"
+    KnxDatapointTypes_DPT_Value_2_Count KnxDatapointTypes = "DPT_Value_2_Count"
+    KnxDatapointTypes_DPT_DeltaTimeMsec KnxDatapointTypes = "DPT_DeltaTimeMsec"
+    KnxDatapointTypes_DPT_DeltaTime10MSec KnxDatapointTypes = "DPT_DeltaTime10MSec"
+    KnxDatapointTypes_DPT_DeltaTime100MSec KnxDatapointTypes = "DPT_DeltaTime100MSec"
+    KnxDatapointTypes_DPT_DeltaTimeSec KnxDatapointTypes = "DPT_DeltaTimeSec"
+    KnxDatapointTypes_DPT_DeltaTimeMin KnxDatapointTypes = "DPT_DeltaTimeMin"
+    KnxDatapointTypes_DPT_DeltaTimeHrs KnxDatapointTypes = "DPT_DeltaTimeHrs"
+    KnxDatapointTypes_DPT_Percent_V16 KnxDatapointTypes = "DPT_Percent_V16"
+    KnxDatapointTypes_DPT_Rotation_Angle KnxDatapointTypes = "DPT_Rotation_Angle"
+    KnxDatapointTypes_DPT_Value_Temp KnxDatapointTypes = "DPT_Value_Temp"
+    KnxDatapointTypes_DPT_Value_Tempd KnxDatapointTypes = "DPT_Value_Tempd"
+    KnxDatapointTypes_DPT_Value_Tempa KnxDatapointTypes = "DPT_Value_Tempa"
+    KnxDatapointTypes_DPT_Value_Lux KnxDatapointTypes = "DPT_Value_Lux"
+    KnxDatapointTypes_DPT_Value_Wsp KnxDatapointTypes = "DPT_Value_Wsp"
+    KnxDatapointTypes_DPT_Value_Pres KnxDatapointTypes = "DPT_Value_Pres"
+    KnxDatapointTypes_DPT_Value_Humidity KnxDatapointTypes = "DPT_Value_Humidity"
+    KnxDatapointTypes_DPT_Value_AirQuality KnxDatapointTypes = "DPT_Value_AirQuality"
+    KnxDatapointTypes_DPT_Value_Time1 KnxDatapointTypes = "DPT_Value_Time1"
+    KnxDatapointTypes_DPT_Value_Time2 KnxDatapointTypes = "DPT_Value_Time2"
+    KnxDatapointTypes_DPT_Value_Volt KnxDatapointTypes = "DPT_Value_Volt"
+    KnxDatapointTypes_DPT_Value_Curr KnxDatapointTypes = "DPT_Value_Curr"
+    KnxDatapointTypes_DPT_PowerDensity KnxDatapointTypes = "DPT_PowerDensity"
+    KnxDatapointTypes_DPT_KelvinPerPercent KnxDatapointTypes = "DPT_KelvinPerPercent"
+    KnxDatapointTypes_DPT_Power KnxDatapointTypes = "DPT_Power"
+    KnxDatapointTypes_DPT_Value_Volume_Flow KnxDatapointTypes = "DPT_Value_Volume_Flow"
+    KnxDatapointTypes_DPT_Rain_Amount KnxDatapointTypes = "DPT_Rain_Amount"
+    KnxDatapointTypes_DPT_Value_Temp_F KnxDatapointTypes = "DPT_Value_Temp_F"
+    KnxDatapointTypes_DPT_Value_Wsp_kmh KnxDatapointTypes = "DPT_Value_Wsp_kmh"
+    KnxDatapointTypes_DPT_TimeOfDay KnxDatapointTypes = "DPT_TimeOfDay"
+    KnxDatapointTypes_DPT_Date KnxDatapointTypes = "DPT_Date"
+    KnxDatapointTypes_DPT_Value_4_Ucount KnxDatapointTypes = "DPT_Value_4_Ucount"
+    KnxDatapointTypes_DPT_Value_4_Count KnxDatapointTypes = "DPT_Value_4_Count"
+    KnxDatapointTypes_DPT_FlowRate_m3h KnxDatapointTypes = "DPT_FlowRate_m3h"
+    KnxDatapointTypes_DPT_ActiveEnergy KnxDatapointTypes = "DPT_ActiveEnergy"
+    KnxDatapointTypes_DPT_ApparantEnergy KnxDatapointTypes = "DPT_ApparantEnergy"
+    KnxDatapointTypes_DPT_ReactiveEnergy KnxDatapointTypes = "DPT_ReactiveEnergy"
+    KnxDatapointTypes_DPT_ActiveEnergy_kWh KnxDatapointTypes = "DPT_ActiveEnergy_kWh"
+    KnxDatapointTypes_DPT_ApparantEnergy_kVAh KnxDatapointTypes = "DPT_ApparantEnergy_kVAh"
+    KnxDatapointTypes_DPT_ReactiveEnergy_kVARh KnxDatapointTypes = "DPT_ReactiveEnergy_kVARh"
+    KnxDatapointTypes_DPT_LongDeltaTimeSec KnxDatapointTypes = "DPT_LongDeltaTimeSec"
+    KnxDatapointTypes_DPT_Value_Acceleration KnxDatapointTypes = "DPT_Value_Acceleration"
+    KnxDatapointTypes_DPT_Value_Acceleration_Angular KnxDatapointTypes = "DPT_Value_Acceleration_Angular"
+    KnxDatapointTypes_DPT_Value_Activation_Energy KnxDatapointTypes = "DPT_Value_Activation_Energy"
+    KnxDatapointTypes_DPT_Value_Activity KnxDatapointTypes = "DPT_Value_Activity"
+    KnxDatapointTypes_DPT_Value_Mol KnxDatapointTypes = "DPT_Value_Mol"
+    KnxDatapointTypes_DPT_Value_Amplitude KnxDatapointTypes = "DPT_Value_Amplitude"
+    KnxDatapointTypes_DPT_Value_AngleRad KnxDatapointTypes = "DPT_Value_AngleRad"
+    KnxDatapointTypes_DPT_Value_AngleDeg KnxDatapointTypes = "DPT_Value_AngleDeg"
+    KnxDatapointTypes_DPT_Value_Angular_Momentum KnxDatapointTypes = "DPT_Value_Angular_Momentum"
+    KnxDatapointTypes_DPT_Value_Angular_Velocity KnxDatapointTypes = "DPT_Value_Angular_Velocity"
+    KnxDatapointTypes_DPT_Value_Area KnxDatapointTypes = "DPT_Value_Area"
+    KnxDatapointTypes_DPT_Value_Capacitance KnxDatapointTypes = "DPT_Value_Capacitance"
+    KnxDatapointTypes_DPT_Value_Charge_DensitySurface KnxDatapointTypes = "DPT_Value_Charge_DensitySurface"
+    KnxDatapointTypes_DPT_Value_Charge_DensityVolume KnxDatapointTypes = "DPT_Value_Charge_DensityVolume"
+    KnxDatapointTypes_DPT_Value_Compressibility KnxDatapointTypes = "DPT_Value_Compressibility"
+    KnxDatapointTypes_DPT_Value_Conductance KnxDatapointTypes = "DPT_Value_Conductance"
+    KnxDatapointTypes_DPT_Value_Electrical_Conductivity KnxDatapointTypes = "DPT_Value_Electrical_Conductivity"
+    KnxDatapointTypes_DPT_Value_Density KnxDatapointTypes = "DPT_Value_Density"
+    KnxDatapointTypes_DPT_Value_Electric_Charge KnxDatapointTypes = "DPT_Value_Electric_Charge"
+    KnxDatapointTypes_DPT_Value_Electric_Current KnxDatapointTypes = "DPT_Value_Electric_Current"
+    KnxDatapointTypes_DPT_Value_Electric_CurrentDensity KnxDatapointTypes = "DPT_Value_Electric_CurrentDensity"
+    KnxDatapointTypes_DPT_Value_Electric_DipoleMoment KnxDatapointTypes = "DPT_Value_Electric_DipoleMoment"
+    KnxDatapointTypes_DPT_Value_Electric_Displacement KnxDatapointTypes = "DPT_Value_Electric_Displacement"
+    KnxDatapointTypes_DPT_Value_Electric_FieldStrength KnxDatapointTypes = "DPT_Value_Electric_FieldStrength"
+    KnxDatapointTypes_DPT_Value_Electric_Flux KnxDatapointTypes = "DPT_Value_Electric_Flux"
+    KnxDatapointTypes_DPT_Value_Electric_FluxDensity KnxDatapointTypes = "DPT_Value_Electric_FluxDensity"
+    KnxDatapointTypes_DPT_Value_Electric_Polarization KnxDatapointTypes = "DPT_Value_Electric_Polarization"
+    KnxDatapointTypes_DPT_Value_Electric_Potential KnxDatapointTypes = "DPT_Value_Electric_Potential"
+    KnxDatapointTypes_DPT_Value_Electric_PotentialDifference KnxDatapointTypes = "DPT_Value_Electric_PotentialDifference"
+    KnxDatapointTypes_DPT_Value_ElectromagneticMoment KnxDatapointTypes = "DPT_Value_ElectromagneticMoment"
+    KnxDatapointTypes_DPT_Value_Electromotive_Force KnxDatapointTypes = "DPT_Value_Electromotive_Force"
+    KnxDatapointTypes_DPT_Value_Energy KnxDatapointTypes = "DPT_Value_Energy"
+    KnxDatapointTypes_DPT_Value_Force KnxDatapointTypes = "DPT_Value_Force"
+    KnxDatapointTypes_DPT_Value_Frequency KnxDatapointTypes = "DPT_Value_Frequency"
+    KnxDatapointTypes_DPT_Value_Angular_Frequency KnxDatapointTypes = "DPT_Value_Angular_Frequency"
+    KnxDatapointTypes_DPT_Value_Heat_Capacity KnxDatapointTypes = "DPT_Value_Heat_Capacity"
+    KnxDatapointTypes_DPT_Value_Heat_FlowRate KnxDatapointTypes = "DPT_Value_Heat_FlowRate"
+    KnxDatapointTypes_DPT_Value_Heat_Quantity KnxDatapointTypes = "DPT_Value_Heat_Quantity"
+    KnxDatapointTypes_DPT_Value_Impedance KnxDatapointTypes = "DPT_Value_Impedance"
+    KnxDatapointTypes_DPT_Value_Length KnxDatapointTypes = "DPT_Value_Length"
+    KnxDatapointTypes_DPT_Value_Light_Quantity KnxDatapointTypes = "DPT_Value_Light_Quantity"
+    KnxDatapointTypes_DPT_Value_Luminance KnxDatapointTypes = "DPT_Value_Luminance"
+    KnxDatapointTypes_DPT_Value_Luminous_Flux KnxDatapointTypes = "DPT_Value_Luminous_Flux"
+    KnxDatapointTypes_DPT_Value_Luminous_Intensity KnxDatapointTypes = "DPT_Value_Luminous_Intensity"
+    KnxDatapointTypes_DPT_Value_Magnetic_FieldStrength KnxDatapointTypes = "DPT_Value_Magnetic_FieldStrength"
+    KnxDatapointTypes_DPT_Value_Magnetic_Flux KnxDatapointTypes = "DPT_Value_Magnetic_Flux"
+    KnxDatapointTypes_DPT_Value_Magnetic_FluxDensity KnxDatapointTypes = "DPT_Value_Magnetic_FluxDensity"
+    KnxDatapointTypes_DPT_Value_Magnetic_Moment KnxDatapointTypes = "DPT_Value_Magnetic_Moment"
+    KnxDatapointTypes_DPT_Value_Magnetic_Polarization KnxDatapointTypes = "DPT_Value_Magnetic_Polarization"
+    KnxDatapointTypes_DPT_Value_Magnetization KnxDatapointTypes = "DPT_Value_Magnetization"
+    KnxDatapointTypes_DPT_Value_MagnetomotiveForce KnxDatapointTypes = "DPT_Value_MagnetomotiveForce"
+    KnxDatapointTypes_DPT_Value_Mass KnxDatapointTypes = "DPT_Value_Mass"
+    KnxDatapointTypes_DPT_Value_MassFlux KnxDatapointTypes = "DPT_Value_MassFlux"
+    KnxDatapointTypes_DPT_Value_Momentum KnxDatapointTypes = "DPT_Value_Momentum"
+    KnxDatapointTypes_DPT_Value_Phase_AngleRad KnxDatapointTypes = "DPT_Value_Phase_AngleRad"
+    KnxDatapointTypes_DPT_Value_Phase_AngleDeg KnxDatapointTypes = "DPT_Value_Phase_AngleDeg"
+    KnxDatapointTypes_DPT_Value_Power KnxDatapointTypes = "DPT_Value_Power"
+    KnxDatapointTypes_DPT_Value_Power_Factor KnxDatapointTypes = "DPT_Value_Power_Factor"
+    KnxDatapointTypes_DPT_Value_Pressure KnxDatapointTypes = "DPT_Value_Pressure"
+    KnxDatapointTypes_DPT_Value_Reactance KnxDatapointTypes = "DPT_Value_Reactance"
+    KnxDatapointTypes_DPT_Value_Resistance KnxDatapointTypes = "DPT_Value_Resistance"
+    KnxDatapointTypes_DPT_Value_Resistivity KnxDatapointTypes = "DPT_Value_Resistivity"
+    KnxDatapointTypes_DPT_Value_SelfInductance KnxDatapointTypes = "DPT_Value_SelfInductance"
+    KnxDatapointTypes_DPT_Value_SolidAngle KnxDatapointTypes = "DPT_Value_SolidAngle"
+    KnxDatapointTypes_DPT_Value_Sound_Intensity KnxDatapointTypes = "DPT_Value_Sound_Intensity"
+    KnxDatapointTypes_DPT_Value_Speed KnxDatapointTypes = "DPT_Value_Speed"
+    KnxDatapointTypes_DPT_Value_Stress KnxDatapointTypes = "DPT_Value_Stress"
+    KnxDatapointTypes_DPT_Value_Surface_Tension KnxDatapointTypes = "DPT_Value_Surface_Tension"
+    KnxDatapointTypes_DPT_Value_Common_Temperature KnxDatapointTypes = "DPT_Value_Common_Temperature"
+    KnxDatapointTypes_DPT_Value_Absolute_Temperature KnxDatapointTypes = "DPT_Value_Absolute_Temperature"
+    KnxDatapointTypes_DPT_Value_TemperatureDifference KnxDatapointTypes = "DPT_Value_TemperatureDifference"
+    KnxDatapointTypes_DPT_Value_Thermal_Capacity KnxDatapointTypes = "DPT_Value_Thermal_Capacity"
+    KnxDatapointTypes_DPT_Value_Thermal_Conductivity KnxDatapointTypes = "DPT_Value_Thermal_Conductivity"
+    KnxDatapointTypes_DPT_Value_ThermoelectricPower KnxDatapointTypes = "DPT_Value_ThermoelectricPower"
+    KnxDatapointTypes_DPT_Value_Time KnxDatapointTypes = "DPT_Value_Time"
+    KnxDatapointTypes_DPT_Value_Torque KnxDatapointTypes = "DPT_Value_Torque"
+    KnxDatapointTypes_DPT_Value_Volume KnxDatapointTypes = "DPT_Value_Volume"
+    KnxDatapointTypes_DPT_Value_Volume_Flux KnxDatapointTypes = "DPT_Value_Volume_Flux"
+    KnxDatapointTypes_DPT_Value_Weight KnxDatapointTypes = "DPT_Value_Weight"
+    KnxDatapointTypes_DPT_Value_Work KnxDatapointTypes = "DPT_Value_Work"
+    KnxDatapointTypes_DPT_Access_Data KnxDatapointTypes = "DPT_Access_Data"
+    KnxDatapointTypes_DPT_String_ASCII KnxDatapointTypes = "DPT_String_ASCII"
+    KnxDatapointTypes_DPT_String_8859_1 KnxDatapointTypes = "DPT_String_8859_1"
+    KnxDatapointTypes_DPT_SceneNumber KnxDatapointTypes = "DPT_SceneNumber"
+    KnxDatapointTypes_DPT_SceneControl KnxDatapointTypes = "DPT_SceneControl"
+    KnxDatapointTypes_DPT_DateTime KnxDatapointTypes = "DPT_DateTime"
+    KnxDatapointTypes_DPT_SCLOMode KnxDatapointTypes = "DPT_SCLOMode"
+    KnxDatapointTypes_DPT_BuildingMode KnxDatapointTypes = "DPT_BuildingMode"
+    KnxDatapointTypes_DPT_OccMode KnxDatapointTypes = "DPT_OccMode"
+    KnxDatapointTypes_DPT_Priority KnxDatapointTypes = "DPT_Priority"
+    KnxDatapointTypes_DPT_LightApplicationMode KnxDatapointTypes = "DPT_LightApplicationMode"
+    KnxDatapointTypes_DPT_ApplicationArea KnxDatapointTypes = "DPT_ApplicationArea"
+    KnxDatapointTypes_DPT_AlarmClassType KnxDatapointTypes = "DPT_AlarmClassType"
+    KnxDatapointTypes_DPT_PSUMode KnxDatapointTypes = "DPT_PSUMode"
+    KnxDatapointTypes_DPT_ErrorClass_System KnxDatapointTypes = "DPT_ErrorClass_System"
+    KnxDatapointTypes_DPT_ErrorClass_HVAC KnxDatapointTypes = "DPT_ErrorClass_HVAC"
+    KnxDatapointTypes_DPT_Time_Delay KnxDatapointTypes = "DPT_Time_Delay"
+    KnxDatapointTypes_DPT_Beaufort_Wind_Force_Scale KnxDatapointTypes = "DPT_Beaufort_Wind_Force_Scale"
+    KnxDatapointTypes_DPT_SensorSelect KnxDatapointTypes = "DPT_SensorSelect"
+    KnxDatapointTypes_DPT_ActuatorConnectType KnxDatapointTypes = "DPT_ActuatorConnectType"
+    KnxDatapointTypes_DPT_FuelType KnxDatapointTypes = "DPT_FuelType"
+    KnxDatapointTypes_DPT_BurnerType KnxDatapointTypes = "DPT_BurnerType"
+    KnxDatapointTypes_DPT_HVACMode KnxDatapointTypes = "DPT_HVACMode"
+    KnxDatapointTypes_DPT_DHWMode KnxDatapointTypes = "DPT_DHWMode"
+    KnxDatapointTypes_DPT_LoadPriority KnxDatapointTypes = "DPT_LoadPriority"
+    KnxDatapointTypes_DPT_HVACContrMode KnxDatapointTypes = "DPT_HVACContrMode"
+    KnxDatapointTypes_DPT_HVACEmergMode KnxDatapointTypes = "DPT_HVACEmergMode"
+    KnxDatapointTypes_DPT_ChangeoverMode KnxDatapointTypes = "DPT_ChangeoverMode"
+    KnxDatapointTypes_DPT_ValveMode KnxDatapointTypes = "DPT_ValveMode"
+    KnxDatapointTypes_DPT_DamperMode KnxDatapointTypes = "DPT_DamperMode"
+    KnxDatapointTypes_DPT_HeaterMode KnxDatapointTypes = "DPT_HeaterMode"
+    KnxDatapointTypes_DPT_FanMode KnxDatapointTypes = "DPT_FanMode"
+    KnxDatapointTypes_DPT_MasterSlaveMode KnxDatapointTypes = "DPT_MasterSlaveMode"
+    KnxDatapointTypes_DPT_StatusRoomSetp KnxDatapointTypes = "DPT_StatusRoomSetp"
+    KnxDatapointTypes_DPT_ADAType KnxDatapointTypes = "DPT_ADAType"
+    KnxDatapointTypes_DPT_BackupMode KnxDatapointTypes = "DPT_BackupMode"
+    KnxDatapointTypes_DPT_StartSynchronization KnxDatapointTypes = "DPT_StartSynchronization"
+    KnxDatapointTypes_DPT_Behaviour_Lock_Unlock KnxDatapointTypes = "DPT_Behaviour_Lock_Unlock"
+    KnxDatapointTypes_DPT_Behaviour_Bus_Power_Up_Down KnxDatapointTypes = "DPT_Behaviour_Bus_Power_Up_Down"
+    KnxDatapointTypes_DPT_DALI_Fade_Time KnxDatapointTypes = "DPT_DALI_Fade_Time"
+    KnxDatapointTypes_DPT_BlinkingMode KnxDatapointTypes = "DPT_BlinkingMode"
+    KnxDatapointTypes_DPT_LightControlMode KnxDatapointTypes = "DPT_LightControlMode"
+    KnxDatapointTypes_DPT_SwitchPBModel KnxDatapointTypes = "DPT_SwitchPBModel"
+    KnxDatapointTypes_DPT_PBAction KnxDatapointTypes = "DPT_PBAction"
+    KnxDatapointTypes_DPT_DimmPBModel KnxDatapointTypes = "DPT_DimmPBModel"
+    KnxDatapointTypes_DPT_SwitchOnMode KnxDatapointTypes = "DPT_SwitchOnMode"
+    KnxDatapointTypes_DPT_LoadTypeSet KnxDatapointTypes = "DPT_LoadTypeSet"
+    KnxDatapointTypes_DPT_LoadTypeDetected KnxDatapointTypes = "DPT_LoadTypeDetected"
+    KnxDatapointTypes_DPT_SABExceptBehaviour KnxDatapointTypes = "DPT_SABExceptBehaviour"
+    KnxDatapointTypes_DPT_SABBehaviour_Lock_Unlock KnxDatapointTypes = "DPT_SABBehaviour_Lock_Unlock"
+    KnxDatapointTypes_DPT_SSSBMode KnxDatapointTypes = "DPT_SSSBMode"
+    KnxDatapointTypes_DPT_BlindsControlMode KnxDatapointTypes = "DPT_BlindsControlMode"
+    KnxDatapointTypes_DPT_CommMode KnxDatapointTypes = "DPT_CommMode"
+    KnxDatapointTypes_DPT_AddInfoTypes KnxDatapointTypes = "DPT_AddInfoTypes"
+    KnxDatapointTypes_DPT_RF_ModeSelect KnxDatapointTypes = "DPT_RF_ModeSelect"
+    KnxDatapointTypes_DPT_RF_FilterSelect KnxDatapointTypes = "DPT_RF_FilterSelect"
+    KnxDatapointTypes_DPT_StatusGen KnxDatapointTypes = "DPT_StatusGen"
+    KnxDatapointTypes_DPT_Device_Control KnxDatapointTypes = "DPT_Device_Control"
+    KnxDatapointTypes_DPT_ForceSign KnxDatapointTypes = "DPT_ForceSign"
+    KnxDatapointTypes_DPT_ForceSignCool KnxDatapointTypes = "DPT_ForceSignCool"
+    KnxDatapointTypes_DPT_StatusRHC KnxDatapointTypes = "DPT_StatusRHC"
+    KnxDatapointTypes_DPT_StatusSDHWC KnxDatapointTypes = "DPT_StatusSDHWC"
+    KnxDatapointTypes_DPT_FuelTypeSet KnxDatapointTypes = "DPT_FuelTypeSet"
+    KnxDatapointTypes_DPT_StatusRCC KnxDatapointTypes = "DPT_StatusRCC"
+    KnxDatapointTypes_DPT_StatusAHU KnxDatapointTypes = "DPT_StatusAHU"
+    KnxDatapointTypes_DPT_LightActuatorErrorInfo KnxDatapointTypes = "DPT_LightActuatorErrorInfo"
+    KnxDatapointTypes_DPT_RF_ModeInfo KnxDatapointTypes = "DPT_RF_ModeInfo"
+    KnxDatapointTypes_DPT_RF_FilterInfo KnxDatapointTypes = "DPT_RF_FilterInfo"
+    KnxDatapointTypes_DPT_Channel_Activation_8 KnxDatapointTypes = "DPT_Channel_Activation_8"
+    KnxDatapointTypes_DPT_StatusDHWC KnxDatapointTypes = "DPT_StatusDHWC"
+    KnxDatapointTypes_DPT_StatusRHCC KnxDatapointTypes = "DPT_StatusRHCC"
+    KnxDatapointTypes_DPT_Media KnxDatapointTypes = "DPT_Media"
+    KnxDatapointTypes_DPT_Channel_Activation_16 KnxDatapointTypes = "DPT_Channel_Activation_16"
+    KnxDatapointTypes_DPT_OnOff_Action KnxDatapointTypes = "DPT_OnOff_Action"
+    KnxDatapointTypes_DPT_Alarm_Reaction KnxDatapointTypes = "DPT_Alarm_Reaction"
+    KnxDatapointTypes_DPT_UpDown_Action KnxDatapointTypes = "DPT_UpDown_Action"
+    KnxDatapointTypes_DPT_HVAC_PB_Action KnxDatapointTypes = "DPT_HVAC_PB_Action"
+    KnxDatapointTypes_DPT_VarString_8859_1 KnxDatapointTypes = "DPT_VarString_8859_1"
+    KnxDatapointTypes_DPT_DoubleNibble KnxDatapointTypes = "DPT_DoubleNibble"
+    KnxDatapointTypes_DPT_SceneInfo KnxDatapointTypes = "DPT_SceneInfo"
+    KnxDatapointTypes_DPT_CombinedInfoOnOff KnxDatapointTypes = "DPT_CombinedInfoOnOff"
+    KnxDatapointTypes_DPT_UTF_8 KnxDatapointTypes = "DPT_UTF_8"
+    KnxDatapointTypes_DPT_ActiveEnergy_V64 KnxDatapointTypes = "DPT_ActiveEnergy_V64"
+    KnxDatapointTypes_DPT_ApparantEnergy_V64 KnxDatapointTypes = "DPT_ApparantEnergy_V64"
+    KnxDatapointTypes_DPT_ReactiveEnergy_V64 KnxDatapointTypes = "DPT_ReactiveEnergy_V64"
+    KnxDatapointTypes_DPT_Channel_Activation_24 KnxDatapointTypes = "DPT_Channel_Activation_24"
+    KnxDatapointTypes_DPT_PB_Action_HVAC_Extended KnxDatapointTypes = "DPT_PB_Action_HVAC_Extended"
+    KnxDatapointTypes_DPT_Heat_Cool_Z KnxDatapointTypes = "DPT_Heat_Cool_Z"
+    KnxDatapointTypes_DPT_BinaryValue_Z KnxDatapointTypes = "DPT_BinaryValue_Z"
+    KnxDatapointTypes_DPT_HVACMode_Z KnxDatapointTypes = "DPT_HVACMode_Z"
+    KnxDatapointTypes_DPT_DHWMode_Z KnxDatapointTypes = "DPT_DHWMode_Z"
+    KnxDatapointTypes_DPT_HVACContrMode_Z KnxDatapointTypes = "DPT_HVACContrMode_Z"
+    KnxDatapointTypes_DPT_EnablH_Cstage_Z_DPT_EnablH_CStage KnxDatapointTypes = "DPT_EnablH_Cstage_Z_DPT_EnablH_CStage"
+    KnxDatapointTypes_DPT_BuildingMode_Z KnxDatapointTypes = "DPT_BuildingMode_Z"
+    KnxDatapointTypes_DPT_OccMode_Z KnxDatapointTypes = "DPT_OccMode_Z"
+    KnxDatapointTypes_DPT_HVACEmergMode_Z KnxDatapointTypes = "DPT_HVACEmergMode_Z"
+    KnxDatapointTypes_DPT_RelValue_Z KnxDatapointTypes = "DPT_RelValue_Z"
+    KnxDatapointTypes_DPT_UCountValue8_Z KnxDatapointTypes = "DPT_UCountValue8_Z"
+    KnxDatapointTypes_DPT_TimePeriodMsec_Z KnxDatapointTypes = "DPT_TimePeriodMsec_Z"
+    KnxDatapointTypes_DPT_TimePeriod10Msec_Z KnxDatapointTypes = "DPT_TimePeriod10Msec_Z"
+    KnxDatapointTypes_DPT_TimePeriod100Msec_Z KnxDatapointTypes = "DPT_TimePeriod100Msec_Z"
+    KnxDatapointTypes_DPT_TimePeriodSec_Z KnxDatapointTypes = "DPT_TimePeriodSec_Z"
+    KnxDatapointTypes_DPT_TimePeriodMin_Z KnxDatapointTypes = "DPT_TimePeriodMin_Z"
+    KnxDatapointTypes_DPT_TimePeriodHrs_Z KnxDatapointTypes = "DPT_TimePeriodHrs_Z"
+    KnxDatapointTypes_DPT_UFlowRateLiter_h_Z KnxDatapointTypes = "DPT_UFlowRateLiter_h_Z"
+    KnxDatapointTypes_DPT_UCountValue16_Z KnxDatapointTypes = "DPT_UCountValue16_Z"
+    KnxDatapointTypes_DPT_UElCurrentyA_Z KnxDatapointTypes = "DPT_UElCurrentyA_Z"
+    KnxDatapointTypes_DPT_PowerKW_Z KnxDatapointTypes = "DPT_PowerKW_Z"
+    KnxDatapointTypes_DPT_AtmPressureAbs_Z KnxDatapointTypes = "DPT_AtmPressureAbs_Z"
+    KnxDatapointTypes_DPT_PercentU16_Z KnxDatapointTypes = "DPT_PercentU16_Z"
+    KnxDatapointTypes_DPT_HVACAirQual_Z KnxDatapointTypes = "DPT_HVACAirQual_Z"
+    KnxDatapointTypes_DPT_WindSpeed_Z_DPT_WindSpeed KnxDatapointTypes = "DPT_WindSpeed_Z_DPT_WindSpeed"
+    KnxDatapointTypes_DPT_SunIntensity_Z KnxDatapointTypes = "DPT_SunIntensity_Z"
+    KnxDatapointTypes_DPT_HVACAirFlowAbs_Z KnxDatapointTypes = "DPT_HVACAirFlowAbs_Z"
+    KnxDatapointTypes_DPT_RelSignedValue_Z KnxDatapointTypes = "DPT_RelSignedValue_Z"
+    KnxDatapointTypes_DPT_DeltaTimeMsec_Z KnxDatapointTypes = "DPT_DeltaTimeMsec_Z"
+    KnxDatapointTypes_DPT_DeltaTime10Msec_Z KnxDatapointTypes = "DPT_DeltaTime10Msec_Z"
+    KnxDatapointTypes_DPT_DeltaTime100Msec_Z KnxDatapointTypes = "DPT_DeltaTime100Msec_Z"
+    KnxDatapointTypes_DPT_DeltaTimeSec_Z KnxDatapointTypes = "DPT_DeltaTimeSec_Z"
+    KnxDatapointTypes_DPT_DeltaTimeMin_Z KnxDatapointTypes = "DPT_DeltaTimeMin_Z"
+    KnxDatapointTypes_DPT_DeltaTimeHrs_Z KnxDatapointTypes = "DPT_DeltaTimeHrs_Z"
+    KnxDatapointTypes_DPT_Percent_V16_Z KnxDatapointTypes = "DPT_Percent_V16_Z"
+    KnxDatapointTypes_DPT_TempHVACAbs_Z KnxDatapointTypes = "DPT_TempHVACAbs_Z"
+    KnxDatapointTypes_DPT_TempHVACRel_Z KnxDatapointTypes = "DPT_TempHVACRel_Z"
+    KnxDatapointTypes_DPT_HVACAirFlowRel_Z KnxDatapointTypes = "DPT_HVACAirFlowRel_Z"
+    KnxDatapointTypes_DPT_HVACModeNext KnxDatapointTypes = "DPT_HVACModeNext"
+    KnxDatapointTypes_DPT_DHWModeNext KnxDatapointTypes = "DPT_DHWModeNext"
+    KnxDatapointTypes_DPT_OccModeNext KnxDatapointTypes = "DPT_OccModeNext"
+    KnxDatapointTypes_DPT_BuildingModeNext KnxDatapointTypes = "DPT_BuildingModeNext"
+    KnxDatapointTypes_DPT_StatusBUC KnxDatapointTypes = "DPT_StatusBUC"
+    KnxDatapointTypes_DPT_LockSign KnxDatapointTypes = "DPT_LockSign"
+    KnxDatapointTypes_DPT_ValueDemBOC KnxDatapointTypes = "DPT_ValueDemBOC"
+    KnxDatapointTypes_DPT_ActPosDemAbs KnxDatapointTypes = "DPT_ActPosDemAbs"
+    KnxDatapointTypes_DPT_StatusAct KnxDatapointTypes = "DPT_StatusAct"
+    KnxDatapointTypes_DPT_StatusLightingActuator KnxDatapointTypes = "DPT_StatusLightingActuator"
+    KnxDatapointTypes_DPT_StatusHPM KnxDatapointTypes = "DPT_StatusHPM"
+    KnxDatapointTypes_DPT_TempRoomDemAbs KnxDatapointTypes = "DPT_TempRoomDemAbs"
+    KnxDatapointTypes_DPT_StatusCPM KnxDatapointTypes = "DPT_StatusCPM"
+    KnxDatapointTypes_DPT_StatusWTC KnxDatapointTypes = "DPT_StatusWTC"
+    KnxDatapointTypes_DPT_TempFlowWaterDemAbs KnxDatapointTypes = "DPT_TempFlowWaterDemAbs"
+    KnxDatapointTypes_DPT_EnergyDemWater KnxDatapointTypes = "DPT_EnergyDemWater"
+    KnxDatapointTypes_DPT_TempRoomSetpSetShift3 KnxDatapointTypes = "DPT_TempRoomSetpSetShift3"
+    KnxDatapointTypes_DPT_TempRoomSetpSet3 KnxDatapointTypes = "DPT_TempRoomSetpSet3"
+    KnxDatapointTypes_DPT_TempRoomSetpSet4 KnxDatapointTypes = "DPT_TempRoomSetpSet4"
+    KnxDatapointTypes_DPT_TempDHWSetpSet4 KnxDatapointTypes = "DPT_TempDHWSetpSet4"
+    KnxDatapointTypes_DPT_TempRoomSetpSetShift4 KnxDatapointTypes = "DPT_TempRoomSetpSetShift4"
+    KnxDatapointTypes_DPT_PowerFlowWaterDemHPM KnxDatapointTypes = "DPT_PowerFlowWaterDemHPM"
+    KnxDatapointTypes_DPT_PowerFlowWaterDemCPM KnxDatapointTypes = "DPT_PowerFlowWaterDemCPM"
+    KnxDatapointTypes_DPT_StatusBOC KnxDatapointTypes = "DPT_StatusBOC"
+    KnxDatapointTypes_DPT_StatusCC KnxDatapointTypes = "DPT_StatusCC"
+    KnxDatapointTypes_DPT_SpecHeatProd KnxDatapointTypes = "DPT_SpecHeatProd"
+    KnxDatapointTypes_DPT_Version KnxDatapointTypes = "DPT_Version"
+    KnxDatapointTypes_DPT_VolumeLiter_Z KnxDatapointTypes = "DPT_VolumeLiter_Z"
+    KnxDatapointTypes_DPT_FlowRate_m3h_Z KnxDatapointTypes = "DPT_FlowRate_m3h_Z"
+    KnxDatapointTypes_DPT_AlarmInfo KnxDatapointTypes = "DPT_AlarmInfo"
+    KnxDatapointTypes_DPT_TempHVACAbsNext KnxDatapointTypes = "DPT_TempHVACAbsNext"
+    KnxDatapointTypes_DPT_SerNum KnxDatapointTypes = "DPT_SerNum"
+    KnxDatapointTypes_DPT_TempRoomSetpSetF163 KnxDatapointTypes = "DPT_TempRoomSetpSetF163"
+    KnxDatapointTypes_DPT_TempRoomSetpSetShiftF163 KnxDatapointTypes = "DPT_TempRoomSetpSetShiftF163"
+    KnxDatapointTypes_DPT_EnergyDemAir KnxDatapointTypes = "DPT_EnergyDemAir"
+    KnxDatapointTypes_DPT_TempSupply_AirSetpSet KnxDatapointTypes = "DPT_TempSupply_AirSetpSet"
+    KnxDatapointTypes_DPT_ScalingSpeed KnxDatapointTypes = "DPT_ScalingSpeed"
+    KnxDatapointTypes_DPT_Scaling_Step_Time KnxDatapointTypes = "DPT_Scaling_Step_Time"
+    KnxDatapointTypes_DPT_TariffNext KnxDatapointTypes = "DPT_TariffNext"
+    KnxDatapointTypes_DPT_MeteringValue KnxDatapointTypes = "DPT_MeteringValue"
+    KnxDatapointTypes_DPT_MBus_Address KnxDatapointTypes = "DPT_MBus_Address"
+    KnxDatapointTypes_DPT_Locale_ASCII KnxDatapointTypes = "DPT_Locale_ASCII"
+    KnxDatapointTypes_DPT_Colour_RGB KnxDatapointTypes = "DPT_Colour_RGB"
+    KnxDatapointTypes_DPT_LanguageCodeAlpha2_ASCII KnxDatapointTypes = "DPT_LanguageCodeAlpha2_ASCII"
+    KnxDatapointTypes_DPT_RegionCodeAlpha2_ASCII KnxDatapointTypes = "DPT_RegionCodeAlpha2_ASCII"
+    KnxDatapointTypes_DPT_Tariff_ActiveEnergy KnxDatapointTypes = "DPT_Tariff_ActiveEnergy"
+    KnxDatapointTypes_DPT_Prioritised_Mode_Control KnxDatapointTypes = "DPT_Prioritised_Mode_Control"
+    KnxDatapointTypes_DPT_DALI_Control_Gear_Diagnostic KnxDatapointTypes = "DPT_DALI_Control_Gear_Diagnostic"
+    KnxDatapointTypes_DPT_SceneConfig KnxDatapointTypes = "DPT_SceneConfig"
+    KnxDatapointTypes_DPT_DALI_Diagnostics KnxDatapointTypes = "DPT_DALI_Diagnostics"
+    KnxDatapointTypes_DPT_FlaggedScaling KnxDatapointTypes = "DPT_FlaggedScaling"
+    KnxDatapointTypes_DPT_CombinedPosition KnxDatapointTypes = "DPT_CombinedPosition"
+    KnxDatapointTypes_DPT_StatusSAB KnxDatapointTypes = "DPT_StatusSAB"
+)
+
+
+func (e KnxDatapointTypes) FormatName() string {
+    switch e  {
+        case "DPT_ADAType": { /* 'DPT_ADAType' */
+            return "N8"
+        }
+        case "DPT_Access_Data": { /* 'DPT_Access_Data' */
+            return "U4U4U4U4U4U4B4N4"
+        }
+        case "DPT_Ack": { /* 'DPT_Ack' */
+            return "B1"
+        }
+        case "DPT_ActPosDemAbs": { /* 'DPT_ActPosDemAbs' */
+            return "U8B8ActuatorPositionDemand"
+        }
+        case "DPT_ActiveEnergy": { /* 'DPT_ActiveEnergy' */
+            return "V32"
+        }
+        case "DPT_ActiveEnergy_V64": { /* 'DPT_ActiveEnergy_V64' */
+            return "V64"
+        }
+        case "DPT_ActiveEnergy_kWh": { /* 'DPT_ActiveEnergy_kWh' */
+            return "V32"
+        }
+        case "DPT_ActuatorConnectType": { /* 'DPT_ActuatorConnectType' */
+            return "N8"
+        }
+        case "DPT_AddInfoTypes": { /* 'DPT_AddInfoTypes' */
+            return "N8"
+        }
+        case "DPT_Alarm": { /* 'DPT_Alarm' */
+            return "B1"
+        }
+        case "DPT_AlarmClassType": { /* 'DPT_AlarmClassType' */
+            return "N8"
+        }
+        case "DPT_AlarmInfo": { /* 'DPT_AlarmInfo' */
+            return "U8N8N8N8B8B8"
+        }
+        case "DPT_Alarm_Control": { /* 'DPT_Alarm_Control' */
+            return "B2"
+        }
+        case "DPT_Alarm_Reaction": { /* 'DPT_Alarm_Reaction' */
+            return "N2"
+        }
+        case "DPT_Angle": { /* 'DPT_Angle' */
+            return "U8"
+        }
+        case "DPT_ApparantEnergy": { /* 'DPT_ApparantEnergy' */
+            return "V32"
+        }
+        case "DPT_ApparantEnergy_V64": { /* 'DPT_ApparantEnergy_V64' */
+            return "V64"
+        }
+        case "DPT_ApparantEnergy_kVAh": { /* 'DPT_ApparantEnergy_kVAh' */
+            return "V32"
+        }
+        case "DPT_ApplicationArea": { /* 'DPT_ApplicationArea' */
+            return "N8"
+        }
+        case "DPT_AtmPressureAbs_Z": { /* 'DPT_AtmPressureAbs_Z' */
+            return "U16Z8AtmPressure"
+        }
+        case "DPT_BackupMode": { /* 'DPT_BackupMode' */
+            return "N8"
+        }
+        case "DPT_Beaufort_Wind_Force_Scale": { /* 'DPT_Beaufort_Wind_Force_Scale' */
+            return "N8"
+        }
+        case "DPT_Behaviour_Bus_Power_Up_Down": { /* 'DPT_Behaviour_Bus_Power_Up_Down' */
+            return "N8"
+        }
+        case "DPT_Behaviour_Lock_Unlock": { /* 'DPT_Behaviour_Lock_Unlock' */
+            return "N8"
+        }
+        case "DPT_BinaryValue": { /* 'DPT_BinaryValue' */
+            return "B1"
+        }
+        case "DPT_BinaryValue_Control": { /* 'DPT_BinaryValue_Control' */
+            return "B2"
+        }
+        case "DPT_BinaryValue_Z": { /* 'DPT_BinaryValue_Z' */
+            return "B1Z8BinaryValueZ"
+        }
+        case "DPT_BlindsControlMode": { /* 'DPT_BlindsControlMode' */
+            return "N8"
+        }
+        case "DPT_BlinkingMode": { /* 'DPT_BlinkingMode' */
+            return "N8"
+        }
+        case "DPT_Bool": { /* 'DPT_Bool' */
+            return "B1"
+        }
+        case "DPT_Bool_Control": { /* 'DPT_Bool_Control' */
+            return "B2"
+        }
+        case "DPT_Brightness": { /* 'DPT_Brightness' */
+            return "U16"
+        }
+        case "DPT_BuildingMode": { /* 'DPT_BuildingMode' */
+            return "N8"
+        }
+        case "DPT_BuildingModeNext": { /* 'DPT_BuildingModeNext' */
+            return "U16N8BuildingModeAndTimeDelay"
+        }
+        case "DPT_BuildingMode_Z": { /* 'DPT_BuildingMode_Z' */
+            return "N8Z8BuildingMode"
+        }
+        case "DPT_BurnerType": { /* 'DPT_BurnerType' */
+            return "N8"
+        }
+        case "DPT_ChangeoverMode": { /* 'DPT_ChangeoverMode' */
+            return "N8"
+        }
+        case "DPT_Channel_Activation_16": { /* 'DPT_Channel_Activation_16' */
+            return "B16"
+        }
+        case "DPT_Channel_Activation_24": { /* 'DPT_Channel_Activation_24' */
+            return "B24"
+        }
+        case "DPT_Channel_Activation_8": { /* 'DPT_Channel_Activation_8' */
+            return "B8"
+        }
+        case "DPT_Char_8859_1": { /* 'DPT_Char_8859_1' */
+            return "A8_8859_1"
+        }
+        case "DPT_Char_ASCII": { /* 'DPT_Char_ASCII' */
+            return "A8_ASCII"
+        }
+        case "DPT_Colour_RGB": { /* 'DPT_Colour_RGB' */
+            return "U8U8U8"
+        }
+        case "DPT_CombinedInfoOnOff": { /* 'DPT_CombinedInfoOnOff' */
+            return "B32"
+        }
+        case "DPT_CombinedPosition": { /* 'DPT_CombinedPosition' */
+            return "U8U8B8"
+        }
+        case "DPT_CommMode": { /* 'DPT_CommMode' */
+            return "N8"
+        }
+        case "DPT_Control_Blinds": { /* 'DPT_Control_Blinds' */
+            return "B1U3"
+        }
+        case "DPT_Control_Dimming": { /* 'DPT_Control_Dimming' */
+            return "B1U3"
+        }
+        case "DPT_DALI_Control_Gear_Diagnostic": { /* 'DPT_DALI_Control_Gear_Diagnostic' */
+            return "B10U6"
+        }
+        case "DPT_DALI_Diagnostics": { /* 'DPT_DALI_Diagnostics' */
+            return "B2U6"
+        }
+        case "DPT_DALI_Fade_Time": { /* 'DPT_DALI_Fade_Time' */
+            return "N8"
+        }
+        case "DPT_DHWMode": { /* 'DPT_DHWMode' */
+            return "N8"
+        }
+        case "DPT_DHWModeNext": { /* 'DPT_DHWModeNext' */
+            return "U16N8DhwModeAndTimeDelay"
+        }
+        case "DPT_DHWMode_Z": { /* 'DPT_DHWMode_Z' */
+            return "N8Z8DhwMode"
+        }
+        case "DPT_DamperMode": { /* 'DPT_DamperMode' */
+            return "N8"
+        }
+        case "DPT_Date": { /* 'DPT_Date' */
+            return "r3N5r4N4r1U7"
+        }
+        case "DPT_DateTime": { /* 'DPT_DateTime' */
+            return "U8r4U4r3U5U3U5r2U6r2U6B16"
+        }
+        case "DPT_DecimalFactor": { /* 'DPT_DecimalFactor' */
+            return "U8"
+        }
+        case "DPT_DeltaTime100MSec": { /* 'DPT_DeltaTime100MSec' */
+            return "V16"
+        }
+        case "DPT_DeltaTime100Msec_Z": { /* 'DPT_DeltaTime100Msec_Z' */
+            return "V16Z8DeltaTime"
+        }
+        case "DPT_DeltaTime10MSec": { /* 'DPT_DeltaTime10MSec' */
+            return "V16"
+        }
+        case "DPT_DeltaTime10Msec_Z": { /* 'DPT_DeltaTime10Msec_Z' */
+            return "V16Z8DeltaTime"
+        }
+        case "DPT_DeltaTimeHrs": { /* 'DPT_DeltaTimeHrs' */
+            return "V16"
+        }
+        case "DPT_DeltaTimeHrs_Z": { /* 'DPT_DeltaTimeHrs_Z' */
+            return "V16Z8DeltaTime"
+        }
+        case "DPT_DeltaTimeMin": { /* 'DPT_DeltaTimeMin' */
+            return "V16"
+        }
+        case "DPT_DeltaTimeMin_Z": { /* 'DPT_DeltaTimeMin_Z' */
+            return "V16Z8DeltaTime"
+        }
+        case "DPT_DeltaTimeMsec": { /* 'DPT_DeltaTimeMsec' */
+            return "V16"
+        }
+        case "DPT_DeltaTimeMsec_Z": { /* 'DPT_DeltaTimeMsec_Z' */
+            return "V16Z8DeltaTime"
+        }
+        case "DPT_DeltaTimeSec": { /* 'DPT_DeltaTimeSec' */
+            return "V16"
+        }
+        case "DPT_DeltaTimeSec_Z": { /* 'DPT_DeltaTimeSec_Z' */
+            return "V16Z8DeltaTime"
+        }
+        case "DPT_Device_Control": { /* 'DPT_Device_Control' */
+            return "B8"
+        }
+        case "DPT_DimSendStyle": { /* 'DPT_DimSendStyle' */
+            return "B1"
+        }
+        case "DPT_DimmPBModel": { /* 'DPT_DimmPBModel' */
+            return "N8"
+        }
+        case "DPT_Direction1_Control": { /* 'DPT_Direction1_Control' */
+            return "B2"
+        }
+        case "DPT_Direction2_Control": { /* 'DPT_Direction2_Control' */
+            return "B2"
+        }
+        case "DPT_DoubleNibble": { /* 'DPT_DoubleNibble' */
+            return "U4U4"
+        }
+        case "DPT_EnablH_Cstage_Z_DPT_EnablH_CStage": { /* 'DPT_EnablH_Cstage_Z_DPT_EnablH_CStage' */
+            return "N8Z8EnableHeatingOrCoolingStage"
+        }
+        case "DPT_Enable": { /* 'DPT_Enable' */
+            return "B1"
+        }
+        case "DPT_Enable_Control": { /* 'DPT_Enable_Control' */
+            return "B2"
+        }
+        case "DPT_EnergyDemAir": { /* 'DPT_EnergyDemAir' */
+            return "V8N8N8"
+        }
+        case "DPT_EnergyDemWater": { /* 'DPT_EnergyDemWater' */
+            return "U8N8"
+        }
+        case "DPT_ErrorClass_HVAC": { /* 'DPT_ErrorClass_HVAC' */
+            return "N8"
+        }
+        case "DPT_ErrorClass_System": { /* 'DPT_ErrorClass_System' */
+            return "N8"
+        }
+        case "DPT_FanMode": { /* 'DPT_FanMode' */
+            return "N8"
+        }
+        case "DPT_FlaggedScaling": { /* 'DPT_FlaggedScaling' */
+            return "U8r7B1"
+        }
+        case "DPT_FlowRate_m3h": { /* 'DPT_FlowRate_m3h' */
+            return "V32"
+        }
+        case "DPT_FlowRate_m3h_Z": { /* 'DPT_FlowRate_m3h_Z' */
+            return "V32Z8FlowRate"
+        }
+        case "DPT_ForceSign": { /* 'DPT_ForceSign' */
+            return "B8"
+        }
+        case "DPT_ForceSignCool": { /* 'DPT_ForceSignCool' */
+            return "B8"
+        }
+        case "DPT_FuelType": { /* 'DPT_FuelType' */
+            return "N8"
+        }
+        case "DPT_FuelTypeSet": { /* 'DPT_FuelTypeSet' */
+            return "B8"
+        }
+        case "DPT_HVACAirFlowAbs_Z": { /* 'DPT_HVACAirFlowAbs_Z' */
+            return "U16Z8HvacAirFlow"
+        }
+        case "DPT_HVACAirFlowRel_Z": { /* 'DPT_HVACAirFlowRel_Z' */
+            return "V16Z8RelSignedValue"
+        }
+        case "DPT_HVACAirQual_Z": { /* 'DPT_HVACAirQual_Z' */
+            return "U16Z8HvacAirQuality"
+        }
+        case "DPT_HVACContrMode": { /* 'DPT_HVACContrMode' */
+            return "N8"
+        }
+        case "DPT_HVACContrMode_Z": { /* 'DPT_HVACContrMode_Z' */
+            return "N8Z8HvacControllingMode"
+        }
+        case "DPT_HVACEmergMode": { /* 'DPT_HVACEmergMode' */
+            return "N8"
+        }
+        case "DPT_HVACEmergMode_Z": { /* 'DPT_HVACEmergMode_Z' */
+            return "N8Z8EmergencyMode"
+        }
+        case "DPT_HVACMode": { /* 'DPT_HVACMode' */
+            return "N8"
+        }
+        case "DPT_HVACModeNext": { /* 'DPT_HVACModeNext' */
+            return "U16N8HvacModeAndTimeDelay"
+        }
+        case "DPT_HVACMode_Z": { /* 'DPT_HVACMode_Z' */
+            return "N8Z8HvacOperatingMode"
+        }
+        case "DPT_HVAC_PB_Action": { /* 'DPT_HVAC_PB_Action' */
+            return "N2"
+        }
+        case "DPT_Heat_Cool": { /* 'DPT_Heat_Cool' */
+            return "B1"
+        }
+        case "DPT_Heat_Cool_Z": { /* 'DPT_Heat_Cool_Z' */
+            return "B1Z8HeatingOrCoolingZ"
+        }
+        case "DPT_HeaterMode": { /* 'DPT_HeaterMode' */
+            return "N8"
+        }
+        case "DPT_InputSource": { /* 'DPT_InputSource' */
+            return "B1"
+        }
+        case "DPT_Invert": { /* 'DPT_Invert' */
+            return "B1"
+        }
+        case "DPT_Invert_Control": { /* 'DPT_Invert_Control' */
+            return "B2"
+        }
+        case "DPT_KelvinPerPercent": { /* 'DPT_KelvinPerPercent' */
+            return "F16"
+        }
+        case "DPT_LanguageCodeAlpha2_ASCII": { /* 'DPT_LanguageCodeAlpha2_ASCII' */
+            return "A8A8Language"
+        }
+        case "DPT_Length_mm": { /* 'DPT_Length_mm' */
+            return "U16"
+        }
+        case "DPT_LightActuatorErrorInfo": { /* 'DPT_LightActuatorErrorInfo' */
+            return "B8"
+        }
+        case "DPT_LightApplicationMode": { /* 'DPT_LightApplicationMode' */
+            return "N8"
+        }
+        case "DPT_LightControlMode": { /* 'DPT_LightControlMode' */
+            return "N8"
+        }
+        case "DPT_LoadPriority": { /* 'DPT_LoadPriority' */
+            return "N8"
+        }
+        case "DPT_LoadTypeDetected": { /* 'DPT_LoadTypeDetected' */
+            return "N8"
+        }
+        case "DPT_LoadTypeSet": { /* 'DPT_LoadTypeSet' */
+            return "N8"
+        }
+        case "DPT_Locale_ASCII": { /* 'DPT_Locale_ASCII' */
+            return "A8A8A8A8"
+        }
+        case "DPT_LockSign": { /* 'DPT_LockSign' */
+            return "U8B8LockingSignal"
+        }
+        case "DPT_LogicalFunction": { /* 'DPT_LogicalFunction' */
+            return "B1"
+        }
+        case "DPT_LongDeltaTimeSec": { /* 'DPT_LongDeltaTimeSec' */
+            return "V32"
+        }
+        case "DPT_MBus_Address": { /* 'DPT_MBus_Address' */
+            return "U16U32U8N8"
+        }
+        case "DPT_MasterSlaveMode": { /* 'DPT_MasterSlaveMode' */
+            return "N8"
+        }
+        case "DPT_Media": { /* 'DPT_Media' */
+            return "B16"
+        }
+        case "DPT_MeteringValue": { /* 'DPT_MeteringValue' */
+            return "V32N8Z8"
+        }
+        case "DPT_OccMode": { /* 'DPT_OccMode' */
+            return "N8"
+        }
+        case "DPT_OccModeNext": { /* 'DPT_OccModeNext' */
+            return "U16N8OccupancyModeAndTimeDelay"
+        }
+        case "DPT_OccMode_Z": { /* 'DPT_OccMode_Z' */
+            return "N8Z8OccupancyMode"
+        }
+        case "DPT_Occupancy": { /* 'DPT_Occupancy' */
+            return "B1"
+        }
+        case "DPT_OnOff_Action": { /* 'DPT_OnOff_Action' */
+            return "N2"
+        }
+        case "DPT_OpenClose": { /* 'DPT_OpenClose' */
+            return "B1"
+        }
+        case "DPT_PBAction": { /* 'DPT_PBAction' */
+            return "N8"
+        }
+        case "DPT_PB_Action_HVAC_Extended": { /* 'DPT_PB_Action_HVAC_Extended' */
+            return "N3"
+        }
+        case "DPT_PSUMode": { /* 'DPT_PSUMode' */
+            return "N8"
+        }
+        case "DPT_PercentU16_Z": { /* 'DPT_PercentU16_Z' */
+            return "U16Z8PercentValue"
+        }
+        case "DPT_Percent_U8": { /* 'DPT_Percent_U8' */
+            return "U8"
+        }
+        case "DPT_Percent_V16": { /* 'DPT_Percent_V16' */
+            return "V16"
+        }
+        case "DPT_Percent_V16_Z": { /* 'DPT_Percent_V16_Z' */
+            return "V16Z8RelSignedValue"
+        }
+        case "DPT_Percent_V8": { /* 'DPT_Percent_V8' */
+            return "V8"
+        }
+        case "DPT_Power": { /* 'DPT_Power' */
+            return "F16"
+        }
+        case "DPT_PowerDensity": { /* 'DPT_PowerDensity' */
+            return "F16"
+        }
+        case "DPT_PowerFlowWaterDemCPM": { /* 'DPT_PowerFlowWaterDemCPM' */
+            return "V16U8B8ChilledWater"
+        }
+        case "DPT_PowerFlowWaterDemHPM": { /* 'DPT_PowerFlowWaterDemHPM' */
+            return "V16U8B8Heat"
+        }
+        case "DPT_PowerKW_Z": { /* 'DPT_PowerKW_Z' */
+            return "U16Z8Power"
+        }
+        case "DPT_Prioritised_Mode_Control": { /* 'DPT_Prioritised_Mode_Control' */
+            return "B1N3N4"
+        }
+        case "DPT_Priority": { /* 'DPT_Priority' */
+            return "N8"
+        }
+        case "DPT_PropDataType": { /* 'DPT_PropDataType' */
+            return "U16"
+        }
+        case "DPT_RF_FilterInfo": { /* 'DPT_RF_FilterInfo' */
+            return "B8"
+        }
+        case "DPT_RF_FilterSelect": { /* 'DPT_RF_FilterSelect' */
+            return "N8"
+        }
+        case "DPT_RF_ModeInfo": { /* 'DPT_RF_ModeInfo' */
+            return "B8"
+        }
+        case "DPT_RF_ModeSelect": { /* 'DPT_RF_ModeSelect' */
+            return "N8"
+        }
+        case "DPT_Rain_Amount": { /* 'DPT_Rain_Amount' */
+            return "F16"
+        }
+        case "DPT_Ramp": { /* 'DPT_Ramp' */
+            return "B1"
+        }
+        case "DPT_Ramp_Control": { /* 'DPT_Ramp_Control' */
+            return "B2"
+        }
+        case "DPT_ReactiveEnergy": { /* 'DPT_ReactiveEnergy' */
+            return "V32"
+        }
+        case "DPT_ReactiveEnergy_V64": { /* 'DPT_ReactiveEnergy_V64' */
+            return "V64"
+        }
+        case "DPT_ReactiveEnergy_kVARh": { /* 'DPT_ReactiveEnergy_kVARh' */
+            return "V32"
+        }
+        case "DPT_RegionCodeAlpha2_ASCII": { /* 'DPT_RegionCodeAlpha2_ASCII' */
+            return "A8A8Region"
+        }
+        case "DPT_RelSignedValue_Z": { /* 'DPT_RelSignedValue_Z' */
+            return "V8Z8RelSignedValue"
+        }
+        case "DPT_RelValue_Z": { /* 'DPT_RelValue_Z' */
+            return "U8Z8Rel"
+        }
+        case "DPT_Reset": { /* 'DPT_Reset' */
+            return "B1"
+        }
+        case "DPT_Rotation_Angle": { /* 'DPT_Rotation_Angle' */
+            return "V16"
+        }
+        case "DPT_SABBehaviour_Lock_Unlock": { /* 'DPT_SABBehaviour_Lock_Unlock' */
+            return "N8"
+        }
+        case "DPT_SABExceptBehaviour": { /* 'DPT_SABExceptBehaviour' */
+            return "N8"
+        }
+        case "DPT_SCLOMode": { /* 'DPT_SCLOMode' */
+            return "N8"
+        }
+        case "DPT_SSSBMode": { /* 'DPT_SSSBMode' */
+            return "N8"
+        }
+        case "DPT_Scaling": { /* 'DPT_Scaling' */
+            return "U8"
+        }
+        case "DPT_ScalingSpeed": { /* 'DPT_ScalingSpeed' */
+            return "U16U8Scaling"
+        }
+        case "DPT_Scaling_Step_Time": { /* 'DPT_Scaling_Step_Time' */
+            return "U16U8Scaling"
+        }
+        case "DPT_SceneConfig": { /* 'DPT_SceneConfig' */
+            return "B2U6"
+        }
+        case "DPT_SceneControl": { /* 'DPT_SceneControl' */
+            return "B1r1U6"
+        }
+        case "DPT_SceneInfo": { /* 'DPT_SceneInfo' */
+            return "r1b1U6"
+        }
+        case "DPT_SceneNumber": { /* 'DPT_SceneNumber' */
+            return "r2U6"
+        }
+        case "DPT_Scene_AB": { /* 'DPT_Scene_AB' */
+            return "B1"
+        }
+        case "DPT_SensorSelect": { /* 'DPT_SensorSelect' */
+            return "N8"
+        }
+        case "DPT_SerNum": { /* 'DPT_SerNum' */
+            return "N16U32"
+        }
+        case "DPT_ShutterBlinds_Mode": { /* 'DPT_ShutterBlinds_Mode' */
+            return "B1"
+        }
+        case "DPT_SpecHeatProd": { /* 'DPT_SpecHeatProd' */
+            return "U16U8N8B8"
+        }
+        case "DPT_Start": { /* 'DPT_Start' */
+            return "B1"
+        }
+        case "DPT_StartSynchronization": { /* 'DPT_StartSynchronization' */
+            return "N8"
+        }
+        case "DPT_Start_Control": { /* 'DPT_Start_Control' */
+            return "B2"
+        }
+        case "DPT_State": { /* 'DPT_State' */
+            return "B1"
+        }
+        case "DPT_State_Control": { /* 'DPT_State_Control' */
+            return "B2"
+        }
+        case "DPT_StatusAHU": { /* 'DPT_StatusAHU' */
+            return "B8"
+        }
+        case "DPT_StatusAct": { /* 'DPT_StatusAct' */
+            return "U8B8ActuatorPositionStatus"
+        }
+        case "DPT_StatusBOC": { /* 'DPT_StatusBOC' */
+            return "V16U8B16Boiler"
+        }
+        case "DPT_StatusBUC": { /* 'DPT_StatusBUC' */
+            return "U8B8StatusBurnerController"
+        }
+        case "DPT_StatusCC": { /* 'DPT_StatusCC' */
+            return "V16U8B16Chiller"
+        }
+        case "DPT_StatusCPM": { /* 'DPT_StatusCPM' */
+            return "V16B8ColdWaterProducerManagerStatus"
+        }
+        case "DPT_StatusDHWC": { /* 'DPT_StatusDHWC' */
+            return "B16"
+        }
+        case "DPT_StatusGen": { /* 'DPT_StatusGen' */
+            return "B8"
+        }
+        case "DPT_StatusHPM": { /* 'DPT_StatusHPM' */
+            return "V16B8HeatProducerManagerStatus"
+        }
+        case "DPT_StatusLightingActuator": { /* 'DPT_StatusLightingActuator' */
+            return "U8B8StatusLightingActuator"
+        }
+        case "DPT_StatusRCC": { /* 'DPT_StatusRCC' */
+            return "B8"
+        }
+        case "DPT_StatusRHC": { /* 'DPT_StatusRHC' */
+            return "B8"
+        }
+        case "DPT_StatusRHCC": { /* 'DPT_StatusRHCC' */
+            return "B16"
+        }
+        case "DPT_StatusRoomSetp": { /* 'DPT_StatusRoomSetp' */
+            return "N8"
+        }
+        case "DPT_StatusSAB": { /* 'DPT_StatusSAB' */
+            return "U8U8B16"
+        }
+        case "DPT_StatusSDHWC": { /* 'DPT_StatusSDHWC' */
+            return "B8"
+        }
+        case "DPT_StatusWTC": { /* 'DPT_StatusWTC' */
+            return "V16B8WaterTemperatureControllerStatus"
+        }
+        case "DPT_Status_Mode3": { /* 'DPT_Status_Mode3' */
+            return "B5N3"
+        }
+        case "DPT_Step": { /* 'DPT_Step' */
+            return "B1"
+        }
+        case "DPT_Step_Control": { /* 'DPT_Step_Control' */
+            return "B2"
+        }
+        case "DPT_String_8859_1": { /* 'DPT_String_8859_1' */
+            return "A112_8859_1"
+        }
+        case "DPT_String_ASCII": { /* 'DPT_String_ASCII' */
+            return "A112_ASCII"
+        }
+        case "DPT_SunIntensity_Z": { /* 'DPT_SunIntensity_Z' */
+            return "U16Z8SunIntensity"
+        }
+        case "DPT_Switch": { /* 'DPT_Switch' */
+            return "B1"
+        }
+        case "DPT_SwitchOnMode": { /* 'DPT_SwitchOnMode' */
+            return "N8"
+        }
+        case "DPT_SwitchPBModel": { /* 'DPT_SwitchPBModel' */
+            return "N8"
+        }
+        case "DPT_Switch_Control": { /* 'DPT_Switch_Control' */
+            return "B2"
+        }
+        case "DPT_Tariff": { /* 'DPT_Tariff' */
+            return "U8"
+        }
+        case "DPT_TariffNext": { /* 'DPT_TariffNext' */
+            return "U16U8TariffNext"
+        }
+        case "DPT_Tariff_ActiveEnergy": { /* 'DPT_Tariff_ActiveEnergy' */
+            return "V32U8B8"
+        }
+        case "DPT_TempDHWSetpSet4": { /* 'DPT_TempDHWSetpSet4' */
+            return "V16V16V16V16DhwtTemperature"
+        }
+        case "DPT_TempFlowWaterDemAbs": { /* 'DPT_TempFlowWaterDemAbs' */
+            return "V16B16"
+        }
+        case "DPT_TempHVACAbsNext": { /* 'DPT_TempHVACAbsNext' */
+            return "U16V16"
+        }
+        case "DPT_TempHVACAbs_Z": { /* 'DPT_TempHVACAbs_Z' */
+            return "V16Z8RelSignedValue"
+        }
+        case "DPT_TempHVACRel_Z": { /* 'DPT_TempHVACRel_Z' */
+            return "V16Z8RelSignedValue"
+        }
+        case "DPT_TempRoomDemAbs": { /* 'DPT_TempRoomDemAbs' */
+            return "V16B8RoomTemperatureDemand"
+        }
+        case "DPT_TempRoomSetpSet3": { /* 'DPT_TempRoomSetpSet3' */
+            return "V16V16V16RoomTemperature"
+        }
+        case "DPT_TempRoomSetpSet4": { /* 'DPT_TempRoomSetpSet4' */
+            return "V16V16V16V16RoomTemperature"
+        }
+        case "DPT_TempRoomSetpSetF163": { /* 'DPT_TempRoomSetpSetF163' */
+            return "F16F16F16"
+        }
+        case "DPT_TempRoomSetpSetShift3": { /* 'DPT_TempRoomSetpSetShift3' */
+            return "V16V16V16RoomTemperatureShift"
+        }
+        case "DPT_TempRoomSetpSetShift4": { /* 'DPT_TempRoomSetpSetShift4' */
+            return "V16V16V16V16RoomTemperatureShift"
+        }
+        case "DPT_TempRoomSetpSetShiftF163": { /* 'DPT_TempRoomSetpSetShiftF163' */
+            return "F16F16F16"
+        }
+        case "DPT_TempSupply_AirSetpSet": { /* 'DPT_TempSupply_AirSetpSet' */
+            return "V16V16N8N8"
+        }
+        case "DPT_TimeOfDay": { /* 'DPT_TimeOfDay' */
+            return "N3N5r2N6r2N6"
+        }
+        case "DPT_TimePeriod100MSec": { /* 'DPT_TimePeriod100MSec' */
+            return "U16"
+        }
+        case "DPT_TimePeriod100Msec_Z": { /* 'DPT_TimePeriod100Msec_Z' */
+            return "U16Z8TimePeriod"
+        }
+        case "DPT_TimePeriod10MSec": { /* 'DPT_TimePeriod10MSec' */
+            return "U16"
+        }
+        case "DPT_TimePeriod10Msec_Z": { /* 'DPT_TimePeriod10Msec_Z' */
+            return "U16Z8TimePeriod"
+        }
+        case "DPT_TimePeriodHrs": { /* 'DPT_TimePeriodHrs' */
+            return "U16"
+        }
+        case "DPT_TimePeriodHrs_Z": { /* 'DPT_TimePeriodHrs_Z' */
+            return "U16Z8TimePeriod"
+        }
+        case "DPT_TimePeriodMin": { /* 'DPT_TimePeriodMin' */
+            return "U16"
+        }
+        case "DPT_TimePeriodMin_Z": { /* 'DPT_TimePeriodMin_Z' */
+            return "U16Z8TimePeriod"
+        }
+        case "DPT_TimePeriodMsec": { /* 'DPT_TimePeriodMsec' */
+            return "U16"
+        }
+        case "DPT_TimePeriodMsec_Z": { /* 'DPT_TimePeriodMsec_Z' */
+            return "U16Z8TimePeriod"
+        }
+        case "DPT_TimePeriodSec": { /* 'DPT_TimePeriodSec' */
+            return "U16"
+        }
+        case "DPT_TimePeriodSec_Z": { /* 'DPT_TimePeriodSec_Z' */
+            return "U16Z8TimePeriod"
+        }
+        case "DPT_Time_Delay": { /* 'DPT_Time_Delay' */
+            return "N8"
+        }
+        case "DPT_Trigger": { /* 'DPT_Trigger' */
+            return "B1"
+        }
+        case "DPT_UCountValue16_Z": { /* 'DPT_UCountValue16_Z' */
+            return "U16Z8Counter"
+        }
+        case "DPT_UCountValue8_Z": { /* 'DPT_UCountValue8_Z' */
+            return "U8Z8Counter"
+        }
+        case "DPT_UElCurrentmA": { /* 'DPT_UElCurrentmA' */
+            return "U16"
+        }
+        case "DPT_UElCurrentyA_Z": { /* 'DPT_UElCurrentyA_Z' */
+            return "U16Z8ElectricCurrent"
+        }
+        case "DPT_UFlowRateLiter_h_Z": { /* 'DPT_UFlowRateLiter_h_Z' */
+            return "U16Z8FlowRate"
+        }
+        case "DPT_UTF_8": { /* 'DPT_UTF_8' */
+            return "An_UTF_8"
+        }
+        case "DPT_UpDown": { /* 'DPT_UpDown' */
+            return "B1"
+        }
+        case "DPT_UpDown_Action": { /* 'DPT_UpDown_Action' */
+            return "N2"
+        }
+        case "DPT_ValueDemBOC": { /* 'DPT_ValueDemBOC' */
+            return "U8B8BoilerControllerDemandSignal"
+        }
+        case "DPT_Value_1_Count": { /* 'DPT_Value_1_Count' */
+            return "V8"
+        }
+        case "DPT_Value_1_Ucount": { /* 'DPT_Value_1_Ucount' */
+            return "U8"
+        }
+        case "DPT_Value_2_Count": { /* 'DPT_Value_2_Count' */
+            return "V16"
+        }
+        case "DPT_Value_2_Ucount": { /* 'DPT_Value_2_Ucount' */
+            return "U16"
+        }
+        case "DPT_Value_4_Count": { /* 'DPT_Value_4_Count' */
+            return "V32"
+        }
+        case "DPT_Value_4_Ucount": { /* 'DPT_Value_4_Ucount' */
+            return "U32"
+        }
+        case "DPT_Value_Absolute_Temperature": { /* 'DPT_Value_Absolute_Temperature' */
+            return "F32"
+        }
+        case "DPT_Value_Acceleration": { /* 'DPT_Value_Acceleration' */
+            return "F32"
+        }
+        case "DPT_Value_Acceleration_Angular": { /* 'DPT_Value_Acceleration_Angular' */
+            return "F32"
+        }
+        case "DPT_Value_Activation_Energy": { /* 'DPT_Value_Activation_Energy' */
+            return "F32"
+        }
+        case "DPT_Value_Activity": { /* 'DPT_Value_Activity' */
+            return "F32"
+        }
+        case "DPT_Value_AirQuality": { /* 'DPT_Value_AirQuality' */
+            return "F16"
+        }
+        case "DPT_Value_Amplitude": { /* 'DPT_Value_Amplitude' */
+            return "F32"
+        }
+        case "DPT_Value_AngleDeg": { /* 'DPT_Value_AngleDeg' */
+            return "F32"
+        }
+        case "DPT_Value_AngleRad": { /* 'DPT_Value_AngleRad' */
+            return "F32"
+        }
+        case "DPT_Value_Angular_Frequency": { /* 'DPT_Value_Angular_Frequency' */
+            return "F32"
+        }
+        case "DPT_Value_Angular_Momentum": { /* 'DPT_Value_Angular_Momentum' */
+            return "F32"
+        }
+        case "DPT_Value_Angular_Velocity": { /* 'DPT_Value_Angular_Velocity' */
+            return "F32"
+        }
+        case "DPT_Value_Area": { /* 'DPT_Value_Area' */
+            return "F32"
+        }
+        case "DPT_Value_Capacitance": { /* 'DPT_Value_Capacitance' */
+            return "F32"
+        }
+        case "DPT_Value_Charge_DensitySurface": { /* 'DPT_Value_Charge_DensitySurface' */
+            return "F32"
+        }
+        case "DPT_Value_Charge_DensityVolume": { /* 'DPT_Value_Charge_DensityVolume' */
+            return "F32"
+        }
+        case "DPT_Value_Common_Temperature": { /* 'DPT_Value_Common_Temperature' */
+            return "F32"
+        }
+        case "DPT_Value_Compressibility": { /* 'DPT_Value_Compressibility' */
+            return "F32"
+        }
+        case "DPT_Value_Conductance": { /* 'DPT_Value_Conductance' */
+            return "F32"
+        }
+        case "DPT_Value_Curr": { /* 'DPT_Value_Curr' */
+            return "F16"
+        }
+        case "DPT_Value_Density": { /* 'DPT_Value_Density' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_Charge": { /* 'DPT_Value_Electric_Charge' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_Current": { /* 'DPT_Value_Electric_Current' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_CurrentDensity": { /* 'DPT_Value_Electric_CurrentDensity' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_DipoleMoment": { /* 'DPT_Value_Electric_DipoleMoment' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_Displacement": { /* 'DPT_Value_Electric_Displacement' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_FieldStrength": { /* 'DPT_Value_Electric_FieldStrength' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_Flux": { /* 'DPT_Value_Electric_Flux' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_FluxDensity": { /* 'DPT_Value_Electric_FluxDensity' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_Polarization": { /* 'DPT_Value_Electric_Polarization' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_Potential": { /* 'DPT_Value_Electric_Potential' */
+            return "F32"
+        }
+        case "DPT_Value_Electric_PotentialDifference": { /* 'DPT_Value_Electric_PotentialDifference' */
+            return "F32"
+        }
+        case "DPT_Value_Electrical_Conductivity": { /* 'DPT_Value_Electrical_Conductivity' */
+            return "F32"
+        }
+        case "DPT_Value_ElectromagneticMoment": { /* 'DPT_Value_ElectromagneticMoment' */
+            return "F32"
+        }
+        case "DPT_Value_Electromotive_Force": { /* 'DPT_Value_Electromotive_Force' */
+            return "F32"
+        }
+        case "DPT_Value_Energy": { /* 'DPT_Value_Energy' */
+            return "F32"
+        }
+        case "DPT_Value_Force": { /* 'DPT_Value_Force' */
+            return "F32"
+        }
+        case "DPT_Value_Frequency": { /* 'DPT_Value_Frequency' */
+            return "F32"
+        }
+        case "DPT_Value_Heat_Capacity": { /* 'DPT_Value_Heat_Capacity' */
+            return "F32"
+        }
+        case "DPT_Value_Heat_FlowRate": { /* 'DPT_Value_Heat_FlowRate' */
+            return "F32"
+        }
+        case "DPT_Value_Heat_Quantity": { /* 'DPT_Value_Heat_Quantity' */
+            return "F32"
+        }
+        case "DPT_Value_Humidity": { /* 'DPT_Value_Humidity' */
+            return "F16"
+        }
+        case "DPT_Value_Impedance": { /* 'DPT_Value_Impedance' */
+            return "F32"
+        }
+        case "DPT_Value_Length": { /* 'DPT_Value_Length' */
+            return "F32"
+        }
+        case "DPT_Value_Light_Quantity": { /* 'DPT_Value_Light_Quantity' */
+            return "F32"
+        }
+        case "DPT_Value_Luminance": { /* 'DPT_Value_Luminance' */
+            return "F32"
+        }
+        case "DPT_Value_Luminous_Flux": { /* 'DPT_Value_Luminous_Flux' */
+            return "F32"
+        }
+        case "DPT_Value_Luminous_Intensity": { /* 'DPT_Value_Luminous_Intensity' */
+            return "F32"
+        }
+        case "DPT_Value_Lux": { /* 'DPT_Value_Lux' */
+            return "F16"
+        }
+        case "DPT_Value_Magnetic_FieldStrength": { /* 'DPT_Value_Magnetic_FieldStrength' */
+            return "F32"
+        }
+        case "DPT_Value_Magnetic_Flux": { /* 'DPT_Value_Magnetic_Flux' */
+            return "F32"
+        }
+        case "DPT_Value_Magnetic_FluxDensity": { /* 'DPT_Value_Magnetic_FluxDensity' */
+            return "F32"
+        }
+        case "DPT_Value_Magnetic_Moment": { /* 'DPT_Value_Magnetic_Moment' */
+            return "F32"
+        }
+        case "DPT_Value_Magnetic_Polarization": { /* 'DPT_Value_Magnetic_Polarization' */
+            return "F32"
+        }
+        case "DPT_Value_Magnetization": { /* 'DPT_Value_Magnetization' */
+            return "F32"
+        }
+        case "DPT_Value_MagnetomotiveForce": { /* 'DPT_Value_MagnetomotiveForce' */
+            return "F32"
+        }
+        case "DPT_Value_Mass": { /* 'DPT_Value_Mass' */
+            return "F32"
+        }
+        case "DPT_Value_MassFlux": { /* 'DPT_Value_MassFlux' */
+            return "F32"
+        }
+        case "DPT_Value_Mol": { /* 'DPT_Value_Mol' */
+            return "F32"
+        }
+        case "DPT_Value_Momentum": { /* 'DPT_Value_Momentum' */
+            return "F32"
+        }
+        case "DPT_Value_Phase_AngleDeg": { /* 'DPT_Value_Phase_AngleDeg' */
+            return "F32"
+        }
+        case "DPT_Value_Phase_AngleRad": { /* 'DPT_Value_Phase_AngleRad' */
+            return "F32"
+        }
+        case "DPT_Value_Power": { /* 'DPT_Value_Power' */
+            return "F32"
+        }
+        case "DPT_Value_Power_Factor": { /* 'DPT_Value_Power_Factor' */
+            return "F32"
+        }
+        case "DPT_Value_Pres": { /* 'DPT_Value_Pres' */
+            return "F16"
+        }
+        case "DPT_Value_Pressure": { /* 'DPT_Value_Pressure' */
+            return "F32"
+        }
+        case "DPT_Value_Reactance": { /* 'DPT_Value_Reactance' */
+            return "F32"
+        }
+        case "DPT_Value_Resistance": { /* 'DPT_Value_Resistance' */
+            return "F32"
+        }
+        case "DPT_Value_Resistivity": { /* 'DPT_Value_Resistivity' */
+            return "F32"
+        }
+        case "DPT_Value_SelfInductance": { /* 'DPT_Value_SelfInductance' */
+            return "F32"
+        }
+        case "DPT_Value_SolidAngle": { /* 'DPT_Value_SolidAngle' */
+            return "F32"
+        }
+        case "DPT_Value_Sound_Intensity": { /* 'DPT_Value_Sound_Intensity' */
+            return "F32"
+        }
+        case "DPT_Value_Speed": { /* 'DPT_Value_Speed' */
+            return "F32"
+        }
+        case "DPT_Value_Stress": { /* 'DPT_Value_Stress' */
+            return "F32"
+        }
+        case "DPT_Value_Surface_Tension": { /* 'DPT_Value_Surface_Tension' */
+            return "F32"
+        }
+        case "DPT_Value_Temp": { /* 'DPT_Value_Temp' */
+            return "F16"
+        }
+        case "DPT_Value_Temp_F": { /* 'DPT_Value_Temp_F' */
+            return "F16"
+        }
+        case "DPT_Value_Tempa": { /* 'DPT_Value_Tempa' */
+            return "F16"
+        }
+        case "DPT_Value_Tempd": { /* 'DPT_Value_Tempd' */
+            return "F16"
+        }
+        case "DPT_Value_TemperatureDifference": { /* 'DPT_Value_TemperatureDifference' */
+            return "F32"
+        }
+        case "DPT_Value_Thermal_Capacity": { /* 'DPT_Value_Thermal_Capacity' */
+            return "F32"
+        }
+        case "DPT_Value_Thermal_Conductivity": { /* 'DPT_Value_Thermal_Conductivity' */
+            return "F32"
+        }
+        case "DPT_Value_ThermoelectricPower": { /* 'DPT_Value_ThermoelectricPower' */
+            return "F32"
+        }
+        case "DPT_Value_Time": { /* 'DPT_Value_Time' */
+            return "F32"
+        }
+        case "DPT_Value_Time1": { /* 'DPT_Value_Time1' */
+            return "F16"
+        }
+        case "DPT_Value_Time2": { /* 'DPT_Value_Time2' */
+            return "F16"
+        }
+        case "DPT_Value_Torque": { /* 'DPT_Value_Torque' */
+            return "F32"
+        }
+        case "DPT_Value_Volt": { /* 'DPT_Value_Volt' */
+            return "F16"
+        }
+        case "DPT_Value_Volume": { /* 'DPT_Value_Volume' */
+            return "F32"
+        }
+        case "DPT_Value_Volume_Flow": { /* 'DPT_Value_Volume_Flow' */
+            return "F16"
+        }
+        case "DPT_Value_Volume_Flux": { /* 'DPT_Value_Volume_Flux' */
+            return "F32"
+        }
+        case "DPT_Value_Weight": { /* 'DPT_Value_Weight' */
+            return "F32"
+        }
+        case "DPT_Value_Work": { /* 'DPT_Value_Work' */
+            return "F32"
+        }
+        case "DPT_Value_Wsp": { /* 'DPT_Value_Wsp' */
+            return "F16"
+        }
+        case "DPT_Value_Wsp_kmh": { /* 'DPT_Value_Wsp_kmh' */
+            return "F16"
+        }
+        case "DPT_ValveMode": { /* 'DPT_ValveMode' */
+            return "N8"
+        }
+        case "DPT_VarString_8859_1": { /* 'DPT_VarString_8859_1' */
+            return "An_8859_1"
+        }
+        case "DPT_Version": { /* 'DPT_Version' */
+            return "U5U5U6"
+        }
+        case "DPT_VolumeLiter_Z": { /* 'DPT_VolumeLiter_Z' */
+            return "V32Z8VolumeLiter"
+        }
+        case "DPT_WindSpeed_Z_DPT_WindSpeed": { /* 'DPT_WindSpeed_Z_DPT_WindSpeed' */
+            return "U16Z8WindSpeed"
+        }
+        case "DPT_Window_Door": { /* 'DPT_Window_Door' */
+            return "B1"
+        }
+        default: {
+            return ""
+        }
+    }
+}
+
+func (e KnxDatapointTypes) MainNumber() uint16 {
+    switch e  {
+        case "DPT_ADAType": { /* 'DPT_ADAType' */
+            return 20
+        }
+        case "DPT_Access_Data": { /* 'DPT_Access_Data' */
+            return 15
+        }
+        case "DPT_Ack": { /* 'DPT_Ack' */
+            return 1
+        }
+        case "DPT_ActPosDemAbs": { /* 'DPT_ActPosDemAbs' */
+            return 207
+        }
+        case "DPT_ActiveEnergy": { /* 'DPT_ActiveEnergy' */
+            return 13
+        }
+        case "DPT_ActiveEnergy_V64": { /* 'DPT_ActiveEnergy_V64' */
+            return 29
+        }
+        case "DPT_ActiveEnergy_kWh": { /* 'DPT_ActiveEnergy_kWh' */
+            return 13
+        }
+        case "DPT_ActuatorConnectType": { /* 'DPT_ActuatorConnectType' */
+            return 20
+        }
+        case "DPT_AddInfoTypes": { /* 'DPT_AddInfoTypes' */
+            return 20
+        }
+        case "DPT_Alarm": { /* 'DPT_Alarm' */
+            return 1
+        }
+        case "DPT_AlarmClassType": { /* 'DPT_AlarmClassType' */
+            return 20
+        }
+        case "DPT_AlarmInfo": { /* 'DPT_AlarmInfo' */
+            return 219
+        }
+        case "DPT_Alarm_Control": { /* 'DPT_Alarm_Control' */
+            return 2
+        }
+        case "DPT_Alarm_Reaction": { /* 'DPT_Alarm_Reaction' */
+            return 23
+        }
+        case "DPT_Angle": { /* 'DPT_Angle' */
+            return 5
+        }
+        case "DPT_ApparantEnergy": { /* 'DPT_ApparantEnergy' */
+            return 13
+        }
+        case "DPT_ApparantEnergy_V64": { /* 'DPT_ApparantEnergy_V64' */
+            return 29
+        }
+        case "DPT_ApparantEnergy_kVAh": { /* 'DPT_ApparantEnergy_kVAh' */
+            return 13
+        }
+        case "DPT_ApplicationArea": { /* 'DPT_ApplicationArea' */
+            return 20
+        }
+        case "DPT_AtmPressureAbs_Z": { /* 'DPT_AtmPressureAbs_Z' */
+            return 203
+        }
+        case "DPT_BackupMode": { /* 'DPT_BackupMode' */
+            return 20
+        }
+        case "DPT_Beaufort_Wind_Force_Scale": { /* 'DPT_Beaufort_Wind_Force_Scale' */
+            return 20
+        }
+        case "DPT_Behaviour_Bus_Power_Up_Down": { /* 'DPT_Behaviour_Bus_Power_Up_Down' */
+            return 20
+        }
+        case "DPT_Behaviour_Lock_Unlock": { /* 'DPT_Behaviour_Lock_Unlock' */
+            return 20
+        }
+        case "DPT_BinaryValue": { /* 'DPT_BinaryValue' */
+            return 1
+        }
+        case "DPT_BinaryValue_Control": { /* 'DPT_BinaryValue_Control' */
+            return 2
+        }
+        case "DPT_BinaryValue_Z": { /* 'DPT_BinaryValue_Z' */
+            return 200
+        }
+        case "DPT_BlindsControlMode": { /* 'DPT_BlindsControlMode' */
+            return 20
+        }
+        case "DPT_BlinkingMode": { /* 'DPT_BlinkingMode' */
+            return 20
+        }
+        case "DPT_Bool": { /* 'DPT_Bool' */
+            return 1
+        }
+        case "DPT_Bool_Control": { /* 'DPT_Bool_Control' */
+            return 2
+        }
+        case "DPT_Brightness": { /* 'DPT_Brightness' */
+            return 7
+        }
+        case "DPT_BuildingMode": { /* 'DPT_BuildingMode' */
+            return 20
+        }
+        case "DPT_BuildingModeNext": { /* 'DPT_BuildingModeNext' */
+            return 206
+        }
+        case "DPT_BuildingMode_Z": { /* 'DPT_BuildingMode_Z' */
+            return 201
+        }
+        case "DPT_BurnerType": { /* 'DPT_BurnerType' */
+            return 20
+        }
+        case "DPT_ChangeoverMode": { /* 'DPT_ChangeoverMode' */
+            return 20
+        }
+        case "DPT_Channel_Activation_16": { /* 'DPT_Channel_Activation_16' */
+            return 22
+        }
+        case "DPT_Channel_Activation_24": { /* 'DPT_Channel_Activation_24' */
+            return 30
+        }
+        case "DPT_Channel_Activation_8": { /* 'DPT_Channel_Activation_8' */
+            return 21
+        }
+        case "DPT_Char_8859_1": { /* 'DPT_Char_8859_1' */
+            return 4
+        }
+        case "DPT_Char_ASCII": { /* 'DPT_Char_ASCII' */
+            return 4
+        }
+        case "DPT_Colour_RGB": { /* 'DPT_Colour_RGB' */
+            return 232
+        }
+        case "DPT_CombinedInfoOnOff": { /* 'DPT_CombinedInfoOnOff' */
+            return 27
+        }
+        case "DPT_CombinedPosition": { /* 'DPT_CombinedPosition' */
+            return 240
+        }
+        case "DPT_CommMode": { /* 'DPT_CommMode' */
+            return 20
+        }
+        case "DPT_Control_Blinds": { /* 'DPT_Control_Blinds' */
+            return 3
+        }
+        case "DPT_Control_Dimming": { /* 'DPT_Control_Dimming' */
+            return 3
+        }
+        case "DPT_DALI_Control_Gear_Diagnostic": { /* 'DPT_DALI_Control_Gear_Diagnostic' */
+            return 237
+        }
+        case "DPT_DALI_Diagnostics": { /* 'DPT_DALI_Diagnostics' */
+            return 238
+        }
+        case "DPT_DALI_Fade_Time": { /* 'DPT_DALI_Fade_Time' */
+            return 20
+        }
+        case "DPT_DHWMode": { /* 'DPT_DHWMode' */
+            return 20
+        }
+        case "DPT_DHWModeNext": { /* 'DPT_DHWModeNext' */
+            return 206
+        }
+        case "DPT_DHWMode_Z": { /* 'DPT_DHWMode_Z' */
+            return 201
+        }
+        case "DPT_DamperMode": { /* 'DPT_DamperMode' */
+            return 20
+        }
+        case "DPT_Date": { /* 'DPT_Date' */
+            return 11
+        }
+        case "DPT_DateTime": { /* 'DPT_DateTime' */
+            return 19
+        }
+        case "DPT_DecimalFactor": { /* 'DPT_DecimalFactor' */
+            return 5
+        }
+        case "DPT_DeltaTime100MSec": { /* 'DPT_DeltaTime100MSec' */
+            return 8
+        }
+        case "DPT_DeltaTime100Msec_Z": { /* 'DPT_DeltaTime100Msec_Z' */
+            return 205
+        }
+        case "DPT_DeltaTime10MSec": { /* 'DPT_DeltaTime10MSec' */
+            return 8
+        }
+        case "DPT_DeltaTime10Msec_Z": { /* 'DPT_DeltaTime10Msec_Z' */
+            return 205
+        }
+        case "DPT_DeltaTimeHrs": { /* 'DPT_DeltaTimeHrs' */
+            return 8
+        }
+        case "DPT_DeltaTimeHrs_Z": { /* 'DPT_DeltaTimeHrs_Z' */
+            return 205
+        }
+        case "DPT_DeltaTimeMin": { /* 'DPT_DeltaTimeMin' */
+            return 8
+        }
+        case "DPT_DeltaTimeMin_Z": { /* 'DPT_DeltaTimeMin_Z' */
+            return 205
+        }
+        case "DPT_DeltaTimeMsec": { /* 'DPT_DeltaTimeMsec' */
+            return 8
+        }
+        case "DPT_DeltaTimeMsec_Z": { /* 'DPT_DeltaTimeMsec_Z' */
+            return 205
+        }
+        case "DPT_DeltaTimeSec": { /* 'DPT_DeltaTimeSec' */
+            return 8
+        }
+        case "DPT_DeltaTimeSec_Z": { /* 'DPT_DeltaTimeSec_Z' */
+            return 205
+        }
+        case "DPT_Device_Control": { /* 'DPT_Device_Control' */
+            return 21
+        }
+        case "DPT_DimSendStyle": { /* 'DPT_DimSendStyle' */
+            return 1
+        }
+        case "DPT_DimmPBModel": { /* 'DPT_DimmPBModel' */
+            return 20
+        }
+        case "DPT_Direction1_Control": { /* 'DPT_Direction1_Control' */
+            return 2
+        }
+        case "DPT_Direction2_Control": { /* 'DPT_Direction2_Control' */
+            return 2
+        }
+        case "DPT_DoubleNibble": { /* 'DPT_DoubleNibble' */
+            return 25
+        }
+        case "DPT_EnablH_Cstage_Z_DPT_EnablH_CStage": { /* 'DPT_EnablH_Cstage_Z_DPT_EnablH_CStage' */
+            return 201
+        }
+        case "DPT_Enable": { /* 'DPT_Enable' */
+            return 1
+        }
+        case "DPT_Enable_Control": { /* 'DPT_Enable_Control' */
+            return 2
+        }
+        case "DPT_EnergyDemAir": { /* 'DPT_EnergyDemAir' */
+            return 223
+        }
+        case "DPT_EnergyDemWater": { /* 'DPT_EnergyDemWater' */
+            return 211
+        }
+        case "DPT_ErrorClass_HVAC": { /* 'DPT_ErrorClass_HVAC' */
+            return 20
+        }
+        case "DPT_ErrorClass_System": { /* 'DPT_ErrorClass_System' */
+            return 20
+        }
+        case "DPT_FanMode": { /* 'DPT_FanMode' */
+            return 20
+        }
+        case "DPT_FlaggedScaling": { /* 'DPT_FlaggedScaling' */
+            return 239
+        }
+        case "DPT_FlowRate_m3h": { /* 'DPT_FlowRate_m3h' */
+            return 13
+        }
+        case "DPT_FlowRate_m3h_Z": { /* 'DPT_FlowRate_m3h_Z' */
+            return 218
+        }
+        case "DPT_ForceSign": { /* 'DPT_ForceSign' */
+            return 21
+        }
+        case "DPT_ForceSignCool": { /* 'DPT_ForceSignCool' */
+            return 21
+        }
+        case "DPT_FuelType": { /* 'DPT_FuelType' */
+            return 20
+        }
+        case "DPT_FuelTypeSet": { /* 'DPT_FuelTypeSet' */
+            return 21
+        }
+        case "DPT_HVACAirFlowAbs_Z": { /* 'DPT_HVACAirFlowAbs_Z' */
+            return 203
+        }
+        case "DPT_HVACAirFlowRel_Z": { /* 'DPT_HVACAirFlowRel_Z' */
+            return 205
+        }
+        case "DPT_HVACAirQual_Z": { /* 'DPT_HVACAirQual_Z' */
+            return 203
+        }
+        case "DPT_HVACContrMode": { /* 'DPT_HVACContrMode' */
+            return 20
+        }
+        case "DPT_HVACContrMode_Z": { /* 'DPT_HVACContrMode_Z' */
+            return 201
+        }
+        case "DPT_HVACEmergMode": { /* 'DPT_HVACEmergMode' */
+            return 20
+        }
+        case "DPT_HVACEmergMode_Z": { /* 'DPT_HVACEmergMode_Z' */
+            return 201
+        }
+        case "DPT_HVACMode": { /* 'DPT_HVACMode' */
+            return 20
+        }
+        case "DPT_HVACModeNext": { /* 'DPT_HVACModeNext' */
+            return 206
+        }
+        case "DPT_HVACMode_Z": { /* 'DPT_HVACMode_Z' */
+            return 201
+        }
+        case "DPT_HVAC_PB_Action": { /* 'DPT_HVAC_PB_Action' */
+            return 23
+        }
+        case "DPT_Heat_Cool": { /* 'DPT_Heat_Cool' */
+            return 1
+        }
+        case "DPT_Heat_Cool_Z": { /* 'DPT_Heat_Cool_Z' */
+            return 200
+        }
+        case "DPT_HeaterMode": { /* 'DPT_HeaterMode' */
+            return 20
+        }
+        case "DPT_InputSource": { /* 'DPT_InputSource' */
+            return 1
+        }
+        case "DPT_Invert": { /* 'DPT_Invert' */
+            return 1
+        }
+        case "DPT_Invert_Control": { /* 'DPT_Invert_Control' */
+            return 2
+        }
+        case "DPT_KelvinPerPercent": { /* 'DPT_KelvinPerPercent' */
+            return 9
+        }
+        case "DPT_LanguageCodeAlpha2_ASCII": { /* 'DPT_LanguageCodeAlpha2_ASCII' */
+            return 234
+        }
+        case "DPT_Length_mm": { /* 'DPT_Length_mm' */
+            return 7
+        }
+        case "DPT_LightActuatorErrorInfo": { /* 'DPT_LightActuatorErrorInfo' */
+            return 21
+        }
+        case "DPT_LightApplicationMode": { /* 'DPT_LightApplicationMode' */
+            return 20
+        }
+        case "DPT_LightControlMode": { /* 'DPT_LightControlMode' */
+            return 20
+        }
+        case "DPT_LoadPriority": { /* 'DPT_LoadPriority' */
+            return 20
+        }
+        case "DPT_LoadTypeDetected": { /* 'DPT_LoadTypeDetected' */
+            return 20
+        }
+        case "DPT_LoadTypeSet": { /* 'DPT_LoadTypeSet' */
+            return 20
+        }
+        case "DPT_Locale_ASCII": { /* 'DPT_Locale_ASCII' */
+            return 231
+        }
+        case "DPT_LockSign": { /* 'DPT_LockSign' */
+            return 207
+        }
+        case "DPT_LogicalFunction": { /* 'DPT_LogicalFunction' */
+            return 1
+        }
+        case "DPT_LongDeltaTimeSec": { /* 'DPT_LongDeltaTimeSec' */
+            return 13
+        }
+        case "DPT_MBus_Address": { /* 'DPT_MBus_Address' */
+            return 230
+        }
+        case "DPT_MasterSlaveMode": { /* 'DPT_MasterSlaveMode' */
+            return 20
+        }
+        case "DPT_Media": { /* 'DPT_Media' */
+            return 22
+        }
+        case "DPT_MeteringValue": { /* 'DPT_MeteringValue' */
+            return 229
+        }
+        case "DPT_OccMode": { /* 'DPT_OccMode' */
+            return 20
+        }
+        case "DPT_OccModeNext": { /* 'DPT_OccModeNext' */
+            return 206
+        }
+        case "DPT_OccMode_Z": { /* 'DPT_OccMode_Z' */
+            return 201
+        }
+        case "DPT_Occupancy": { /* 'DPT_Occupancy' */
+            return 1
+        }
+        case "DPT_OnOff_Action": { /* 'DPT_OnOff_Action' */
+            return 23
+        }
+        case "DPT_OpenClose": { /* 'DPT_OpenClose' */
+            return 1
+        }
+        case "DPT_PBAction": { /* 'DPT_PBAction' */
+            return 20
+        }
+        case "DPT_PB_Action_HVAC_Extended": { /* 'DPT_PB_Action_HVAC_Extended' */
+            return 31
+        }
+        case "DPT_PSUMode": { /* 'DPT_PSUMode' */
+            return 20
+        }
+        case "DPT_PercentU16_Z": { /* 'DPT_PercentU16_Z' */
+            return 203
+        }
+        case "DPT_Percent_U8": { /* 'DPT_Percent_U8' */
+            return 5
+        }
+        case "DPT_Percent_V16": { /* 'DPT_Percent_V16' */
+            return 8
+        }
+        case "DPT_Percent_V16_Z": { /* 'DPT_Percent_V16_Z' */
+            return 205
+        }
+        case "DPT_Percent_V8": { /* 'DPT_Percent_V8' */
+            return 6
+        }
+        case "DPT_Power": { /* 'DPT_Power' */
+            return 9
+        }
+        case "DPT_PowerDensity": { /* 'DPT_PowerDensity' */
+            return 9
+        }
+        case "DPT_PowerFlowWaterDemCPM": { /* 'DPT_PowerFlowWaterDemCPM' */
+            return 214
+        }
+        case "DPT_PowerFlowWaterDemHPM": { /* 'DPT_PowerFlowWaterDemHPM' */
+            return 214
+        }
+        case "DPT_PowerKW_Z": { /* 'DPT_PowerKW_Z' */
+            return 203
+        }
+        case "DPT_Prioritised_Mode_Control": { /* 'DPT_Prioritised_Mode_Control' */
+            return 236
+        }
+        case "DPT_Priority": { /* 'DPT_Priority' */
+            return 20
+        }
+        case "DPT_PropDataType": { /* 'DPT_PropDataType' */
+            return 7
+        }
+        case "DPT_RF_FilterInfo": { /* 'DPT_RF_FilterInfo' */
+            return 21
+        }
+        case "DPT_RF_FilterSelect": { /* 'DPT_RF_FilterSelect' */
+            return 20
+        }
+        case "DPT_RF_ModeInfo": { /* 'DPT_RF_ModeInfo' */
+            return 21
+        }
+        case "DPT_RF_ModeSelect": { /* 'DPT_RF_ModeSelect' */
+            return 20
+        }
+        case "DPT_Rain_Amount": { /* 'DPT_Rain_Amount' */
+            return 9
+        }
+        case "DPT_Ramp": { /* 'DPT_Ramp' */
+            return 1
+        }
+        case "DPT_Ramp_Control": { /* 'DPT_Ramp_Control' */
+            return 2
+        }
+        case "DPT_ReactiveEnergy": { /* 'DPT_ReactiveEnergy' */
+            return 13
+        }
+        case "DPT_ReactiveEnergy_V64": { /* 'DPT_ReactiveEnergy_V64' */
+            return 29
+        }
+        case "DPT_ReactiveEnergy_kVARh": { /* 'DPT_ReactiveEnergy_kVARh' */
+            return 13
+        }
+        case "DPT_RegionCodeAlpha2_ASCII": { /* 'DPT_RegionCodeAlpha2_ASCII' */
+            return 234
+        }
+        case "DPT_RelSignedValue_Z": { /* 'DPT_RelSignedValue_Z' */
+            return 204
+        }
+        case "DPT_RelValue_Z": { /* 'DPT_RelValue_Z' */
+            return 202
+        }
+        case "DPT_Reset": { /* 'DPT_Reset' */
+            return 1
+        }
+        case "DPT_Rotation_Angle": { /* 'DPT_Rotation_Angle' */
+            return 8
+        }
+        case "DPT_SABBehaviour_Lock_Unlock": { /* 'DPT_SABBehaviour_Lock_Unlock' */
+            return 20
+        }
+        case "DPT_SABExceptBehaviour": { /* 'DPT_SABExceptBehaviour' */
+            return 20
+        }
+        case "DPT_SCLOMode": { /* 'DPT_SCLOMode' */
+            return 20
+        }
+        case "DPT_SSSBMode": { /* 'DPT_SSSBMode' */
+            return 20
+        }
+        case "DPT_Scaling": { /* 'DPT_Scaling' */
+            return 5
+        }
+        case "DPT_ScalingSpeed": { /* 'DPT_ScalingSpeed' */
+            return 225
+        }
+        case "DPT_Scaling_Step_Time": { /* 'DPT_Scaling_Step_Time' */
+            return 225
+        }
+        case "DPT_SceneConfig": { /* 'DPT_SceneConfig' */
+            return 238
+        }
+        case "DPT_SceneControl": { /* 'DPT_SceneControl' */
+            return 18
+        }
+        case "DPT_SceneInfo": { /* 'DPT_SceneInfo' */
+            return 26
+        }
+        case "DPT_SceneNumber": { /* 'DPT_SceneNumber' */
+            return 17
+        }
+        case "DPT_Scene_AB": { /* 'DPT_Scene_AB' */
+            return 1
+        }
+        case "DPT_SensorSelect": { /* 'DPT_SensorSelect' */
+            return 20
+        }
+        case "DPT_SerNum": { /* 'DPT_SerNum' */
+            return 221
+        }
+        case "DPT_ShutterBlinds_Mode": { /* 'DPT_ShutterBlinds_Mode' */
+            return 1
+        }
+        case "DPT_SpecHeatProd": { /* 'DPT_SpecHeatProd' */
+            return 216
+        }
+        case "DPT_Start": { /* 'DPT_Start' */
+            return 1
+        }
+        case "DPT_StartSynchronization": { /* 'DPT_StartSynchronization' */
+            return 20
+        }
+        case "DPT_Start_Control": { /* 'DPT_Start_Control' */
+            return 2
+        }
+        case "DPT_State": { /* 'DPT_State' */
+            return 1
+        }
+        case "DPT_State_Control": { /* 'DPT_State_Control' */
+            return 2
+        }
+        case "DPT_StatusAHU": { /* 'DPT_StatusAHU' */
+            return 21
+        }
+        case "DPT_StatusAct": { /* 'DPT_StatusAct' */
+            return 207
+        }
+        case "DPT_StatusBOC": { /* 'DPT_StatusBOC' */
+            return 215
+        }
+        case "DPT_StatusBUC": { /* 'DPT_StatusBUC' */
+            return 207
+        }
+        case "DPT_StatusCC": { /* 'DPT_StatusCC' */
+            return 215
+        }
+        case "DPT_StatusCPM": { /* 'DPT_StatusCPM' */
+            return 209
+        }
+        case "DPT_StatusDHWC": { /* 'DPT_StatusDHWC' */
+            return 22
+        }
+        case "DPT_StatusGen": { /* 'DPT_StatusGen' */
+            return 21
+        }
+        case "DPT_StatusHPM": { /* 'DPT_StatusHPM' */
+            return 209
+        }
+        case "DPT_StatusLightingActuator": { /* 'DPT_StatusLightingActuator' */
+            return 207
+        }
+        case "DPT_StatusRCC": { /* 'DPT_StatusRCC' */
+            return 21
+        }
+        case "DPT_StatusRHC": { /* 'DPT_StatusRHC' */
+            return 21
+        }
+        case "DPT_StatusRHCC": { /* 'DPT_StatusRHCC' */
+            return 22
+        }
+        case "DPT_StatusRoomSetp": { /* 'DPT_StatusRoomSetp' */
+            return 20
+        }
+        case "DPT_StatusSAB": { /* 'DPT_StatusSAB' */
+            return 241
+        }
+        case "DPT_StatusSDHWC": { /* 'DPT_StatusSDHWC' */
+            return 21
+        }
+        case "DPT_StatusWTC": { /* 'DPT_StatusWTC' */
+            return 209
+        }
+        case "DPT_Status_Mode3": { /* 'DPT_Status_Mode3' */
+            return 6
+        }
+        case "DPT_Step": { /* 'DPT_Step' */
+            return 1
+        }
+        case "DPT_Step_Control": { /* 'DPT_Step_Control' */
+            return 2
+        }
+        case "DPT_String_8859_1": { /* 'DPT_String_8859_1' */
+            return 16
+        }
+        case "DPT_String_ASCII": { /* 'DPT_String_ASCII' */
+            return 16
+        }
+        case "DPT_SunIntensity_Z": { /* 'DPT_SunIntensity_Z' */
+            return 203
+        }
+        case "DPT_Switch": { /* 'DPT_Switch' */
+            return 1
+        }
+        case "DPT_SwitchOnMode": { /* 'DPT_SwitchOnMode' */
+            return 20
+        }
+        case "DPT_SwitchPBModel": { /* 'DPT_SwitchPBModel' */
+            return 20
+        }
+        case "DPT_Switch_Control": { /* 'DPT_Switch_Control' */
+            return 2
+        }
+        case "DPT_Tariff": { /* 'DPT_Tariff' */
+            return 5
+        }
+        case "DPT_TariffNext": { /* 'DPT_TariffNext' */
+            return 225
+        }
+        case "DPT_Tariff_ActiveEnergy": { /* 'DPT_Tariff_ActiveEnergy' */
+            return 235
+        }
+        case "DPT_TempDHWSetpSet4": { /* 'DPT_TempDHWSetpSet4' */
+            return 213
+        }
+        case "DPT_TempFlowWaterDemAbs": { /* 'DPT_TempFlowWaterDemAbs' */
+            return 210
+        }
+        case "DPT_TempHVACAbsNext": { /* 'DPT_TempHVACAbsNext' */
+            return 220
+        }
+        case "DPT_TempHVACAbs_Z": { /* 'DPT_TempHVACAbs_Z' */
+            return 205
+        }
+        case "DPT_TempHVACRel_Z": { /* 'DPT_TempHVACRel_Z' */
+            return 205
+        }
+        case "DPT_TempRoomDemAbs": { /* 'DPT_TempRoomDemAbs' */
+            return 209
+        }
+        case "DPT_TempRoomSetpSet3": { /* 'DPT_TempRoomSetpSet3' */
+            return 212
+        }
+        case "DPT_TempRoomSetpSet4": { /* 'DPT_TempRoomSetpSet4' */
+            return 213
+        }
+        case "DPT_TempRoomSetpSetF163": { /* 'DPT_TempRoomSetpSetF163' */
+            return 222
+        }
+        case "DPT_TempRoomSetpSetShift3": { /* 'DPT_TempRoomSetpSetShift3' */
+            return 212
+        }
+        case "DPT_TempRoomSetpSetShift4": { /* 'DPT_TempRoomSetpSetShift4' */
+            return 213
+        }
+        case "DPT_TempRoomSetpSetShiftF163": { /* 'DPT_TempRoomSetpSetShiftF163' */
+            return 222
+        }
+        case "DPT_TempSupply_AirSetpSet": { /* 'DPT_TempSupply_AirSetpSet' */
+            return 224
+        }
+        case "DPT_TimeOfDay": { /* 'DPT_TimeOfDay' */
+            return 10
+        }
+        case "DPT_TimePeriod100MSec": { /* 'DPT_TimePeriod100MSec' */
+            return 7
+        }
+        case "DPT_TimePeriod100Msec_Z": { /* 'DPT_TimePeriod100Msec_Z' */
+            return 203
+        }
+        case "DPT_TimePeriod10MSec": { /* 'DPT_TimePeriod10MSec' */
+            return 7
+        }
+        case "DPT_TimePeriod10Msec_Z": { /* 'DPT_TimePeriod10Msec_Z' */
+            return 203
+        }
+        case "DPT_TimePeriodHrs": { /* 'DPT_TimePeriodHrs' */
+            return 7
+        }
+        case "DPT_TimePeriodHrs_Z": { /* 'DPT_TimePeriodHrs_Z' */
+            return 203
+        }
+        case "DPT_TimePeriodMin": { /* 'DPT_TimePeriodMin' */
+            return 7
+        }
+        case "DPT_TimePeriodMin_Z": { /* 'DPT_TimePeriodMin_Z' */
+            return 203
+        }
+        case "DPT_TimePeriodMsec": { /* 'DPT_TimePeriodMsec' */
+            return 7
+        }
+        case "DPT_TimePeriodMsec_Z": { /* 'DPT_TimePeriodMsec_Z' */
+            return 203
+        }
+        case "DPT_TimePeriodSec": { /* 'DPT_TimePeriodSec' */
+            return 7
+        }
+        case "DPT_TimePeriodSec_Z": { /* 'DPT_TimePeriodSec_Z' */
+            return 203
+        }
+        case "DPT_Time_Delay": { /* 'DPT_Time_Delay' */
+            return 20
+        }
+        case "DPT_Trigger": { /* 'DPT_Trigger' */
+            return 1
+        }
+        case "DPT_UCountValue16_Z": { /* 'DPT_UCountValue16_Z' */
+            return 203
+        }
+        case "DPT_UCountValue8_Z": { /* 'DPT_UCountValue8_Z' */
+            return 202
+        }
+        case "DPT_UElCurrentmA": { /* 'DPT_UElCurrentmA' */
+            return 7
+        }
+        case "DPT_UElCurrentyA_Z": { /* 'DPT_UElCurrentyA_Z' */
+            return 203
+        }
+        case "DPT_UFlowRateLiter_h_Z": { /* 'DPT_UFlowRateLiter_h_Z' */
+            return 203
+        }
+        case "DPT_UTF_8": { /* 'DPT_UTF_8' */
+            return 28
+        }
+        case "DPT_UpDown": { /* 'DPT_UpDown' */
+            return 1
+        }
+        case "DPT_UpDown_Action": { /* 'DPT_UpDown_Action' */
+            return 23
+        }
+        case "DPT_ValueDemBOC": { /* 'DPT_ValueDemBOC' */
+            return 207
+        }
+        case "DPT_Value_1_Count": { /* 'DPT_Value_1_Count' */
+            return 6
+        }
+        case "DPT_Value_1_Ucount": { /* 'DPT_Value_1_Ucount' */
+            return 5
+        }
+        case "DPT_Value_2_Count": { /* 'DPT_Value_2_Count' */
+            return 8
+        }
+        case "DPT_Value_2_Ucount": { /* 'DPT_Value_2_Ucount' */
+            return 7
+        }
+        case "DPT_Value_4_Count": { /* 'DPT_Value_4_Count' */
+            return 13
+        }
+        case "DPT_Value_4_Ucount": { /* 'DPT_Value_4_Ucount' */
+            return 12
+        }
+        case "DPT_Value_Absolute_Temperature": { /* 'DPT_Value_Absolute_Temperature' */
+            return 14
+        }
+        case "DPT_Value_Acceleration": { /* 'DPT_Value_Acceleration' */
+            return 14
+        }
+        case "DPT_Value_Acceleration_Angular": { /* 'DPT_Value_Acceleration_Angular' */
+            return 14
+        }
+        case "DPT_Value_Activation_Energy": { /* 'DPT_Value_Activation_Energy' */
+            return 14
+        }
+        case "DPT_Value_Activity": { /* 'DPT_Value_Activity' */
+            return 14
+        }
+        case "DPT_Value_AirQuality": { /* 'DPT_Value_AirQuality' */
+            return 9
+        }
+        case "DPT_Value_Amplitude": { /* 'DPT_Value_Amplitude' */
+            return 14
+        }
+        case "DPT_Value_AngleDeg": { /* 'DPT_Value_AngleDeg' */
+            return 14
+        }
+        case "DPT_Value_AngleRad": { /* 'DPT_Value_AngleRad' */
+            return 14
+        }
+        case "DPT_Value_Angular_Frequency": { /* 'DPT_Value_Angular_Frequency' */
+            return 14
+        }
+        case "DPT_Value_Angular_Momentum": { /* 'DPT_Value_Angular_Momentum' */
+            return 14
+        }
+        case "DPT_Value_Angular_Velocity": { /* 'DPT_Value_Angular_Velocity' */
+            return 14
+        }
+        case "DPT_Value_Area": { /* 'DPT_Value_Area' */
+            return 14
+        }
+        case "DPT_Value_Capacitance": { /* 'DPT_Value_Capacitance' */
+            return 14
+        }
+        case "DPT_Value_Charge_DensitySurface": { /* 'DPT_Value_Charge_DensitySurface' */
+            return 14
+        }
+        case "DPT_Value_Charge_DensityVolume": { /* 'DPT_Value_Charge_DensityVolume' */
+            return 14
+        }
+        case "DPT_Value_Common_Temperature": { /* 'DPT_Value_Common_Temperature' */
+            return 14
+        }
+        case "DPT_Value_Compressibility": { /* 'DPT_Value_Compressibility' */
+            return 14
+        }
+        case "DPT_Value_Conductance": { /* 'DPT_Value_Conductance' */
+            return 14
+        }
+        case "DPT_Value_Curr": { /* 'DPT_Value_Curr' */
+            return 9
+        }
+        case "DPT_Value_Density": { /* 'DPT_Value_Density' */
+            return 14
+        }
+        case "DPT_Value_Electric_Charge": { /* 'DPT_Value_Electric_Charge' */
+            return 14
+        }
+        case "DPT_Value_Electric_Current": { /* 'DPT_Value_Electric_Current' */
+            return 14
+        }
+        case "DPT_Value_Electric_CurrentDensity": { /* 'DPT_Value_Electric_CurrentDensity' */
+            return 14
+        }
+        case "DPT_Value_Electric_DipoleMoment": { /* 'DPT_Value_Electric_DipoleMoment' */
+            return 14
+        }
+        case "DPT_Value_Electric_Displacement": { /* 'DPT_Value_Electric_Displacement' */
+            return 14
+        }
+        case "DPT_Value_Electric_FieldStrength": { /* 'DPT_Value_Electric_FieldStrength' */
+            return 14
+        }
+        case "DPT_Value_Electric_Flux": { /* 'DPT_Value_Electric_Flux' */
+            return 14
+        }
+        case "DPT_Value_Electric_FluxDensity": { /* 'DPT_Value_Electric_FluxDensity' */
+            return 14
+        }
+        case "DPT_Value_Electric_Polarization": { /* 'DPT_Value_Electric_Polarization' */
+            return 14
+        }
+        case "DPT_Value_Electric_Potential": { /* 'DPT_Value_Electric_Potential' */
+            return 14
+        }
+        case "DPT_Value_Electric_PotentialDifference": { /* 'DPT_Value_Electric_PotentialDifference' */
+            return 14
+        }
+        case "DPT_Value_Electrical_Conductivity": { /* 'DPT_Value_Electrical_Conductivity' */
+            return 14
+        }
+        case "DPT_Value_ElectromagneticMoment": { /* 'DPT_Value_ElectromagneticMoment' */
+            return 14
+        }
+        case "DPT_Value_Electromotive_Force": { /* 'DPT_Value_Electromotive_Force' */
+            return 14
+        }
+        case "DPT_Value_Energy": { /* 'DPT_Value_Energy' */
+            return 14
+        }
+        case "DPT_Value_Force": { /* 'DPT_Value_Force' */
+            return 14
+        }
+        case "DPT_Value_Frequency": { /* 'DPT_Value_Frequency' */
+            return 14
+        }
+        case "DPT_Value_Heat_Capacity": { /* 'DPT_Value_Heat_Capacity' */
+            return 14
+        }
+        case "DPT_Value_Heat_FlowRate": { /* 'DPT_Value_Heat_FlowRate' */
+            return 14
+        }
+        case "DPT_Value_Heat_Quantity": { /* 'DPT_Value_Heat_Quantity' */
+            return 14
+        }
+        case "DPT_Value_Humidity": { /* 'DPT_Value_Humidity' */
+            return 9
+        }
+        case "DPT_Value_Impedance": { /* 'DPT_Value_Impedance' */
+            return 14
+        }
+        case "DPT_Value_Length": { /* 'DPT_Value_Length' */
+            return 14
+        }
+        case "DPT_Value_Light_Quantity": { /* 'DPT_Value_Light_Quantity' */
+            return 14
+        }
+        case "DPT_Value_Luminance": { /* 'DPT_Value_Luminance' */
+            return 14
+        }
+        case "DPT_Value_Luminous_Flux": { /* 'DPT_Value_Luminous_Flux' */
+            return 14
+        }
+        case "DPT_Value_Luminous_Intensity": { /* 'DPT_Value_Luminous_Intensity' */
+            return 14
+        }
+        case "DPT_Value_Lux": { /* 'DPT_Value_Lux' */
+            return 9
+        }
+        case "DPT_Value_Magnetic_FieldStrength": { /* 'DPT_Value_Magnetic_FieldStrength' */
+            return 14
+        }
+        case "DPT_Value_Magnetic_Flux": { /* 'DPT_Value_Magnetic_Flux' */
+            return 14
+        }
+        case "DPT_Value_Magnetic_FluxDensity": { /* 'DPT_Value_Magnetic_FluxDensity' */
+            return 14
+        }
+        case "DPT_Value_Magnetic_Moment": { /* 'DPT_Value_Magnetic_Moment' */
+            return 14
+        }
+        case "DPT_Value_Magnetic_Polarization": { /* 'DPT_Value_Magnetic_Polarization' */
+            return 14
+        }
+        case "DPT_Value_Magnetization": { /* 'DPT_Value_Magnetization' */
+            return 14
+        }
+        case "DPT_Value_MagnetomotiveForce": { /* 'DPT_Value_MagnetomotiveForce' */
+            return 14
+        }
+        case "DPT_Value_Mass": { /* 'DPT_Value_Mass' */
+            return 14
+        }
+        case "DPT_Value_MassFlux": { /* 'DPT_Value_MassFlux' */
+            return 14
+        }
+        case "DPT_Value_Mol": { /* 'DPT_Value_Mol' */
+            return 14
+        }
+        case "DPT_Value_Momentum": { /* 'DPT_Value_Momentum' */
+            return 14
+        }
+        case "DPT_Value_Phase_AngleDeg": { /* 'DPT_Value_Phase_AngleDeg' */
+            return 14
+        }
+        case "DPT_Value_Phase_AngleRad": { /* 'DPT_Value_Phase_AngleRad' */
+            return 14
+        }
+        case "DPT_Value_Power": { /* 'DPT_Value_Power' */
+            return 14
+        }
+        case "DPT_Value_Power_Factor": { /* 'DPT_Value_Power_Factor' */
+            return 14
+        }
+        case "DPT_Value_Pres": { /* 'DPT_Value_Pres' */
+            return 9
+        }
+        case "DPT_Value_Pressure": { /* 'DPT_Value_Pressure' */
+            return 14
+        }
+        case "DPT_Value_Reactance": { /* 'DPT_Value_Reactance' */
+            return 14
+        }
+        case "DPT_Value_Resistance": { /* 'DPT_Value_Resistance' */
+            return 14
+        }
+        case "DPT_Value_Resistivity": { /* 'DPT_Value_Resistivity' */
+            return 14
+        }
+        case "DPT_Value_SelfInductance": { /* 'DPT_Value_SelfInductance' */
+            return 14
+        }
+        case "DPT_Value_SolidAngle": { /* 'DPT_Value_SolidAngle' */
+            return 14
+        }
+        case "DPT_Value_Sound_Intensity": { /* 'DPT_Value_Sound_Intensity' */
+            return 14
+        }
+        case "DPT_Value_Speed": { /* 'DPT_Value_Speed' */
+            return 14
+        }
+        case "DPT_Value_Stress": { /* 'DPT_Value_Stress' */
+            return 14
+        }
+        case "DPT_Value_Surface_Tension": { /* 'DPT_Value_Surface_Tension' */
+            return 14
+        }
+        case "DPT_Value_Temp": { /* 'DPT_Value_Temp' */
+            return 9
+        }
+        case "DPT_Value_Temp_F": { /* 'DPT_Value_Temp_F' */
+            return 9
+        }
+        case "DPT_Value_Tempa": { /* 'DPT_Value_Tempa' */
+            return 9
+        }
+        case "DPT_Value_Tempd": { /* 'DPT_Value_Tempd' */
+            return 9
+        }
+        case "DPT_Value_TemperatureDifference": { /* 'DPT_Value_TemperatureDifference' */
+            return 14
+        }
+        case "DPT_Value_Thermal_Capacity": { /* 'DPT_Value_Thermal_Capacity' */
+            return 14
+        }
+        case "DPT_Value_Thermal_Conductivity": { /* 'DPT_Value_Thermal_Conductivity' */
+            return 14
+        }
+        case "DPT_Value_ThermoelectricPower": { /* 'DPT_Value_ThermoelectricPower' */
+            return 14
+        }
+        case "DPT_Value_Time": { /* 'DPT_Value_Time' */
+            return 14
+        }
+        case "DPT_Value_Time1": { /* 'DPT_Value_Time1' */
+            return 9
+        }
+        case "DPT_Value_Time2": { /* 'DPT_Value_Time2' */
+            return 9
+        }
+        case "DPT_Value_Torque": { /* 'DPT_Value_Torque' */
+            return 14
+        }
+        case "DPT_Value_Volt": { /* 'DPT_Value_Volt' */
+            return 9
+        }
+        case "DPT_Value_Volume": { /* 'DPT_Value_Volume' */
+            return 14
+        }
+        case "DPT_Value_Volume_Flow": { /* 'DPT_Value_Volume_Flow' */
+            return 9
+        }
+        case "DPT_Value_Volume_Flux": { /* 'DPT_Value_Volume_Flux' */
+            return 14
+        }
+        case "DPT_Value_Weight": { /* 'DPT_Value_Weight' */
+            return 14
+        }
+        case "DPT_Value_Work": { /* 'DPT_Value_Work' */
+            return 14
+        }
+        case "DPT_Value_Wsp": { /* 'DPT_Value_Wsp' */
+            return 9
+        }
+        case "DPT_Value_Wsp_kmh": { /* 'DPT_Value_Wsp_kmh' */
+            return 9
+        }
+        case "DPT_ValveMode": { /* 'DPT_ValveMode' */
+            return 20
+        }
+        case "DPT_VarString_8859_1": { /* 'DPT_VarString_8859_1' */
+            return 24
+        }
+        case "DPT_Version": { /* 'DPT_Version' */
+            return 217
+        }
+        case "DPT_VolumeLiter_Z": { /* 'DPT_VolumeLiter_Z' */
+            return 218
+        }
+        case "DPT_WindSpeed_Z_DPT_WindSpeed": { /* 'DPT_WindSpeed_Z_DPT_WindSpeed' */
+            return 203
+        }
+        case "DPT_Window_Door": { /* 'DPT_Window_Door' */
+            return 1
+        }
+        default: {
+            return 0
+        }
+    }
+}
+
+func (e KnxDatapointTypes) SubNumber() uint16 {
+    switch e  {
+        case "DPT_ADAType": { /* 'DPT_ADAType' */
+            return 120
+        }
+        case "DPT_Access_Data": { /* 'DPT_Access_Data' */
+            return 0
+        }
+        case "DPT_Ack": { /* 'DPT_Ack' */
+            return 16
+        }
+        case "DPT_ActPosDemAbs": { /* 'DPT_ActPosDemAbs' */
+            return 104
+        }
+        case "DPT_ActiveEnergy": { /* 'DPT_ActiveEnergy' */
+            return 10
+        }
+        case "DPT_ActiveEnergy_V64": { /* 'DPT_ActiveEnergy_V64' */
+            return 10
+        }
+        case "DPT_ActiveEnergy_kWh": { /* 'DPT_ActiveEnergy_kWh' */
+            return 13
+        }
+        case "DPT_ActuatorConnectType": { /* 'DPT_ActuatorConnectType' */
+            return 20
+        }
+        case "DPT_AddInfoTypes": { /* 'DPT_AddInfoTypes' */
+            return 1001
+        }
+        case "DPT_Alarm": { /* 'DPT_Alarm' */
+            return 5
+        }
+        case "DPT_AlarmClassType": { /* 'DPT_AlarmClassType' */
+            return 7
+        }
+        case "DPT_AlarmInfo": { /* 'DPT_AlarmInfo' */
+            return 1
+        }
+        case "DPT_Alarm_Control": { /* 'DPT_Alarm_Control' */
+            return 5
+        }
+        case "DPT_Alarm_Reaction": { /* 'DPT_Alarm_Reaction' */
+            return 2
+        }
+        case "DPT_Angle": { /* 'DPT_Angle' */
+            return 3
+        }
+        case "DPT_ApparantEnergy": { /* 'DPT_ApparantEnergy' */
+            return 11
+        }
+        case "DPT_ApparantEnergy_V64": { /* 'DPT_ApparantEnergy_V64' */
+            return 11
+        }
+        case "DPT_ApparantEnergy_kVAh": { /* 'DPT_ApparantEnergy_kVAh' */
+            return 14
+        }
+        case "DPT_ApplicationArea": { /* 'DPT_ApplicationArea' */
+            return 6
+        }
+        case "DPT_AtmPressureAbs_Z": { /* 'DPT_AtmPressureAbs_Z' */
+            return 15
+        }
+        case "DPT_BackupMode": { /* 'DPT_BackupMode' */
+            return 121
+        }
+        case "DPT_Beaufort_Wind_Force_Scale": { /* 'DPT_Beaufort_Wind_Force_Scale' */
+            return 14
+        }
+        case "DPT_Behaviour_Bus_Power_Up_Down": { /* 'DPT_Behaviour_Bus_Power_Up_Down' */
+            return 601
+        }
+        case "DPT_Behaviour_Lock_Unlock": { /* 'DPT_Behaviour_Lock_Unlock' */
+            return 600
+        }
+        case "DPT_BinaryValue": { /* 'DPT_BinaryValue' */
+            return 6
+        }
+        case "DPT_BinaryValue_Control": { /* 'DPT_BinaryValue_Control' */
+            return 6
+        }
+        case "DPT_BinaryValue_Z": { /* 'DPT_BinaryValue_Z' */
+            return 101
+        }
+        case "DPT_BlindsControlMode": { /* 'DPT_BlindsControlMode' */
+            return 804
+        }
+        case "DPT_BlinkingMode": { /* 'DPT_BlinkingMode' */
+            return 603
+        }
+        case "DPT_Bool": { /* 'DPT_Bool' */
+            return 2
+        }
+        case "DPT_Bool_Control": { /* 'DPT_Bool_Control' */
+            return 2
+        }
+        case "DPT_Brightness": { /* 'DPT_Brightness' */
+            return 13
+        }
+        case "DPT_BuildingMode": { /* 'DPT_BuildingMode' */
+            return 2
+        }
+        case "DPT_BuildingModeNext": { /* 'DPT_BuildingModeNext' */
+            return 105
+        }
+        case "DPT_BuildingMode_Z": { /* 'DPT_BuildingMode_Z' */
+            return 107
+        }
+        case "DPT_BurnerType": { /* 'DPT_BurnerType' */
+            return 101
+        }
+        case "DPT_ChangeoverMode": { /* 'DPT_ChangeoverMode' */
+            return 107
+        }
+        case "DPT_Channel_Activation_16": { /* 'DPT_Channel_Activation_16' */
+            return 1010
+        }
+        case "DPT_Channel_Activation_24": { /* 'DPT_Channel_Activation_24' */
+            return 1010
+        }
+        case "DPT_Channel_Activation_8": { /* 'DPT_Channel_Activation_8' */
+            return 1010
+        }
+        case "DPT_Char_8859_1": { /* 'DPT_Char_8859_1' */
+            return 2
+        }
+        case "DPT_Char_ASCII": { /* 'DPT_Char_ASCII' */
+            return 1
+        }
+        case "DPT_Colour_RGB": { /* 'DPT_Colour_RGB' */
+            return 600
+        }
+        case "DPT_CombinedInfoOnOff": { /* 'DPT_CombinedInfoOnOff' */
+            return 1
+        }
+        case "DPT_CombinedPosition": { /* 'DPT_CombinedPosition' */
+            return 800
+        }
+        case "DPT_CommMode": { /* 'DPT_CommMode' */
+            return 1000
+        }
+        case "DPT_Control_Blinds": { /* 'DPT_Control_Blinds' */
+            return 8
+        }
+        case "DPT_Control_Dimming": { /* 'DPT_Control_Dimming' */
+            return 7
+        }
+        case "DPT_DALI_Control_Gear_Diagnostic": { /* 'DPT_DALI_Control_Gear_Diagnostic' */
+            return 600
+        }
+        case "DPT_DALI_Diagnostics": { /* 'DPT_DALI_Diagnostics' */
+            return 600
+        }
+        case "DPT_DALI_Fade_Time": { /* 'DPT_DALI_Fade_Time' */
+            return 602
+        }
+        case "DPT_DHWMode": { /* 'DPT_DHWMode' */
+            return 103
+        }
+        case "DPT_DHWModeNext": { /* 'DPT_DHWModeNext' */
+            return 102
+        }
+        case "DPT_DHWMode_Z": { /* 'DPT_DHWMode_Z' */
+            return 102
+        }
+        case "DPT_DamperMode": { /* 'DPT_DamperMode' */
+            return 109
+        }
+        case "DPT_Date": { /* 'DPT_Date' */
+            return 1
+        }
+        case "DPT_DateTime": { /* 'DPT_DateTime' */
+            return 1
+        }
+        case "DPT_DecimalFactor": { /* 'DPT_DecimalFactor' */
+            return 5
+        }
+        case "DPT_DeltaTime100MSec": { /* 'DPT_DeltaTime100MSec' */
+            return 4
+        }
+        case "DPT_DeltaTime100Msec_Z": { /* 'DPT_DeltaTime100Msec_Z' */
+            return 4
+        }
+        case "DPT_DeltaTime10MSec": { /* 'DPT_DeltaTime10MSec' */
+            return 3
+        }
+        case "DPT_DeltaTime10Msec_Z": { /* 'DPT_DeltaTime10Msec_Z' */
+            return 3
+        }
+        case "DPT_DeltaTimeHrs": { /* 'DPT_DeltaTimeHrs' */
+            return 7
+        }
+        case "DPT_DeltaTimeHrs_Z": { /* 'DPT_DeltaTimeHrs_Z' */
+            return 7
+        }
+        case "DPT_DeltaTimeMin": { /* 'DPT_DeltaTimeMin' */
+            return 6
+        }
+        case "DPT_DeltaTimeMin_Z": { /* 'DPT_DeltaTimeMin_Z' */
+            return 6
+        }
+        case "DPT_DeltaTimeMsec": { /* 'DPT_DeltaTimeMsec' */
+            return 2
+        }
+        case "DPT_DeltaTimeMsec_Z": { /* 'DPT_DeltaTimeMsec_Z' */
+            return 2
+        }
+        case "DPT_DeltaTimeSec": { /* 'DPT_DeltaTimeSec' */
+            return 5
+        }
+        case "DPT_DeltaTimeSec_Z": { /* 'DPT_DeltaTimeSec_Z' */
+            return 5
+        }
+        case "DPT_Device_Control": { /* 'DPT_Device_Control' */
+            return 2
+        }
+        case "DPT_DimSendStyle": { /* 'DPT_DimSendStyle' */
+            return 13
+        }
+        case "DPT_DimmPBModel": { /* 'DPT_DimmPBModel' */
+            return 607
+        }
+        case "DPT_Direction1_Control": { /* 'DPT_Direction1_Control' */
+            return 8
+        }
+        case "DPT_Direction2_Control": { /* 'DPT_Direction2_Control' */
+            return 9
+        }
+        case "DPT_DoubleNibble": { /* 'DPT_DoubleNibble' */
+            return 1000
+        }
+        case "DPT_EnablH_Cstage_Z_DPT_EnablH_CStage": { /* 'DPT_EnablH_Cstage_Z_DPT_EnablH_CStage' */
+            return 105
+        }
+        case "DPT_Enable": { /* 'DPT_Enable' */
+            return 3
+        }
+        case "DPT_Enable_Control": { /* 'DPT_Enable_Control' */
+            return 3
+        }
+        case "DPT_EnergyDemAir": { /* 'DPT_EnergyDemAir' */
+            return 100
+        }
+        case "DPT_EnergyDemWater": { /* 'DPT_EnergyDemWater' */
+            return 100
+        }
+        case "DPT_ErrorClass_HVAC": { /* 'DPT_ErrorClass_HVAC' */
+            return 12
+        }
+        case "DPT_ErrorClass_System": { /* 'DPT_ErrorClass_System' */
+            return 11
+        }
+        case "DPT_FanMode": { /* 'DPT_FanMode' */
+            return 111
+        }
+        case "DPT_FlaggedScaling": { /* 'DPT_FlaggedScaling' */
+            return 1
+        }
+        case "DPT_FlowRate_m3h": { /* 'DPT_FlowRate_m3h' */
+            return 2
+        }
+        case "DPT_FlowRate_m3h_Z": { /* 'DPT_FlowRate_m3h_Z' */
+            return 2
+        }
+        case "DPT_ForceSign": { /* 'DPT_ForceSign' */
+            return 100
+        }
+        case "DPT_ForceSignCool": { /* 'DPT_ForceSignCool' */
+            return 101
+        }
+        case "DPT_FuelType": { /* 'DPT_FuelType' */
+            return 100
+        }
+        case "DPT_FuelTypeSet": { /* 'DPT_FuelTypeSet' */
+            return 104
+        }
+        case "DPT_HVACAirFlowAbs_Z": { /* 'DPT_HVACAirFlowAbs_Z' */
+            return 104
+        }
+        case "DPT_HVACAirFlowRel_Z": { /* 'DPT_HVACAirFlowRel_Z' */
+            return 102
+        }
+        case "DPT_HVACAirQual_Z": { /* 'DPT_HVACAirQual_Z' */
+            return 100
+        }
+        case "DPT_HVACContrMode": { /* 'DPT_HVACContrMode' */
+            return 105
+        }
+        case "DPT_HVACContrMode_Z": { /* 'DPT_HVACContrMode_Z' */
+            return 104
+        }
+        case "DPT_HVACEmergMode": { /* 'DPT_HVACEmergMode' */
+            return 106
+        }
+        case "DPT_HVACEmergMode_Z": { /* 'DPT_HVACEmergMode_Z' */
+            return 109
+        }
+        case "DPT_HVACMode": { /* 'DPT_HVACMode' */
+            return 102
+        }
+        case "DPT_HVACModeNext": { /* 'DPT_HVACModeNext' */
+            return 100
+        }
+        case "DPT_HVACMode_Z": { /* 'DPT_HVACMode_Z' */
+            return 100
+        }
+        case "DPT_HVAC_PB_Action": { /* 'DPT_HVAC_PB_Action' */
+            return 102
+        }
+        case "DPT_Heat_Cool": { /* 'DPT_Heat_Cool' */
+            return 100
+        }
+        case "DPT_Heat_Cool_Z": { /* 'DPT_Heat_Cool_Z' */
+            return 100
+        }
+        case "DPT_HeaterMode": { /* 'DPT_HeaterMode' */
+            return 110
+        }
+        case "DPT_InputSource": { /* 'DPT_InputSource' */
+            return 14
+        }
+        case "DPT_Invert": { /* 'DPT_Invert' */
+            return 12
+        }
+        case "DPT_Invert_Control": { /* 'DPT_Invert_Control' */
+            return 12
+        }
+        case "DPT_KelvinPerPercent": { /* 'DPT_KelvinPerPercent' */
+            return 23
+        }
+        case "DPT_LanguageCodeAlpha2_ASCII": { /* 'DPT_LanguageCodeAlpha2_ASCII' */
+            return 1
+        }
+        case "DPT_Length_mm": { /* 'DPT_Length_mm' */
+            return 11
+        }
+        case "DPT_LightActuatorErrorInfo": { /* 'DPT_LightActuatorErrorInfo' */
+            return 601
+        }
+        case "DPT_LightApplicationMode": { /* 'DPT_LightApplicationMode' */
+            return 5
+        }
+        case "DPT_LightControlMode": { /* 'DPT_LightControlMode' */
+            return 604
+        }
+        case "DPT_LoadPriority": { /* 'DPT_LoadPriority' */
+            return 104
+        }
+        case "DPT_LoadTypeDetected": { /* 'DPT_LoadTypeDetected' */
+            return 610
+        }
+        case "DPT_LoadTypeSet": { /* 'DPT_LoadTypeSet' */
+            return 609
+        }
+        case "DPT_Locale_ASCII": { /* 'DPT_Locale_ASCII' */
+            return 1
+        }
+        case "DPT_LockSign": { /* 'DPT_LockSign' */
+            return 101
+        }
+        case "DPT_LogicalFunction": { /* 'DPT_LogicalFunction' */
+            return 21
+        }
+        case "DPT_LongDeltaTimeSec": { /* 'DPT_LongDeltaTimeSec' */
+            return 100
+        }
+        case "DPT_MBus_Address": { /* 'DPT_MBus_Address' */
+            return 1000
+        }
+        case "DPT_MasterSlaveMode": { /* 'DPT_MasterSlaveMode' */
+            return 112
+        }
+        case "DPT_Media": { /* 'DPT_Media' */
+            return 1000
+        }
+        case "DPT_MeteringValue": { /* 'DPT_MeteringValue' */
+            return 1
+        }
+        case "DPT_OccMode": { /* 'DPT_OccMode' */
+            return 3
+        }
+        case "DPT_OccModeNext": { /* 'DPT_OccModeNext' */
+            return 104
+        }
+        case "DPT_OccMode_Z": { /* 'DPT_OccMode_Z' */
+            return 108
+        }
+        case "DPT_Occupancy": { /* 'DPT_Occupancy' */
+            return 18
+        }
+        case "DPT_OnOff_Action": { /* 'DPT_OnOff_Action' */
+            return 1
+        }
+        case "DPT_OpenClose": { /* 'DPT_OpenClose' */
+            return 9
+        }
+        case "DPT_PBAction": { /* 'DPT_PBAction' */
+            return 606
+        }
+        case "DPT_PB_Action_HVAC_Extended": { /* 'DPT_PB_Action_HVAC_Extended' */
+            return 101
+        }
+        case "DPT_PSUMode": { /* 'DPT_PSUMode' */
+            return 8
+        }
+        case "DPT_PercentU16_Z": { /* 'DPT_PercentU16_Z' */
+            return 17
+        }
+        case "DPT_Percent_U8": { /* 'DPT_Percent_U8' */
+            return 4
+        }
+        case "DPT_Percent_V16": { /* 'DPT_Percent_V16' */
+            return 10
+        }
+        case "DPT_Percent_V16_Z": { /* 'DPT_Percent_V16_Z' */
+            return 17
+        }
+        case "DPT_Percent_V8": { /* 'DPT_Percent_V8' */
+            return 1
+        }
+        case "DPT_Power": { /* 'DPT_Power' */
+            return 24
+        }
+        case "DPT_PowerDensity": { /* 'DPT_PowerDensity' */
+            return 22
+        }
+        case "DPT_PowerFlowWaterDemCPM": { /* 'DPT_PowerFlowWaterDemCPM' */
+            return 101
+        }
+        case "DPT_PowerFlowWaterDemHPM": { /* 'DPT_PowerFlowWaterDemHPM' */
+            return 100
+        }
+        case "DPT_PowerKW_Z": { /* 'DPT_PowerKW_Z' */
+            return 14
+        }
+        case "DPT_Prioritised_Mode_Control": { /* 'DPT_Prioritised_Mode_Control' */
+            return 1
+        }
+        case "DPT_Priority": { /* 'DPT_Priority' */
+            return 4
+        }
+        case "DPT_PropDataType": { /* 'DPT_PropDataType' */
+            return 10
+        }
+        case "DPT_RF_FilterInfo": { /* 'DPT_RF_FilterInfo' */
+            return 1001
+        }
+        case "DPT_RF_FilterSelect": { /* 'DPT_RF_FilterSelect' */
+            return 1003
+        }
+        case "DPT_RF_ModeInfo": { /* 'DPT_RF_ModeInfo' */
+            return 1000
+        }
+        case "DPT_RF_ModeSelect": { /* 'DPT_RF_ModeSelect' */
+            return 1002
+        }
+        case "DPT_Rain_Amount": { /* 'DPT_Rain_Amount' */
+            return 26
+        }
+        case "DPT_Ramp": { /* 'DPT_Ramp' */
+            return 4
+        }
+        case "DPT_Ramp_Control": { /* 'DPT_Ramp_Control' */
+            return 4
+        }
+        case "DPT_ReactiveEnergy": { /* 'DPT_ReactiveEnergy' */
+            return 12
+        }
+        case "DPT_ReactiveEnergy_V64": { /* 'DPT_ReactiveEnergy_V64' */
+            return 12
+        }
+        case "DPT_ReactiveEnergy_kVARh": { /* 'DPT_ReactiveEnergy_kVARh' */
+            return 15
+        }
+        case "DPT_RegionCodeAlpha2_ASCII": { /* 'DPT_RegionCodeAlpha2_ASCII' */
+            return 2
+        }
+        case "DPT_RelSignedValue_Z": { /* 'DPT_RelSignedValue_Z' */
+            return 1
+        }
+        case "DPT_RelValue_Z": { /* 'DPT_RelValue_Z' */
+            return 1
+        }
+        case "DPT_Reset": { /* 'DPT_Reset' */
+            return 15
+        }
+        case "DPT_Rotation_Angle": { /* 'DPT_Rotation_Angle' */
+            return 11
+        }
+        case "DPT_SABBehaviour_Lock_Unlock": { /* 'DPT_SABBehaviour_Lock_Unlock' */
+            return 802
+        }
+        case "DPT_SABExceptBehaviour": { /* 'DPT_SABExceptBehaviour' */
+            return 801
+        }
+        case "DPT_SCLOMode": { /* 'DPT_SCLOMode' */
+            return 1
+        }
+        case "DPT_SSSBMode": { /* 'DPT_SSSBMode' */
+            return 803
+        }
+        case "DPT_Scaling": { /* 'DPT_Scaling' */
+            return 1
+        }
+        case "DPT_ScalingSpeed": { /* 'DPT_ScalingSpeed' */
+            return 1
+        }
+        case "DPT_Scaling_Step_Time": { /* 'DPT_Scaling_Step_Time' */
+            return 2
+        }
+        case "DPT_SceneConfig": { /* 'DPT_SceneConfig' */
+            return 1
+        }
+        case "DPT_SceneControl": { /* 'DPT_SceneControl' */
+            return 1
+        }
+        case "DPT_SceneInfo": { /* 'DPT_SceneInfo' */
+            return 1
+        }
+        case "DPT_SceneNumber": { /* 'DPT_SceneNumber' */
+            return 1
+        }
+        case "DPT_Scene_AB": { /* 'DPT_Scene_AB' */
+            return 22
+        }
+        case "DPT_SensorSelect": { /* 'DPT_SensorSelect' */
+            return 17
+        }
+        case "DPT_SerNum": { /* 'DPT_SerNum' */
+            return 1
+        }
+        case "DPT_ShutterBlinds_Mode": { /* 'DPT_ShutterBlinds_Mode' */
+            return 23
+        }
+        case "DPT_SpecHeatProd": { /* 'DPT_SpecHeatProd' */
+            return 100
+        }
+        case "DPT_Start": { /* 'DPT_Start' */
+            return 10
+        }
+        case "DPT_StartSynchronization": { /* 'DPT_StartSynchronization' */
+            return 122
+        }
+        case "DPT_Start_Control": { /* 'DPT_Start_Control' */
+            return 10
+        }
+        case "DPT_State": { /* 'DPT_State' */
+            return 11
+        }
+        case "DPT_State_Control": { /* 'DPT_State_Control' */
+            return 11
+        }
+        case "DPT_StatusAHU": { /* 'DPT_StatusAHU' */
+            return 106
+        }
+        case "DPT_StatusAct": { /* 'DPT_StatusAct' */
+            return 105
+        }
+        case "DPT_StatusBOC": { /* 'DPT_StatusBOC' */
+            return 100
+        }
+        case "DPT_StatusBUC": { /* 'DPT_StatusBUC' */
+            return 100
+        }
+        case "DPT_StatusCC": { /* 'DPT_StatusCC' */
+            return 101
+        }
+        case "DPT_StatusCPM": { /* 'DPT_StatusCPM' */
+            return 102
+        }
+        case "DPT_StatusDHWC": { /* 'DPT_StatusDHWC' */
+            return 100
+        }
+        case "DPT_StatusGen": { /* 'DPT_StatusGen' */
+            return 1
+        }
+        case "DPT_StatusHPM": { /* 'DPT_StatusHPM' */
+            return 100
+        }
+        case "DPT_StatusLightingActuator": { /* 'DPT_StatusLightingActuator' */
+            return 600
+        }
+        case "DPT_StatusRCC": { /* 'DPT_StatusRCC' */
+            return 105
+        }
+        case "DPT_StatusRHC": { /* 'DPT_StatusRHC' */
+            return 102
+        }
+        case "DPT_StatusRHCC": { /* 'DPT_StatusRHCC' */
+            return 101
+        }
+        case "DPT_StatusRoomSetp": { /* 'DPT_StatusRoomSetp' */
+            return 113
+        }
+        case "DPT_StatusSAB": { /* 'DPT_StatusSAB' */
+            return 800
+        }
+        case "DPT_StatusSDHWC": { /* 'DPT_StatusSDHWC' */
+            return 103
+        }
+        case "DPT_StatusWTC": { /* 'DPT_StatusWTC' */
+            return 103
+        }
+        case "DPT_Status_Mode3": { /* 'DPT_Status_Mode3' */
+            return 20
+        }
+        case "DPT_Step": { /* 'DPT_Step' */
+            return 7
+        }
+        case "DPT_Step_Control": { /* 'DPT_Step_Control' */
+            return 7
+        }
+        case "DPT_String_8859_1": { /* 'DPT_String_8859_1' */
+            return 1
+        }
+        case "DPT_String_ASCII": { /* 'DPT_String_ASCII' */
+            return 0
+        }
+        case "DPT_SunIntensity_Z": { /* 'DPT_SunIntensity_Z' */
+            return 102
+        }
+        case "DPT_Switch": { /* 'DPT_Switch' */
+            return 1
+        }
+        case "DPT_SwitchOnMode": { /* 'DPT_SwitchOnMode' */
+            return 608
+        }
+        case "DPT_SwitchPBModel": { /* 'DPT_SwitchPBModel' */
+            return 605
+        }
+        case "DPT_Switch_Control": { /* 'DPT_Switch_Control' */
+            return 1
+        }
+        case "DPT_Tariff": { /* 'DPT_Tariff' */
+            return 6
+        }
+        case "DPT_TariffNext": { /* 'DPT_TariffNext' */
+            return 3
+        }
+        case "DPT_Tariff_ActiveEnergy": { /* 'DPT_Tariff_ActiveEnergy' */
+            return 1
+        }
+        case "DPT_TempDHWSetpSet4": { /* 'DPT_TempDHWSetpSet4' */
+            return 101
+        }
+        case "DPT_TempFlowWaterDemAbs": { /* 'DPT_TempFlowWaterDemAbs' */
+            return 100
+        }
+        case "DPT_TempHVACAbsNext": { /* 'DPT_TempHVACAbsNext' */
+            return 100
+        }
+        case "DPT_TempHVACAbs_Z": { /* 'DPT_TempHVACAbs_Z' */
+            return 100
+        }
+        case "DPT_TempHVACRel_Z": { /* 'DPT_TempHVACRel_Z' */
+            return 101
+        }
+        case "DPT_TempRoomDemAbs": { /* 'DPT_TempRoomDemAbs' */
+            return 101
+        }
+        case "DPT_TempRoomSetpSet3": { /* 'DPT_TempRoomSetpSet3' */
+            return 101
+        }
+        case "DPT_TempRoomSetpSet4": { /* 'DPT_TempRoomSetpSet4' */
+            return 100
+        }
+        case "DPT_TempRoomSetpSetF163": { /* 'DPT_TempRoomSetpSetF163' */
+            return 100
+        }
+        case "DPT_TempRoomSetpSetShift3": { /* 'DPT_TempRoomSetpSetShift3' */
+            return 100
+        }
+        case "DPT_TempRoomSetpSetShift4": { /* 'DPT_TempRoomSetpSetShift4' */
+            return 102
+        }
+        case "DPT_TempRoomSetpSetShiftF163": { /* 'DPT_TempRoomSetpSetShiftF163' */
+            return 101
+        }
+        case "DPT_TempSupply_AirSetpSet": { /* 'DPT_TempSupply_AirSetpSet' */
+            return 100
+        }
+        case "DPT_TimeOfDay": { /* 'DPT_TimeOfDay' */
+            return 1
+        }
+        case "DPT_TimePeriod100MSec": { /* 'DPT_TimePeriod100MSec' */
+            return 4
+        }
+        case "DPT_TimePeriod100Msec_Z": { /* 'DPT_TimePeriod100Msec_Z' */
+            return 4
+        }
+        case "DPT_TimePeriod10MSec": { /* 'DPT_TimePeriod10MSec' */
+            return 3
+        }
+        case "DPT_TimePeriod10Msec_Z": { /* 'DPT_TimePeriod10Msec_Z' */
+            return 3
+        }
+        case "DPT_TimePeriodHrs": { /* 'DPT_TimePeriodHrs' */
+            return 7
+        }
+        case "DPT_TimePeriodHrs_Z": { /* 'DPT_TimePeriodHrs_Z' */
+            return 7
+        }
+        case "DPT_TimePeriodMin": { /* 'DPT_TimePeriodMin' */
+            return 6
+        }
+        case "DPT_TimePeriodMin_Z": { /* 'DPT_TimePeriodMin_Z' */
+            return 6
+        }
+        case "DPT_TimePeriodMsec": { /* 'DPT_TimePeriodMsec' */
+            return 2
+        }
+        case "DPT_TimePeriodMsec_Z": { /* 'DPT_TimePeriodMsec_Z' */
+            return 2
+        }
+        case "DPT_TimePeriodSec": { /* 'DPT_TimePeriodSec' */
+            return 5
+        }
+        case "DPT_TimePeriodSec_Z": { /* 'DPT_TimePeriodSec_Z' */
+            return 5
+        }
+        case "DPT_Time_Delay": { /* 'DPT_Time_Delay' */
+            return 13
+        }
+        case "DPT_Trigger": { /* 'DPT_Trigger' */
+            return 17
+        }
+        case "DPT_UCountValue16_Z": { /* 'DPT_UCountValue16_Z' */
+            return 12
+        }
+        case "DPT_UCountValue8_Z": { /* 'DPT_UCountValue8_Z' */
+            return 2
+        }
+        case "DPT_UElCurrentmA": { /* 'DPT_UElCurrentmA' */
+            return 12
+        }
+        case "DPT_UElCurrentyA_Z": { /* 'DPT_UElCurrentyA_Z' */
+            return 13
+        }
+        case "DPT_UFlowRateLiter_h_Z": { /* 'DPT_UFlowRateLiter_h_Z' */
+            return 11
+        }
+        case "DPT_UTF_8": { /* 'DPT_UTF_8' */
+            return 1
+        }
+        case "DPT_UpDown": { /* 'DPT_UpDown' */
+            return 8
+        }
+        case "DPT_UpDown_Action": { /* 'DPT_UpDown_Action' */
+            return 3
+        }
+        case "DPT_ValueDemBOC": { /* 'DPT_ValueDemBOC' */
+            return 102
+        }
+        case "DPT_Value_1_Count": { /* 'DPT_Value_1_Count' */
+            return 10
+        }
+        case "DPT_Value_1_Ucount": { /* 'DPT_Value_1_Ucount' */
+            return 10
+        }
+        case "DPT_Value_2_Count": { /* 'DPT_Value_2_Count' */
+            return 1
+        }
+        case "DPT_Value_2_Ucount": { /* 'DPT_Value_2_Ucount' */
+            return 1
+        }
+        case "DPT_Value_4_Count": { /* 'DPT_Value_4_Count' */
+            return 1
+        }
+        case "DPT_Value_4_Ucount": { /* 'DPT_Value_4_Ucount' */
+            return 1
+        }
+        case "DPT_Value_Absolute_Temperature": { /* 'DPT_Value_Absolute_Temperature' */
+            return 69
+        }
+        case "DPT_Value_Acceleration": { /* 'DPT_Value_Acceleration' */
+            return 0
+        }
+        case "DPT_Value_Acceleration_Angular": { /* 'DPT_Value_Acceleration_Angular' */
+            return 1
+        }
+        case "DPT_Value_Activation_Energy": { /* 'DPT_Value_Activation_Energy' */
+            return 2
+        }
+        case "DPT_Value_Activity": { /* 'DPT_Value_Activity' */
+            return 3
+        }
+        case "DPT_Value_AirQuality": { /* 'DPT_Value_AirQuality' */
+            return 8
+        }
+        case "DPT_Value_Amplitude": { /* 'DPT_Value_Amplitude' */
+            return 5
+        }
+        case "DPT_Value_AngleDeg": { /* 'DPT_Value_AngleDeg' */
+            return 7
+        }
+        case "DPT_Value_AngleRad": { /* 'DPT_Value_AngleRad' */
+            return 6
+        }
+        case "DPT_Value_Angular_Frequency": { /* 'DPT_Value_Angular_Frequency' */
+            return 34
+        }
+        case "DPT_Value_Angular_Momentum": { /* 'DPT_Value_Angular_Momentum' */
+            return 8
+        }
+        case "DPT_Value_Angular_Velocity": { /* 'DPT_Value_Angular_Velocity' */
+            return 9
+        }
+        case "DPT_Value_Area": { /* 'DPT_Value_Area' */
+            return 10
+        }
+        case "DPT_Value_Capacitance": { /* 'DPT_Value_Capacitance' */
+            return 11
+        }
+        case "DPT_Value_Charge_DensitySurface": { /* 'DPT_Value_Charge_DensitySurface' */
+            return 12
+        }
+        case "DPT_Value_Charge_DensityVolume": { /* 'DPT_Value_Charge_DensityVolume' */
+            return 13
+        }
+        case "DPT_Value_Common_Temperature": { /* 'DPT_Value_Common_Temperature' */
+            return 68
+        }
+        case "DPT_Value_Compressibility": { /* 'DPT_Value_Compressibility' */
+            return 14
+        }
+        case "DPT_Value_Conductance": { /* 'DPT_Value_Conductance' */
+            return 15
+        }
+        case "DPT_Value_Curr": { /* 'DPT_Value_Curr' */
+            return 21
+        }
+        case "DPT_Value_Density": { /* 'DPT_Value_Density' */
+            return 17
+        }
+        case "DPT_Value_Electric_Charge": { /* 'DPT_Value_Electric_Charge' */
+            return 18
+        }
+        case "DPT_Value_Electric_Current": { /* 'DPT_Value_Electric_Current' */
+            return 19
+        }
+        case "DPT_Value_Electric_CurrentDensity": { /* 'DPT_Value_Electric_CurrentDensity' */
+            return 20
+        }
+        case "DPT_Value_Electric_DipoleMoment": { /* 'DPT_Value_Electric_DipoleMoment' */
+            return 21
+        }
+        case "DPT_Value_Electric_Displacement": { /* 'DPT_Value_Electric_Displacement' */
+            return 22
+        }
+        case "DPT_Value_Electric_FieldStrength": { /* 'DPT_Value_Electric_FieldStrength' */
+            return 23
+        }
+        case "DPT_Value_Electric_Flux": { /* 'DPT_Value_Electric_Flux' */
+            return 24
+        }
+        case "DPT_Value_Electric_FluxDensity": { /* 'DPT_Value_Electric_FluxDensity' */
+            return 25
+        }
+        case "DPT_Value_Electric_Polarization": { /* 'DPT_Value_Electric_Polarization' */
+            return 26
+        }
+        case "DPT_Value_Electric_Potential": { /* 'DPT_Value_Electric_Potential' */
+            return 27
+        }
+        case "DPT_Value_Electric_PotentialDifference": { /* 'DPT_Value_Electric_PotentialDifference' */
+            return 28
+        }
+        case "DPT_Value_Electrical_Conductivity": { /* 'DPT_Value_Electrical_Conductivity' */
+            return 16
+        }
+        case "DPT_Value_ElectromagneticMoment": { /* 'DPT_Value_ElectromagneticMoment' */
+            return 29
+        }
+        case "DPT_Value_Electromotive_Force": { /* 'DPT_Value_Electromotive_Force' */
+            return 30
+        }
+        case "DPT_Value_Energy": { /* 'DPT_Value_Energy' */
+            return 31
+        }
+        case "DPT_Value_Force": { /* 'DPT_Value_Force' */
+            return 32
+        }
+        case "DPT_Value_Frequency": { /* 'DPT_Value_Frequency' */
+            return 33
+        }
+        case "DPT_Value_Heat_Capacity": { /* 'DPT_Value_Heat_Capacity' */
+            return 35
+        }
+        case "DPT_Value_Heat_FlowRate": { /* 'DPT_Value_Heat_FlowRate' */
+            return 36
+        }
+        case "DPT_Value_Heat_Quantity": { /* 'DPT_Value_Heat_Quantity' */
+            return 37
+        }
+        case "DPT_Value_Humidity": { /* 'DPT_Value_Humidity' */
+            return 7
+        }
+        case "DPT_Value_Impedance": { /* 'DPT_Value_Impedance' */
+            return 38
+        }
+        case "DPT_Value_Length": { /* 'DPT_Value_Length' */
+            return 39
+        }
+        case "DPT_Value_Light_Quantity": { /* 'DPT_Value_Light_Quantity' */
+            return 40
+        }
+        case "DPT_Value_Luminance": { /* 'DPT_Value_Luminance' */
+            return 41
+        }
+        case "DPT_Value_Luminous_Flux": { /* 'DPT_Value_Luminous_Flux' */
+            return 42
+        }
+        case "DPT_Value_Luminous_Intensity": { /* 'DPT_Value_Luminous_Intensity' */
+            return 43
+        }
+        case "DPT_Value_Lux": { /* 'DPT_Value_Lux' */
+            return 4
+        }
+        case "DPT_Value_Magnetic_FieldStrength": { /* 'DPT_Value_Magnetic_FieldStrength' */
+            return 44
+        }
+        case "DPT_Value_Magnetic_Flux": { /* 'DPT_Value_Magnetic_Flux' */
+            return 45
+        }
+        case "DPT_Value_Magnetic_FluxDensity": { /* 'DPT_Value_Magnetic_FluxDensity' */
+            return 46
+        }
+        case "DPT_Value_Magnetic_Moment": { /* 'DPT_Value_Magnetic_Moment' */
+            return 47
+        }
+        case "DPT_Value_Magnetic_Polarization": { /* 'DPT_Value_Magnetic_Polarization' */
+            return 48
+        }
+        case "DPT_Value_Magnetization": { /* 'DPT_Value_Magnetization' */
+            return 49
+        }
+        case "DPT_Value_MagnetomotiveForce": { /* 'DPT_Value_MagnetomotiveForce' */
+            return 50
+        }
+        case "DPT_Value_Mass": { /* 'DPT_Value_Mass' */
+            return 51
+        }
+        case "DPT_Value_MassFlux": { /* 'DPT_Value_MassFlux' */
+            return 52
+        }
+        case "DPT_Value_Mol": { /* 'DPT_Value_Mol' */
+            return 4
+        }
+        case "DPT_Value_Momentum": { /* 'DPT_Value_Momentum' */
+            return 53
+        }
+        case "DPT_Value_Phase_AngleDeg": { /* 'DPT_Value_Phase_AngleDeg' */
+            return 55
+        }
+        case "DPT_Value_Phase_AngleRad": { /* 'DPT_Value_Phase_AngleRad' */
+            return 54
+        }
+        case "DPT_Value_Power": { /* 'DPT_Value_Power' */
+            return 56
+        }
+        case "DPT_Value_Power_Factor": { /* 'DPT_Value_Power_Factor' */
+            return 57
+        }
+        case "DPT_Value_Pres": { /* 'DPT_Value_Pres' */
+            return 6
+        }
+        case "DPT_Value_Pressure": { /* 'DPT_Value_Pressure' */
+            return 58
+        }
+        case "DPT_Value_Reactance": { /* 'DPT_Value_Reactance' */
+            return 59
+        }
+        case "DPT_Value_Resistance": { /* 'DPT_Value_Resistance' */
+            return 60
+        }
+        case "DPT_Value_Resistivity": { /* 'DPT_Value_Resistivity' */
+            return 61
+        }
+        case "DPT_Value_SelfInductance": { /* 'DPT_Value_SelfInductance' */
+            return 62
+        }
+        case "DPT_Value_SolidAngle": { /* 'DPT_Value_SolidAngle' */
+            return 63
+        }
+        case "DPT_Value_Sound_Intensity": { /* 'DPT_Value_Sound_Intensity' */
+            return 64
+        }
+        case "DPT_Value_Speed": { /* 'DPT_Value_Speed' */
+            return 65
+        }
+        case "DPT_Value_Stress": { /* 'DPT_Value_Stress' */
+            return 66
+        }
+        case "DPT_Value_Surface_Tension": { /* 'DPT_Value_Surface_Tension' */
+            return 67
+        }
+        case "DPT_Value_Temp": { /* 'DPT_Value_Temp' */
+            return 1
+        }
+        case "DPT_Value_Temp_F": { /* 'DPT_Value_Temp_F' */
+            return 27
+        }
+        case "DPT_Value_Tempa": { /* 'DPT_Value_Tempa' */
+            return 3
+        }
+        case "DPT_Value_Tempd": { /* 'DPT_Value_Tempd' */
+            return 2
+        }
+        case "DPT_Value_TemperatureDifference": { /* 'DPT_Value_TemperatureDifference' */
+            return 70
+        }
+        case "DPT_Value_Thermal_Capacity": { /* 'DPT_Value_Thermal_Capacity' */
+            return 71
+        }
+        case "DPT_Value_Thermal_Conductivity": { /* 'DPT_Value_Thermal_Conductivity' */
+            return 72
+        }
+        case "DPT_Value_ThermoelectricPower": { /* 'DPT_Value_ThermoelectricPower' */
+            return 73
+        }
+        case "DPT_Value_Time": { /* 'DPT_Value_Time' */
+            return 74
+        }
+        case "DPT_Value_Time1": { /* 'DPT_Value_Time1' */
+            return 10
+        }
+        case "DPT_Value_Time2": { /* 'DPT_Value_Time2' */
+            return 11
+        }
+        case "DPT_Value_Torque": { /* 'DPT_Value_Torque' */
+            return 75
+        }
+        case "DPT_Value_Volt": { /* 'DPT_Value_Volt' */
+            return 20
+        }
+        case "DPT_Value_Volume": { /* 'DPT_Value_Volume' */
+            return 76
+        }
+        case "DPT_Value_Volume_Flow": { /* 'DPT_Value_Volume_Flow' */
+            return 25
+        }
+        case "DPT_Value_Volume_Flux": { /* 'DPT_Value_Volume_Flux' */
+            return 77
+        }
+        case "DPT_Value_Weight": { /* 'DPT_Value_Weight' */
+            return 78
+        }
+        case "DPT_Value_Work": { /* 'DPT_Value_Work' */
+            return 79
+        }
+        case "DPT_Value_Wsp": { /* 'DPT_Value_Wsp' */
+            return 5
+        }
+        case "DPT_Value_Wsp_kmh": { /* 'DPT_Value_Wsp_kmh' */
+            return 28
+        }
+        case "DPT_ValveMode": { /* 'DPT_ValveMode' */
+            return 108
+        }
+        case "DPT_VarString_8859_1": { /* 'DPT_VarString_8859_1' */
+            return 1
+        }
+        case "DPT_Version": { /* 'DPT_Version' */
+            return 1
+        }
+        case "DPT_VolumeLiter_Z": { /* 'DPT_VolumeLiter_Z' */
+            return 1
+        }
+        case "DPT_WindSpeed_Z_DPT_WindSpeed": { /* 'DPT_WindSpeed_Z_DPT_WindSpeed' */
+            return 101
+        }
+        case "DPT_Window_Door": { /* 'DPT_Window_Door' */
+            return 19
+        }
+        default: {
+            return 0
+        }
+    }
+}
+func KnxDatapointTypesValueOf(value string) KnxDatapointTypes {
+    switch value {
+        case "DPT_ADAType":
+            return KnxDatapointTypes_DPT_ADAType
+        case "DPT_Access_Data":
+            return KnxDatapointTypes_DPT_Access_Data
+        case "DPT_Ack":
+            return KnxDatapointTypes_DPT_Ack
+        case "DPT_ActPosDemAbs":
+            return KnxDatapointTypes_DPT_ActPosDemAbs
+        case "DPT_ActiveEnergy":
+            return KnxDatapointTypes_DPT_ActiveEnergy
+        case "DPT_ActiveEnergy_V64":
+            return KnxDatapointTypes_DPT_ActiveEnergy_V64
+        case "DPT_ActiveEnergy_kWh":
+            return KnxDatapointTypes_DPT_ActiveEnergy_kWh
+        case "DPT_ActuatorConnectType":
+            return KnxDatapointTypes_DPT_ActuatorConnectType
+        case "DPT_AddInfoTypes":
+            return KnxDatapointTypes_DPT_AddInfoTypes
+        case "DPT_Alarm":
+            return KnxDatapointTypes_DPT_Alarm
+        case "DPT_AlarmClassType":
+            return KnxDatapointTypes_DPT_AlarmClassType
+        case "DPT_AlarmInfo":
+            return KnxDatapointTypes_DPT_AlarmInfo
+        case "DPT_Alarm_Control":
+            return KnxDatapointTypes_DPT_Alarm_Control
+        case "DPT_Alarm_Reaction":
+            return KnxDatapointTypes_DPT_Alarm_Reaction
+        case "DPT_Angle":
+            return KnxDatapointTypes_DPT_Angle
+        case "DPT_ApparantEnergy":
+            return KnxDatapointTypes_DPT_ApparantEnergy
+        case "DPT_ApparantEnergy_V64":
+            return KnxDatapointTypes_DPT_ApparantEnergy_V64
+        case "DPT_ApparantEnergy_kVAh":
+            return KnxDatapointTypes_DPT_ApparantEnergy_kVAh
+        case "DPT_ApplicationArea":
+            return KnxDatapointTypes_DPT_ApplicationArea
+        case "DPT_AtmPressureAbs_Z":
+            return KnxDatapointTypes_DPT_AtmPressureAbs_Z
+        case "DPT_BackupMode":
+            return KnxDatapointTypes_DPT_BackupMode
+        case "DPT_Beaufort_Wind_Force_Scale":
+            return KnxDatapointTypes_DPT_Beaufort_Wind_Force_Scale
+        case "DPT_Behaviour_Bus_Power_Up_Down":
+            return KnxDatapointTypes_DPT_Behaviour_Bus_Power_Up_Down
+        case "DPT_Behaviour_Lock_Unlock":
+            return KnxDatapointTypes_DPT_Behaviour_Lock_Unlock
+        case "DPT_BinaryValue":
+            return KnxDatapointTypes_DPT_BinaryValue
+        case "DPT_BinaryValue_Control":
+            return KnxDatapointTypes_DPT_BinaryValue_Control
+        case "DPT_BinaryValue_Z":
+            return KnxDatapointTypes_DPT_BinaryValue_Z
+        case "DPT_BlindsControlMode":
+            return KnxDatapointTypes_DPT_BlindsControlMode
+        case "DPT_BlinkingMode":
+            return KnxDatapointTypes_DPT_BlinkingMode
+        case "DPT_Bool":
+            return KnxDatapointTypes_DPT_Bool
+        case "DPT_Bool_Control":
+            return KnxDatapointTypes_DPT_Bool_Control
+        case "DPT_Brightness":
+            return KnxDatapointTypes_DPT_Brightness
+        case "DPT_BuildingMode":
+            return KnxDatapointTypes_DPT_BuildingMode
+        case "DPT_BuildingModeNext":
+            return KnxDatapointTypes_DPT_BuildingModeNext
+        case "DPT_BuildingMode_Z":
+            return KnxDatapointTypes_DPT_BuildingMode_Z
+        case "DPT_BurnerType":
+            return KnxDatapointTypes_DPT_BurnerType
+        case "DPT_ChangeoverMode":
+            return KnxDatapointTypes_DPT_ChangeoverMode
+        case "DPT_Channel_Activation_16":
+            return KnxDatapointTypes_DPT_Channel_Activation_16
+        case "DPT_Channel_Activation_24":
+            return KnxDatapointTypes_DPT_Channel_Activation_24
+        case "DPT_Channel_Activation_8":
+            return KnxDatapointTypes_DPT_Channel_Activation_8
+        case "DPT_Char_8859_1":
+            return KnxDatapointTypes_DPT_Char_8859_1
+        case "DPT_Char_ASCII":
+            return KnxDatapointTypes_DPT_Char_ASCII
+        case "DPT_Colour_RGB":
+            return KnxDatapointTypes_DPT_Colour_RGB
+        case "DPT_CombinedInfoOnOff":
+            return KnxDatapointTypes_DPT_CombinedInfoOnOff
+        case "DPT_CombinedPosition":
+            return KnxDatapointTypes_DPT_CombinedPosition
+        case "DPT_CommMode":
+            return KnxDatapointTypes_DPT_CommMode
+        case "DPT_Control_Blinds":
+            return KnxDatapointTypes_DPT_Control_Blinds
+        case "DPT_Control_Dimming":
+            return KnxDatapointTypes_DPT_Control_Dimming
+        case "DPT_DALI_Control_Gear_Diagnostic":
+            return KnxDatapointTypes_DPT_DALI_Control_Gear_Diagnostic
+        case "DPT_DALI_Diagnostics":
+            return KnxDatapointTypes_DPT_DALI_Diagnostics
+        case "DPT_DALI_Fade_Time":
+            return KnxDatapointTypes_DPT_DALI_Fade_Time
+        case "DPT_DHWMode":
+            return KnxDatapointTypes_DPT_DHWMode
+        case "DPT_DHWModeNext":
+            return KnxDatapointTypes_DPT_DHWModeNext
+        case "DPT_DHWMode_Z":
+            return KnxDatapointTypes_DPT_DHWMode_Z
+        case "DPT_DamperMode":
+            return KnxDatapointTypes_DPT_DamperMode
+        case "DPT_Date":
+            return KnxDatapointTypes_DPT_Date
+        case "DPT_DateTime":
+            return KnxDatapointTypes_DPT_DateTime
+        case "DPT_DecimalFactor":
+            return KnxDatapointTypes_DPT_DecimalFactor
+        case "DPT_DeltaTime100MSec":
+            return KnxDatapointTypes_DPT_DeltaTime100MSec
+        case "DPT_DeltaTime100Msec_Z":
+            return KnxDatapointTypes_DPT_DeltaTime100Msec_Z
+        case "DPT_DeltaTime10MSec":
+            return KnxDatapointTypes_DPT_DeltaTime10MSec
+        case "DPT_DeltaTime10Msec_Z":
+            return KnxDatapointTypes_DPT_DeltaTime10Msec_Z
+        case "DPT_DeltaTimeHrs":
+            return KnxDatapointTypes_DPT_DeltaTimeHrs
+        case "DPT_DeltaTimeHrs_Z":
+            return KnxDatapointTypes_DPT_DeltaTimeHrs_Z
+        case "DPT_DeltaTimeMin":
+            return KnxDatapointTypes_DPT_DeltaTimeMin
+        case "DPT_DeltaTimeMin_Z":
+            return KnxDatapointTypes_DPT_DeltaTimeMin_Z
+        case "DPT_DeltaTimeMsec":
+            return KnxDatapointTypes_DPT_DeltaTimeMsec
+        case "DPT_DeltaTimeMsec_Z":
+            return KnxDatapointTypes_DPT_DeltaTimeMsec_Z
+        case "DPT_DeltaTimeSec":
+            return KnxDatapointTypes_DPT_DeltaTimeSec
+        case "DPT_DeltaTimeSec_Z":
+            return KnxDatapointTypes_DPT_DeltaTimeSec_Z
+        case "DPT_Device_Control":
+            return KnxDatapointTypes_DPT_Device_Control
+        case "DPT_DimSendStyle":
+            return KnxDatapointTypes_DPT_DimSendStyle
+        case "DPT_DimmPBModel":
+            return KnxDatapointTypes_DPT_DimmPBModel
+        case "DPT_Direction1_Control":
+            return KnxDatapointTypes_DPT_Direction1_Control
+        case "DPT_Direction2_Control":
+            return KnxDatapointTypes_DPT_Direction2_Control
+        case "DPT_DoubleNibble":
+            return KnxDatapointTypes_DPT_DoubleNibble
+        case "DPT_EnablH_Cstage_Z_DPT_EnablH_CStage":
+            return KnxDatapointTypes_DPT_EnablH_Cstage_Z_DPT_EnablH_CStage
+        case "DPT_Enable":
+            return KnxDatapointTypes_DPT_Enable
+        case "DPT_Enable_Control":
+            return KnxDatapointTypes_DPT_Enable_Control
+        case "DPT_EnergyDemAir":
+            return KnxDatapointTypes_DPT_EnergyDemAir
+        case "DPT_EnergyDemWater":
+            return KnxDatapointTypes_DPT_EnergyDemWater
+        case "DPT_ErrorClass_HVAC":
+            return KnxDatapointTypes_DPT_ErrorClass_HVAC
+        case "DPT_ErrorClass_System":
+            return KnxDatapointTypes_DPT_ErrorClass_System
+        case "DPT_FanMode":
+            return KnxDatapointTypes_DPT_FanMode
+        case "DPT_FlaggedScaling":
+            return KnxDatapointTypes_DPT_FlaggedScaling
+        case "DPT_FlowRate_m3h":
+            return KnxDatapointTypes_DPT_FlowRate_m3h
+        case "DPT_FlowRate_m3h_Z":
+            return KnxDatapointTypes_DPT_FlowRate_m3h_Z
+        case "DPT_ForceSign":
+            return KnxDatapointTypes_DPT_ForceSign
+        case "DPT_ForceSignCool":
+            return KnxDatapointTypes_DPT_ForceSignCool
+        case "DPT_FuelType":
+            return KnxDatapointTypes_DPT_FuelType
+        case "DPT_FuelTypeSet":
+            return KnxDatapointTypes_DPT_FuelTypeSet
+        case "DPT_HVACAirFlowAbs_Z":
+            return KnxDatapointTypes_DPT_HVACAirFlowAbs_Z
+        case "DPT_HVACAirFlowRel_Z":
+            return KnxDatapointTypes_DPT_HVACAirFlowRel_Z
+        case "DPT_HVACAirQual_Z":
+            return KnxDatapointTypes_DPT_HVACAirQual_Z
+        case "DPT_HVACContrMode":
+            return KnxDatapointTypes_DPT_HVACContrMode
+        case "DPT_HVACContrMode_Z":
+            return KnxDatapointTypes_DPT_HVACContrMode_Z
+        case "DPT_HVACEmergMode":
+            return KnxDatapointTypes_DPT_HVACEmergMode
+        case "DPT_HVACEmergMode_Z":
+            return KnxDatapointTypes_DPT_HVACEmergMode_Z
+        case "DPT_HVACMode":
+            return KnxDatapointTypes_DPT_HVACMode
+        case "DPT_HVACModeNext":
+            return KnxDatapointTypes_DPT_HVACModeNext
+        case "DPT_HVACMode_Z":
+            return KnxDatapointTypes_DPT_HVACMode_Z
+        case "DPT_HVAC_PB_Action":
+            return KnxDatapointTypes_DPT_HVAC_PB_Action
+        case "DPT_Heat_Cool":
+            return KnxDatapointTypes_DPT_Heat_Cool
+        case "DPT_Heat_Cool_Z":
+            return KnxDatapointTypes_DPT_Heat_Cool_Z
+        case "DPT_HeaterMode":
+            return KnxDatapointTypes_DPT_HeaterMode
+        case "DPT_InputSource":
+            return KnxDatapointTypes_DPT_InputSource
+        case "DPT_Invert":
+            return KnxDatapointTypes_DPT_Invert
+        case "DPT_Invert_Control":
+            return KnxDatapointTypes_DPT_Invert_Control
+        case "DPT_KelvinPerPercent":
+            return KnxDatapointTypes_DPT_KelvinPerPercent
+        case "DPT_LanguageCodeAlpha2_ASCII":
+            return KnxDatapointTypes_DPT_LanguageCodeAlpha2_ASCII
+        case "DPT_Length_mm":
+            return KnxDatapointTypes_DPT_Length_mm
+        case "DPT_LightActuatorErrorInfo":
+            return KnxDatapointTypes_DPT_LightActuatorErrorInfo
+        case "DPT_LightApplicationMode":
+            return KnxDatapointTypes_DPT_LightApplicationMode
+        case "DPT_LightControlMode":
+            return KnxDatapointTypes_DPT_LightControlMode
+        case "DPT_LoadPriority":
+            return KnxDatapointTypes_DPT_LoadPriority
+        case "DPT_LoadTypeDetected":
+            return KnxDatapointTypes_DPT_LoadTypeDetected
+        case "DPT_LoadTypeSet":
+            return KnxDatapointTypes_DPT_LoadTypeSet
+        case "DPT_Locale_ASCII":
+            return KnxDatapointTypes_DPT_Locale_ASCII
+        case "DPT_LockSign":
+            return KnxDatapointTypes_DPT_LockSign
+        case "DPT_LogicalFunction":
+            return KnxDatapointTypes_DPT_LogicalFunction
+        case "DPT_LongDeltaTimeSec":
+            return KnxDatapointTypes_DPT_LongDeltaTimeSec
+        case "DPT_MBus_Address":
+            return KnxDatapointTypes_DPT_MBus_Address
+        case "DPT_MasterSlaveMode":
+            return KnxDatapointTypes_DPT_MasterSlaveMode
+        case "DPT_Media":
+            return KnxDatapointTypes_DPT_Media
+        case "DPT_MeteringValue":
+            return KnxDatapointTypes_DPT_MeteringValue
+        case "DPT_OccMode":
+            return KnxDatapointTypes_DPT_OccMode
+        case "DPT_OccModeNext":
+            return KnxDatapointTypes_DPT_OccModeNext
+        case "DPT_OccMode_Z":
+            return KnxDatapointTypes_DPT_OccMode_Z
+        case "DPT_Occupancy":
+            return KnxDatapointTypes_DPT_Occupancy
+        case "DPT_OnOff_Action":
+            return KnxDatapointTypes_DPT_OnOff_Action
+        case "DPT_OpenClose":
+            return KnxDatapointTypes_DPT_OpenClose
+        case "DPT_PBAction":
+            return KnxDatapointTypes_DPT_PBAction
+        case "DPT_PB_Action_HVAC_Extended":
+            return KnxDatapointTypes_DPT_PB_Action_HVAC_Extended
+        case "DPT_PSUMode":
+            return KnxDatapointTypes_DPT_PSUMode
+        case "DPT_PercentU16_Z":
+            return KnxDatapointTypes_DPT_PercentU16_Z
+        case "DPT_Percent_U8":
+            return KnxDatapointTypes_DPT_Percent_U8
+        case "DPT_Percent_V16":
+            return KnxDatapointTypes_DPT_Percent_V16
+        case "DPT_Percent_V16_Z":
+            return KnxDatapointTypes_DPT_Percent_V16_Z
+        case "DPT_Percent_V8":
+            return KnxDatapointTypes_DPT_Percent_V8
+        case "DPT_Power":
+            return KnxDatapointTypes_DPT_Power
+        case "DPT_PowerDensity":
+            return KnxDatapointTypes_DPT_PowerDensity
+        case "DPT_PowerFlowWaterDemCPM":
+            return KnxDatapointTypes_DPT_PowerFlowWaterDemCPM
+        case "DPT_PowerFlowWaterDemHPM":
+            return KnxDatapointTypes_DPT_PowerFlowWaterDemHPM
+        case "DPT_PowerKW_Z":
+            return KnxDatapointTypes_DPT_PowerKW_Z
+        case "DPT_Prioritised_Mode_Control":
+            return KnxDatapointTypes_DPT_Prioritised_Mode_Control
+        case "DPT_Priority":
+            return KnxDatapointTypes_DPT_Priority
+        case "DPT_PropDataType":
+            return KnxDatapointTypes_DPT_PropDataType
+        case "DPT_RF_FilterInfo":
+            return KnxDatapointTypes_DPT_RF_FilterInfo
+        case "DPT_RF_FilterSelect":
+            return KnxDatapointTypes_DPT_RF_FilterSelect
+        case "DPT_RF_ModeInfo":
+            return KnxDatapointTypes_DPT_RF_ModeInfo
+        case "DPT_RF_ModeSelect":
+            return KnxDatapointTypes_DPT_RF_ModeSelect
+        case "DPT_Rain_Amount":
+            return KnxDatapointTypes_DPT_Rain_Amount
+        case "DPT_Ramp":
+            return KnxDatapointTypes_DPT_Ramp
+        case "DPT_Ramp_Control":
+            return KnxDatapointTypes_DPT_Ramp_Control
+        case "DPT_ReactiveEnergy":
+            return KnxDatapointTypes_DPT_ReactiveEnergy
+        case "DPT_ReactiveEnergy_V64":
+            return KnxDatapointTypes_DPT_ReactiveEnergy_V64
+        case "DPT_ReactiveEnergy_kVARh":
+            return KnxDatapointTypes_DPT_ReactiveEnergy_kVARh
+        case "DPT_RegionCodeAlpha2_ASCII":
+            return KnxDatapointTypes_DPT_RegionCodeAlpha2_ASCII
+        case "DPT_RelSignedValue_Z":
+            return KnxDatapointTypes_DPT_RelSignedValue_Z
+        case "DPT_RelValue_Z":
+            return KnxDatapointTypes_DPT_RelValue_Z
+        case "DPT_Reset":
+            return KnxDatapointTypes_DPT_Reset
+        case "DPT_Rotation_Angle":
+            return KnxDatapointTypes_DPT_Rotation_Angle
+        case "DPT_SABBehaviour_Lock_Unlock":
+            return KnxDatapointTypes_DPT_SABBehaviour_Lock_Unlock
+        case "DPT_SABExceptBehaviour":
+            return KnxDatapointTypes_DPT_SABExceptBehaviour
+        case "DPT_SCLOMode":
+            return KnxDatapointTypes_DPT_SCLOMode
+        case "DPT_SSSBMode":
+            return KnxDatapointTypes_DPT_SSSBMode
+        case "DPT_Scaling":
+            return KnxDatapointTypes_DPT_Scaling
+        case "DPT_ScalingSpeed":
+            return KnxDatapointTypes_DPT_ScalingSpeed
+        case "DPT_Scaling_Step_Time":
+            return KnxDatapointTypes_DPT_Scaling_Step_Time
+        case "DPT_SceneConfig":
+            return KnxDatapointTypes_DPT_SceneConfig
+        case "DPT_SceneControl":
+            return KnxDatapointTypes_DPT_SceneControl
+        case "DPT_SceneInfo":
+            return KnxDatapointTypes_DPT_SceneInfo
+        case "DPT_SceneNumber":
+            return KnxDatapointTypes_DPT_SceneNumber
+        case "DPT_Scene_AB":
+            return KnxDatapointTypes_DPT_Scene_AB
+        case "DPT_SensorSelect":
+            return KnxDatapointTypes_DPT_SensorSelect
+        case "DPT_SerNum":
+            return KnxDatapointTypes_DPT_SerNum
+        case "DPT_ShutterBlinds_Mode":
+            return KnxDatapointTypes_DPT_ShutterBlinds_Mode
+        case "DPT_SpecHeatProd":
+            return KnxDatapointTypes_DPT_SpecHeatProd
+        case "DPT_Start":
+            return KnxDatapointTypes_DPT_Start
+        case "DPT_StartSynchronization":
+            return KnxDatapointTypes_DPT_StartSynchronization
+        case "DPT_Start_Control":
+            return KnxDatapointTypes_DPT_Start_Control
+        case "DPT_State":
+            return KnxDatapointTypes_DPT_State
+        case "DPT_State_Control":
+            return KnxDatapointTypes_DPT_State_Control
+        case "DPT_StatusAHU":
+            return KnxDatapointTypes_DPT_StatusAHU
+        case "DPT_StatusAct":
+            return KnxDatapointTypes_DPT_StatusAct
+        case "DPT_StatusBOC":
+            return KnxDatapointTypes_DPT_StatusBOC
+        case "DPT_StatusBUC":
+            return KnxDatapointTypes_DPT_StatusBUC
+        case "DPT_StatusCC":
+            return KnxDatapointTypes_DPT_StatusCC
+        case "DPT_StatusCPM":
+            return KnxDatapointTypes_DPT_StatusCPM
+        case "DPT_StatusDHWC":
+            return KnxDatapointTypes_DPT_StatusDHWC
+        case "DPT_StatusGen":
+            return KnxDatapointTypes_DPT_StatusGen
+        case "DPT_StatusHPM":
+            return KnxDatapointTypes_DPT_StatusHPM
+        case "DPT_StatusLightingActuator":
+            return KnxDatapointTypes_DPT_StatusLightingActuator
+        case "DPT_StatusRCC":
+            return KnxDatapointTypes_DPT_StatusRCC
+        case "DPT_StatusRHC":
+            return KnxDatapointTypes_DPT_StatusRHC
+        case "DPT_StatusRHCC":
+            return KnxDatapointTypes_DPT_StatusRHCC
+        case "DPT_StatusRoomSetp":
+            return KnxDatapointTypes_DPT_StatusRoomSetp
+        case "DPT_StatusSAB":
+            return KnxDatapointTypes_DPT_StatusSAB
+        case "DPT_StatusSDHWC":
+            return KnxDatapointTypes_DPT_StatusSDHWC
+        case "DPT_StatusWTC":
+            return KnxDatapointTypes_DPT_StatusWTC
+        case "DPT_Status_Mode3":
+            return KnxDatapointTypes_DPT_Status_Mode3
+        case "DPT_Step":
+            return KnxDatapointTypes_DPT_Step
+        case "DPT_Step_Control":
+            return KnxDatapointTypes_DPT_Step_Control
+        case "DPT_String_8859_1":
+            return KnxDatapointTypes_DPT_String_8859_1
+        case "DPT_String_ASCII":
+            return KnxDatapointTypes_DPT_String_ASCII
+        case "DPT_SunIntensity_Z":
+            return KnxDatapointTypes_DPT_SunIntensity_Z
+        case "DPT_Switch":
+            return KnxDatapointTypes_DPT_Switch
+        case "DPT_SwitchOnMode":
+            return KnxDatapointTypes_DPT_SwitchOnMode
+        case "DPT_SwitchPBModel":
+            return KnxDatapointTypes_DPT_SwitchPBModel
+        case "DPT_Switch_Control":
+            return KnxDatapointTypes_DPT_Switch_Control
+        case "DPT_Tariff":
+            return KnxDatapointTypes_DPT_Tariff
+        case "DPT_TariffNext":
+            return KnxDatapointTypes_DPT_TariffNext
+        case "DPT_Tariff_ActiveEnergy":
+            return KnxDatapointTypes_DPT_Tariff_ActiveEnergy
+        case "DPT_TempDHWSetpSet4":
+            return KnxDatapointTypes_DPT_TempDHWSetpSet4
+        case "DPT_TempFlowWaterDemAbs":
+            return KnxDatapointTypes_DPT_TempFlowWaterDemAbs
+        case "DPT_TempHVACAbsNext":
+            return KnxDatapointTypes_DPT_TempHVACAbsNext
+        case "DPT_TempHVACAbs_Z":
+            return KnxDatapointTypes_DPT_TempHVACAbs_Z
+        case "DPT_TempHVACRel_Z":
+            return KnxDatapointTypes_DPT_TempHVACRel_Z
+        case "DPT_TempRoomDemAbs":
+            return KnxDatapointTypes_DPT_TempRoomDemAbs
+        case "DPT_TempRoomSetpSet3":
+            return KnxDatapointTypes_DPT_TempRoomSetpSet3
+        case "DPT_TempRoomSetpSet4":
+            return KnxDatapointTypes_DPT_TempRoomSetpSet4
+        case "DPT_TempRoomSetpSetF163":
+            return KnxDatapointTypes_DPT_TempRoomSetpSetF163
+        case "DPT_TempRoomSetpSetShift3":
+            return KnxDatapointTypes_DPT_TempRoomSetpSetShift3
+        case "DPT_TempRoomSetpSetShift4":
+            return KnxDatapointTypes_DPT_TempRoomSetpSetShift4
+        case "DPT_TempRoomSetpSetShiftF163":
+            return KnxDatapointTypes_DPT_TempRoomSetpSetShiftF163
+        case "DPT_TempSupply_AirSetpSet":
+            return KnxDatapointTypes_DPT_TempSupply_AirSetpSet
+        case "DPT_TimeOfDay":
+            return KnxDatapointTypes_DPT_TimeOfDay
+        case "DPT_TimePeriod100MSec":
+            return KnxDatapointTypes_DPT_TimePeriod100MSec
+        case "DPT_TimePeriod100Msec_Z":
+            return KnxDatapointTypes_DPT_TimePeriod100Msec_Z
+        case "DPT_TimePeriod10MSec":
+            return KnxDatapointTypes_DPT_TimePeriod10MSec
+        case "DPT_TimePeriod10Msec_Z":
+            return KnxDatapointTypes_DPT_TimePeriod10Msec_Z
+        case "DPT_TimePeriodHrs":
+            return KnxDatapointTypes_DPT_TimePeriodHrs
+        case "DPT_TimePeriodHrs_Z":
+            return KnxDatapointTypes_DPT_TimePeriodHrs_Z
+        case "DPT_TimePeriodMin":
+            return KnxDatapointTypes_DPT_TimePeriodMin
+        case "DPT_TimePeriodMin_Z":
+            return KnxDatapointTypes_DPT_TimePeriodMin_Z
+        case "DPT_TimePeriodMsec":
+            return KnxDatapointTypes_DPT_TimePeriodMsec
+        case "DPT_TimePeriodMsec_Z":
+            return KnxDatapointTypes_DPT_TimePeriodMsec_Z
+        case "DPT_TimePeriodSec":
+            return KnxDatapointTypes_DPT_TimePeriodSec
+        case "DPT_TimePeriodSec_Z":
+            return KnxDatapointTypes_DPT_TimePeriodSec_Z
+        case "DPT_Time_Delay":
+            return KnxDatapointTypes_DPT_Time_Delay
+        case "DPT_Trigger":
+            return KnxDatapointTypes_DPT_Trigger
+        case "DPT_UCountValue16_Z":
+            return KnxDatapointTypes_DPT_UCountValue16_Z
+        case "DPT_UCountValue8_Z":
+            return KnxDatapointTypes_DPT_UCountValue8_Z
+        case "DPT_UElCurrentmA":
+            return KnxDatapointTypes_DPT_UElCurrentmA
+        case "DPT_UElCurrentyA_Z":
+            return KnxDatapointTypes_DPT_UElCurrentyA_Z
+        case "DPT_UFlowRateLiter_h_Z":
+            return KnxDatapointTypes_DPT_UFlowRateLiter_h_Z
+        case "DPT_UTF_8":
+            return KnxDatapointTypes_DPT_UTF_8
+        case "DPT_UpDown":
+            return KnxDatapointTypes_DPT_UpDown
+        case "DPT_UpDown_Action":
+            return KnxDatapointTypes_DPT_UpDown_Action
+        case "DPT_ValueDemBOC":
+            return KnxDatapointTypes_DPT_ValueDemBOC
+        case "DPT_Value_1_Count":
+            return KnxDatapointTypes_DPT_Value_1_Count
+        case "DPT_Value_1_Ucount":
+            return KnxDatapointTypes_DPT_Value_1_Ucount
+        case "DPT_Value_2_Count":
+            return KnxDatapointTypes_DPT_Value_2_Count
+        case "DPT_Value_2_Ucount":
+            return KnxDatapointTypes_DPT_Value_2_Ucount
+        case "DPT_Value_4_Count":
+            return KnxDatapointTypes_DPT_Value_4_Count
+        case "DPT_Value_4_Ucount":
+            return KnxDatapointTypes_DPT_Value_4_Ucount
+        case "DPT_Value_Absolute_Temperature":
+            return KnxDatapointTypes_DPT_Value_Absolute_Temperature
+        case "DPT_Value_Acceleration":
+            return KnxDatapointTypes_DPT_Value_Acceleration
+        case "DPT_Value_Acceleration_Angular":
+            return KnxDatapointTypes_DPT_Value_Acceleration_Angular
+        case "DPT_Value_Activation_Energy":
+            return KnxDatapointTypes_DPT_Value_Activation_Energy
+        case "DPT_Value_Activity":
+            return KnxDatapointTypes_DPT_Value_Activity
+        case "DPT_Value_AirQuality":
+            return KnxDatapointTypes_DPT_Value_AirQuality
+        case "DPT_Value_Amplitude":
+            return KnxDatapointTypes_DPT_Value_Amplitude
+        case "DPT_Value_AngleDeg":
+            return KnxDatapointTypes_DPT_Value_AngleDeg
+        case "DPT_Value_AngleRad":
+            return KnxDatapointTypes_DPT_Value_AngleRad
+        case "DPT_Value_Angular_Frequency":
+            return KnxDatapointTypes_DPT_Value_Angular_Frequency
+        case "DPT_Value_Angular_Momentum":
+            return KnxDatapointTypes_DPT_Value_Angular_Momentum
+        case "DPT_Value_Angular_Velocity":
+            return KnxDatapointTypes_DPT_Value_Angular_Velocity
+        case "DPT_Value_Area":
+            return KnxDatapointTypes_DPT_Value_Area
+        case "DPT_Value_Capacitance":
+            return KnxDatapointTypes_DPT_Value_Capacitance
+        case "DPT_Value_Charge_DensitySurface":
+            return KnxDatapointTypes_DPT_Value_Charge_DensitySurface
+        case "DPT_Value_Charge_DensityVolume":
+            return KnxDatapointTypes_DPT_Value_Charge_DensityVolume
+        case "DPT_Value_Common_Temperature":
+            return KnxDatapointTypes_DPT_Value_Common_Temperature
+        case "DPT_Value_Compressibility":
+            return KnxDatapointTypes_DPT_Value_Compressibility
+        case "DPT_Value_Conductance":
+            return KnxDatapointTypes_DPT_Value_Conductance
+        case "DPT_Value_Curr":
+            return KnxDatapointTypes_DPT_Value_Curr
+        case "DPT_Value_Density":
+            return KnxDatapointTypes_DPT_Value_Density
+        case "DPT_Value_Electric_Charge":
+            return KnxDatapointTypes_DPT_Value_Electric_Charge
+        case "DPT_Value_Electric_Current":
+            return KnxDatapointTypes_DPT_Value_Electric_Current
+        case "DPT_Value_Electric_CurrentDensity":
+            return KnxDatapointTypes_DPT_Value_Electric_CurrentDensity
+        case "DPT_Value_Electric_DipoleMoment":
+            return KnxDatapointTypes_DPT_Value_Electric_DipoleMoment
+        case "DPT_Value_Electric_Displacement":
+            return KnxDatapointTypes_DPT_Value_Electric_Displacement
+        case "DPT_Value_Electric_FieldStrength":
+            return KnxDatapointTypes_DPT_Value_Electric_FieldStrength
+        case "DPT_Value_Electric_Flux":
+            return KnxDatapointTypes_DPT_Value_Electric_Flux
+        case "DPT_Value_Electric_FluxDensity":
+            return KnxDatapointTypes_DPT_Value_Electric_FluxDensity
+        case "DPT_Value_Electric_Polarization":
+            return KnxDatapointTypes_DPT_Value_Electric_Polarization
+        case "DPT_Value_Electric_Potential":
+            return KnxDatapointTypes_DPT_Value_Electric_Potential
+        case "DPT_Value_Electric_PotentialDifference":
+            return KnxDatapointTypes_DPT_Value_Electric_PotentialDifference
+        case "DPT_Value_Electrical_Conductivity":
+            return KnxDatapointTypes_DPT_Value_Electrical_Conductivity
+        case "DPT_Value_ElectromagneticMoment":
+            return KnxDatapointTypes_DPT_Value_ElectromagneticMoment
+        case "DPT_Value_Electromotive_Force":
+            return KnxDatapointTypes_DPT_Value_Electromotive_Force
+        case "DPT_Value_Energy":
+            return KnxDatapointTypes_DPT_Value_Energy
+        case "DPT_Value_Force":
+            return KnxDatapointTypes_DPT_Value_Force
+        case "DPT_Value_Frequency":
+            return KnxDatapointTypes_DPT_Value_Frequency
+        case "DPT_Value_Heat_Capacity":
+            return KnxDatapointTypes_DPT_Value_Heat_Capacity
+        case "DPT_Value_Heat_FlowRate":
+            return KnxDatapointTypes_DPT_Value_Heat_FlowRate
+        case "DPT_Value_Heat_Quantity":
+            return KnxDatapointTypes_DPT_Value_Heat_Quantity
+        case "DPT_Value_Humidity":
+            return KnxDatapointTypes_DPT_Value_Humidity
+        case "DPT_Value_Impedance":
+            return KnxDatapointTypes_DPT_Value_Impedance
+        case "DPT_Value_Length":
+            return KnxDatapointTypes_DPT_Value_Length
+        case "DPT_Value_Light_Quantity":
+            return KnxDatapointTypes_DPT_Value_Light_Quantity
+        case "DPT_Value_Luminance":
+            return KnxDatapointTypes_DPT_Value_Luminance
+        case "DPT_Value_Luminous_Flux":
+            return KnxDatapointTypes_DPT_Value_Luminous_Flux
+        case "DPT_Value_Luminous_Intensity":
+            return KnxDatapointTypes_DPT_Value_Luminous_Intensity
+        case "DPT_Value_Lux":
+            return KnxDatapointTypes_DPT_Value_Lux
+        case "DPT_Value_Magnetic_FieldStrength":
+            return KnxDatapointTypes_DPT_Value_Magnetic_FieldStrength
+        case "DPT_Value_Magnetic_Flux":
+            return KnxDatapointTypes_DPT_Value_Magnetic_Flux
+        case "DPT_Value_Magnetic_FluxDensity":
+            return KnxDatapointTypes_DPT_Value_Magnetic_FluxDensity
+        case "DPT_Value_Magnetic_Moment":
+            return KnxDatapointTypes_DPT_Value_Magnetic_Moment
+        case "DPT_Value_Magnetic_Polarization":
+            return KnxDatapointTypes_DPT_Value_Magnetic_Polarization
+        case "DPT_Value_Magnetization":
+            return KnxDatapointTypes_DPT_Value_Magnetization
+        case "DPT_Value_MagnetomotiveForce":
+            return KnxDatapointTypes_DPT_Value_MagnetomotiveForce
+        case "DPT_Value_Mass":
+            return KnxDatapointTypes_DPT_Value_Mass
+        case "DPT_Value_MassFlux":
+            return KnxDatapointTypes_DPT_Value_MassFlux
+        case "DPT_Value_Mol":
+            return KnxDatapointTypes_DPT_Value_Mol
+        case "DPT_Value_Momentum":
+            return KnxDatapointTypes_DPT_Value_Momentum
+        case "DPT_Value_Phase_AngleDeg":
+            return KnxDatapointTypes_DPT_Value_Phase_AngleDeg
+        case "DPT_Value_Phase_AngleRad":
+            return KnxDatapointTypes_DPT_Value_Phase_AngleRad
+        case "DPT_Value_Power":
+            return KnxDatapointTypes_DPT_Value_Power
+        case "DPT_Value_Power_Factor":
+            return KnxDatapointTypes_DPT_Value_Power_Factor
+        case "DPT_Value_Pres":
... 2652 lines suppressed ...