This guide explains how to prepare your ETS project, configure the generator, and understand how KNX data types are mapped to OpenHAB items.
The config.json file controls global settings for the generator.
-
drop_words: A list of words to remove from item labels to keep them short.- Example: If you have a group address "Kitchen Light Right", and "Light" is in
drop_words, the label becomes "Kitchen Right" (assuming the icon already indicates it's a light). - Note: Words are NOT dropped if doing so would result in an empty label.
- Example: If you have a group address "Kitchen Light Right", and "Light" is in
-
openhab_path: The output directory for generated files.- Default is
openhab. - If running on the OpenHAB server, this might point to
/etc/openhab.
- Default is
-
dimmer: Configuration for dimmer detection.absolut_suffix: Suffixes in the GA name identifying the absolute dimming value (e.g., "Dimmen absolut", "Helligkeitswert").status_suffix: Suffixes identifying the status GA (e.g., "Status Dimmwert", "Rückmeldung Dimmen").
-
switch: Configuration for switch detection.status_suffix: Suffixes identifying the status GA (e.g., "Status", "Rückmeldung").
The generator relies partly on your ETS project structure and naming conventions. You can also use the Description field of Group Addresses (GAs) in ETS to pass special instructions.
You can add multiple tags to a GA's description field, separated by semicolons (;).
| Tag | Effect | Example |
|---|---|---|
influx |
Automatically persist this item to InfluxDB. | influx |
debug |
Adds a visibility tag. Item is hidden unless extended_view is enabled. |
debug;influx |
semantic=... |
Overrides the default Semantic Model tag. See options. | semantic=Projector |
icon=... |
Sets a specific icon. | icon=pump |
location |
Adds location tags to the first two layers of the GA structure. | location |
ignore |
Completely skips importing this GA. | ignore |
| Scene Mapping | Maps raw scene numbers to text labels. | 1='Cooking', 2='TV' |
Example Description:
semantic=Pump;icon=pump;debug;influx
The generator automatically determines the OpenHAB Item type based on the Data Point Type (DPT) assigned in ETS.
| ETS DPT | OpenHAB Item | Unit/Note | Semantic |
|---|---|---|---|
| DPST-1-1 | Switch | On/Off | Control |
| DPST-1-5 | Switch | Alarm | Alarm |
| DPST-1-11 | Switch | Status | Measurement, Status |
| DPST-1-19 | Contact | Window/Door Contact | OpenState, Opening |
| DPST-1-24 | Switch | Window Day/Night | Control |
| DPST-1-100 | Switch | Heating/Cooling Status | Measurement, Status |
| DPST-5-1 | Dimmer | Percentage (0-100%) | Measurement |
| DPST-5-010 | Number:Dimensionless | HVAC Mode (Komfort/Standby/Nacht/Frostschutz) | HVAC |
| DPST-7-12 | Number:ElectricCurrent | Ampere (A) | Measurement, Current |
| DPST-9-1 | Number:Temperature | Temperature (°C) | Measurement, Temperature |
| DPST-9-4 | Number:Illuminance | Brightness (Lux) | Measurement, Light |
| DPST-9-5 | Number:Speed | Wind Speed (m/s) | Measurement, Wind |
| DPST-9-7 | Number:Dimensionless | Humidity (%) | Measurement, Humidity |
| DPST-9-8 | Number:Dimensionless | Air Quality (ppm) | Measurement |
| DPST-12-1200 | Number:Volume | Volume (L) | Measurement, Volume |
| DPST-13-10 | Number:Energy | Energy (Wh) | Measurement, Energy |
| DPST-13-100 | Number:Time | Duration/Time | Measurement, Duration |
| DPST-14-56 | Number:Power | Power (W) | Measurement, Power |
| DPST-16-0 / DPT-16 | String | Text/String | - |
| DPST-17-1 | Number | Scene Number | - |
| DPST-19-1 | DateTime | Date and Time | - |
| DPST-20-102 | Number:Dimensionless | HVAC Mode (with Alexa/HomeKit) | HVAC |
Notes:
- DPTs with "Number:X" use OpenHAB's Unit of Measurement (UoM) system
- Some DPTs have specific Alexa/HomeKit integrations configured (e.g., Temperature, Humidity, Window Contact)
- HVAC modes (DPST-5-010, DPST-20-102) include predefined state options (Komfort=1, Standby=2, Nacht=3, Frostschutz=4)
Some complex items require specific naming conventions to be detected correctly, as the DPT alone is not sufficient to group them properly.
- Detects Rollershutters based on common naming patterns in the GA name.
- Combines multiple GAs:
- Up/Down: "Auf/Ab", "Jalousie Auf/Ab", "Rollladen Auf/Ab" (DPST-1-8)
- Stop: "Stop", "Stopp", "Lamellenverstellung / Stopp" (DPST-1-10, DPST-1-9, DPST-1-7)
- Absolute Position: "absolute Position" (DPST-5-1)
- Status: "Status", "Rückmeldung", "Status aktuelle Position" (DPST-5-1)
- Looks for a pair or trio of GAs:
- Control GA: Name ends with configured
absolut_suffix(e.g., "Dimmen absolut", "Helligkeitswert"). - Status GA: Name ends with
status_suffix(e.g., "Status Dimmwert", "Rückmeldung Dimmen"). - Switch GA (optional): Name ends with switch suffix (e.g., "Schalten", "Ein/Aus").
- Switch Status GA (optional): Name ends with switch status suffix (e.g., "Status Ein/Aus", "Rückmeldung").
- Control GA: Name ends with configured
- The generator merges these into a single OpenHAB
Dimmeritem. - Special metadata override for specific dimmer types:
- Farbtemperatur: Color temperature control (no Alexa/HomeKit)
- Lamellenposition: Blind slat position (with Alexa TiltAngle & HomeKit support)
- Stellwert: HVAC actuator value
- Looks for a Status GA with the same base name +
status_suffix. - Example: "Licht Küche" (Cmd) + "Licht Küche Status" (Status) → Single Switch Item with status feedback.
- Metadata override based on switch name:
- Licht: Mapped to Light equipment with Alexa/HomeKit integration
- Steckdose: Mapped to PowerOutlet
- Heizen: Mapped to HVAC/Heating
- Audio: Mapped to Speaker
- Combines heating mode GAs:
- Mode Control: "Betriebsmodus", "Betriebsartvorwahl" (DPST-5-010, DPST-20-102)
- Mode Status: "Status Betriebsmodus", "DPT_HVAC Mode: Reglerstatus senden" (DPST-5-010, DPST-20-102)
- Cause: DPT is missing or not specific enough in ETS.
- Fix: Open ETS, select the Group Address, and ensure the correct "Data Type" is selected (e.g., set to "temperature (℃)" instead of just "2-byte float").
- Cause: Naming mismatch between Control and Status GAs.
- Fix: Check
config.jsonfordimmer.absolut_suffixanddimmer.status_suffix, and ensure your ETS names match exactly with one of the configured suffixes.
- Cause: GA names don't match the expected patterns.
- Fix: Ensure your GAs follow common naming conventions like "Auf/Ab", "Stop", "absolute Position" or add custom suffixes to the
rollershuttersection inconfig.json.
- Fix: Add common words (like "Licht", "Steckdose", "Fensterkontakt") to the
drop_wordslist inconfig.json.
- Cause: Wrong DPT selected in ETS.
- Fix: Use DPST-5-010 or DPST-20-102 for heating modes. These DPTs have predefined options (1=Komfort, 2=Standby, 3=Nacht, 4=Frostschutz).
- Cause: Unit of Measurement (UoM) not configured or DPT doesn't specify units.
- Fix: Use specific DPTs like DPST-9-1 for temperature, DPST-14-56 for power, etc. Generic DPTs (like 9.xxx without subtype) may not include units.