Protocols and data types

What Tinkerbus implements of KNXnet/IP, cEMI, device management services, KNX USB and datapoint types.

The bus protocol code lives under internal/falcon, the datapoint code under internal/dpt.

KNXnet/IP

PartStatus
Search (multicast) and description of a gatewayImplemented, used by the application and knxprobe -discover, -describe
Tunnelling over UDPImplemented, with unit tests, and used against real gateways in development
Tunnelling over TCP (KNXnet/IP v2)Implemented, with unit tests. A gateway closes a tunnel that stays silent for about two minutes, so the connection state request is sent every 60 seconds on TCP as on UDP, and the tunnel is closed when the gateway does not answer
Device management connectionImplemented (reading and writing the gateway’s own interface objects). The tools use it to open and close a connection only
Routing (multicast, default 224.0.23.12:3671)Implemented in the library (at most 50 frames per second, busy handling). Not used by the application or the tools. Not tested on hardware
IP Secure (secure sessions, secure routing)Not implemented. It would need the specification or a secure gateway to test against, and nothing is guessed

cEMI and application layer

Frames are decoded and built as cEMI L_Data requests, confirmations and indications. The application layer covers group value read, response and write, and the management services the programming code uses:

  • device descriptor and device object property reads,
  • memory reads and writes, including extended memory services,
  • extended property services and function property commands,
  • individual address read and write, programming-mode query,
  • authorization with an access key,
  • restart.

Writing services are refused by the bus client unless writes were enabled for a specific device. See safety.

KNX USB

The library can enumerate KNX USB interfaces and open one on Linux through hidraw. On other platforms it reports “unsupported”. The application does not use USB. knxprobe -usb-list lists interfaces. USB has not been tested on hardware.

Datapoint types

Datapoint type layouts come from the KNX master data (knx_master.xml), not from a built-in table. The master data is taken from the open project, or downloaded once into the catalog folder on request (or automatically, if you switched that on in the catalog). Values that cannot be decoded are shown as raw octets.

  • Decoding shows values with their unit, for example 21.5 °C. Special formats exist for time (DPST-10-1) and date (DPST-11-1). Fields that use constructs the decoder does not model are skipped.
  • Encoding accepts the text a user types and produces the wire octets: single-field types take 21.5, 50 %, on or an enumeration name; date and time take 2026-10-12 and Mon 14:05:09; other multi-field types take the fields in order, optionally named, separated by commas (Increase, StepCode: 3). Text types accept printable ASCII. A value shown by the decoder is accepted again as input.
  • The group address editor offers the data types by identifier (DPST-9-1).

A group address without a data type can be read but not written from the application.