Data type functions
knxdatatype object provides data encoding and decoding between Lua and KNX data formats.
knxdatatype.decode(value, datatype)
Converts hex-encoded data to Lua variable based on given data type. Data type is specified either as KNX primary data type (integer between 1 and 16) or a secondary data type (integer between 1000 and 16000).
Return values:
- success — decoded data as Lua variable (type depends on data type), value length in bytes
- error — nil, error string
Data types
The following data types can be used for encoding and decoding of KNX data. Data representation on Lua level and predefined constants (in bold) is given below:
- 1. 1 bit (boolean) - dt.bool — boolean
- 2. 2 bit (1 bit controlled) - dt.bit2 — number
- 3. 4 bit (3 bit controlled) - dt.bit4 — number
- 4. 1 byte ASCII character - dt.char — string
- 5. 1 byte unsigned integer - dt.uint8 — number
- 6. 1 byte signed integer - dt.int8 — number
- 7. 2 byte unsigned integer - dt.uint16 — number
- 8. 2 byte signed integer - dt.int16 — number
- 9. 2 byte floating point - dt.float16 — number
- 10. 3 byte time / day - dt.time — table with the following items:
- day — number (0-7)
- hour — number (0-23)
- minute — number (0-59)
- second — number (0-59)
- 11. 3 byte date - dt.date — table with the following items:
- day — number (1-31)
- month — number (1-12)
- year — number (1990-2089)
- 12. 4 byte unsigned integer - dt.uint32 — number
- 13. 4 byte signed integer - dt.int32 — number
- 14. 4 byte floating point - dt.float32 — number
- 15. 4 byte access control - dt.access — number, currently not fully supported
- 16. 14 byte ASCII string - dt.string — string, null characters ('\0') are discarded during decoding