docs(example): regenerate demo-home outputs with colour + climate (Track A/D)

Regenerate examples/demo-home/generated/ with the current generator:
13 lights now carry RGBW/RGB/CCT colour, 6 climate zones assembled with
HA-doc-verified keys, sensors fold into climate where applicable.
README updated (entity counts, capability note) and records that the real
ETS6-signed round-trip was validated. Report source path sanitized (relative).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nikolay Miroshnichenko
2026-06-30 20:23:05 +02:00
co-authored by Claude Opus 4.8
parent 514caa5fd2
commit a6a5e68444
3 changed files with 118 additions and 127 deletions
+17 -4
View File
@@ -17,7 +17,7 @@ showcase of how the KNX (I/O) and Home Assistant (logic) layers fit together.
|---|---|
| `demo-home.knxproj` | The synthetic project: **239 group addresses, 47 ETS Functions**, 13 zones (living w/ fireplace, kitchen, master + 2 kids bedrooms each with ensuite, guest WC, laundry, 2 corridors, staircase). Lighting (switch/dim/CCT/RGBW), underfloor heating + AC, sensors, scenes. |
| `generated/project_report.md` | `project_report` output — inventory + 🔴🟡🔵 findings + HA mapping preview. |
| `generated/home-assistant-knx.yaml` | `generate_ha_package` output — KNX entities (switch/light/cover/binary_sensor/sensor) + a `review` list. **Nothing is dropped silently.** |
| `generated/home-assistant-knx.yaml` | `generate_ha_package` output — KNX entities (switch / light incl. **RGBW/RGB/CCT colour** / cover / **climate** / binary_sensor / sensor) + a `review` list. **Nothing is dropped silently.** |
| `generated/group-addresses.xml` / `.csv` | `generate_ets_group_addresses` output — ETS-importable. |
| `ha-brain/` | The Home Assistant **smart layer** on top of these entities — circadian lighting, multi-factor climate, presence/season/time logic, statistics. See its own [README](ha-brain/README.md). |
@@ -40,8 +40,18 @@ dimmer has an on/off status, so it isn't flagged for its missing brightness stat
future release.
Inventory: 239 GAs · 47 Functions · 0 errors that block parsing. The HA generator produced
**19 switches, 13 lights, 6 covers, 13 binary sensors, 63 sensors**, with 18/19 switches getting a
`state_address` paired via ETS Function roles.
**19 switches, 13 lights (incl. RGBW / RGB / CCT colour), 6 covers, 6 climate zones, 13 binary
sensors, 41 sensors** — on/off, brightness, colour and climate command/status pairs assembled into
multi-address entities, with 18/19 switches getting a `state_address` paired via ETS Function roles.
> **Generated by the current tool.** Lights carry `rgbw_address` / `color_address` /
> `color_temperature_address` (+ `color_temperature_mode`) where the project has colour; `climate`
> entities carry `temperature_address`, `target_temperature_state_address`, `operation_mode_address`
> and `command_value_state_address` — keys verified against the Home Assistant KNX docs. A `climate`
> is emitted only when its required keys are present, otherwise the zone is sent to `review`, so an
> invalid entity is never written. Reserve / logic / scratch group addresses are classified and kept
> out of the error and missing-status checks (none in this clean synthetic project, but it stops the
> tool crying wolf on real ones).
## ⚠️ Caveats (please read)
@@ -53,7 +63,10 @@ Inventory: 239 GAs · 47 Functions · 0 errors that block parsing. The HA genera
that signature can't be forged (by design). So: use this file with xknxproject-based tooling.
To get a real, ETS-signed project, **import the group-address export** (`generated/group-addresses.xml`)
into a fresh ETS project via *Import Group Addresses* and **export** from ETS — that file opens
everywhere and is the gold standard.
everywhere and is the gold standard. **This round-trip was done and validated:** a KNX engineer
imported the export into ETS6 and sent back a real signed `.knxproj`, and the tool ran the full
pipeline on it cleanly (note that an *Import Group Addresses* round-trip does not carry ETS
Functions, so command/status pairing then relies on naming alone).
- **The flaws are on purpose.** Do not "fix" them — they are the point.
- **`ha-brain/` is a design demo.** Valid Home Assistant YAML built on best practices, but not
deployed against a live bus here; entity IDs assume the names `generate_ha_package` produces.
@@ -2,7 +2,7 @@
# Source project: Nikolay Demo House
# REVIEW before use: command/status pairing is inferred heuristically.
# Multi-GA fixtures (light/cover/climate) and scenes need manual verification.
# 65 group address(es) need manual review (see the 'review' list); nothing is dropped silently.
# 50 group address(es) need manual review (see the 'review' list); nothing is dropped silently.
knx:
switch:
@@ -11,24 +11,24 @@ knx:
- name: Living room fireplace on/off
address: 0/3/0
state_address: 0/4/0
- name: Kitchen island pendants switch
address: 1/0/12
state_address: 1/4/12
- name: Master bath mirror CCT switch
address: 1/0/26
state_address: 1/4/26
- name: Kids room 1 ceiling switch
address: 1/0/30
state_address: 1/4/30
- name: Kids room 1 RGB accent switch
address: 1/0/31
state_address: 1/4/31
- name: Living room ceiling spots switch
address: 1/0/1
state_address: 1/4/1
- name: Living room fireplace floor lamp switch
address: 1/0/4
state_address: 1/4/4
- name: Kitchen main ceiling switch
address: 1/0/10
state_address: 1/4/10
- name: Master bedroom wardrobe LED switch
address: 1/0/23
state_address: 1/4/23
- name: Master bath ceiling switch
address: 1/0/25
state_address: 1/4/25
- name: Kids bath 1 ceiling switch
address: 1/0/35
state_address: 1/4/35
- name: Kids room 2 ceiling switch
address: 1/0/40
state_address: 1/4/40
- name: Kids room 2 desk light switch
address: 1/0/41
state_address: 1/4/41
@@ -37,7 +37,6 @@ knx:
state_address: 1/4/45
- name: Guest WC ceiling switch
address: 1/0/50
state_address: 1/4/1
- name: Laundry ceiling switch
address: 1/0/55
state_address: 1/4/55
@@ -66,23 +65,27 @@ knx:
- name: Living room cove brightness
brightness_address: 1/2/2
brightness_state_address: 1/5/2
address: 1/0/1
state_address: 1/4/1
address: 1/0/2
state_address: 1/4/2
- name: Living room RGBW accent wall brightness
brightness_address: 1/2/3
brightness_state_address: 1/5/3
address: 1/0/2
state_address: 1/4/2
address: 1/0/3
state_address: 1/4/3
rgbw_address: 1/3/3
rgbw_state_address: 1/6/3
- name: Kitchen worktop LED brightness
brightness_address: 1/2/11
brightness_state_address: 1/5/12
address: 1/0/10
state_address: 1/4/10
address: 1/0/11
state_address: 1/4/11
color_temperature_address: 1/3/11
color_temperature_mode: absolute
color_temperature_state_address: 1/6/11
- name: Kitchen island pendants brightness
brightness_address: 1/2/12
brightness_state_address: 1/5/12
address: 1/0/11
state_address: 1/4/11
address: 1/0/12
state_address: 1/4/12
- name: Master bedroom ceiling brightness
brightness_address: 1/2/20
brightness_state_address: 1/5/20
@@ -101,23 +104,28 @@ knx:
- name: Master bath mirror CCT brightness
brightness_address: 1/2/26
brightness_state_address: 1/5/26
address: 1/0/23
state_address: 1/4/23
address: 1/0/26
state_address: 1/4/26
color_temperature_address: 1/3/26
color_temperature_mode: absolute
color_temperature_state_address: 1/6/26
- name: Kids room 1 ceiling brightness
brightness_address: 1/2/30
brightness_state_address: 1/5/30
address: 1/0/3
state_address: 1/4/3
address: 1/0/30
state_address: 1/4/30
- name: Kids room 1 RGB accent brightness
brightness_address: 1/2/31
brightness_state_address: 1/5/31
address: 1/0/4
state_address: 1/4/4
address: 1/0/31
state_address: 1/4/31
color_address: 1/3/31
color_state_address: 1/6/31
- name: Kids room 2 ceiling brightness
brightness_address: 1/2/40
brightness_state_address: 1/5/40
address: 1/0/25
state_address: 1/4/25
address: 1/0/40
state_address: 1/4/40
- name: Staircase LED steps brightness
brightness_address: 1/2/65
brightness_state_address: 1/5/65
@@ -153,6 +161,43 @@ knx:
move_short_address: 2/1/30
position_address: 2/2/30
position_state_address: 2/6/1
climate:
- name: Living room HVAC mode
temperature_address: 4/0/1
target_temperature_state_address: 3/4/1
target_temperature_address: 3/0/1
operation_mode_address: 3/1/1
command_value_state_address: 3/6/1
- name: Kitchen HVAC mode
temperature_address: 4/0/2
target_temperature_state_address: 3/4/2
target_temperature_address: 3/0/2
operation_mode_address: 3/1/2
command_value_state_address: 3/6/2
- name: Master bedroom HVAC mode
temperature_address: 4/0/3
target_temperature_state_address: 3/4/3
target_temperature_address: 3/0/3
operation_mode_address: 3/1/3
command_value_state_address: 2/6/10
- name: Master bath HVAC mode
temperature_address: 4/0/4
target_temperature_state_address: 3/4/4
target_temperature_address: 3/0/4
operation_mode_address: 3/1/4
command_value_state_address: 3/6/4
- name: Kids room 1 HVAC mode
temperature_address: 4/0/5
target_temperature_state_address: 3/4/5
target_temperature_address: 3/0/5
operation_mode_address: 3/1/5
command_value_state_address: 3/6/5
- name: Kids bath 1 HVAC mode
temperature_address: 4/0/6
target_temperature_state_address: 3/4/6
target_temperature_address: 3/0/6
operation_mode_address: 3/1/6
command_value_state_address: 3/6/6
binary_sensor:
- name: Master bath presence
state_address: 4/4/4
@@ -181,36 +226,6 @@ knx:
- name: HVAC controller fault
state_address: 6/1/1
sensor:
- name: Kitchen worktop LED colour temp
state_address: 1/3/11
type: 2byte_unsigned
- name: Master bath mirror CCT colour temp
state_address: 1/3/26
type: 2byte_unsigned
- name: Kitchen worktop LED colour temp status
state_address: 1/6/11
type: 2byte_unsigned
- name: Master bath mirror CCT colour temp status
state_address: 1/6/26
type: 2byte_unsigned
- name: Living room heating setpoint
state_address: 3/0/1
type: temperature
- name: Kitchen heating setpoint
state_address: 3/0/2
type: temperature
- name: Master bedroom heating setpoint
state_address: 3/0/3
type: temperature
- name: Master bath heating setpoint
state_address: 3/0/4
type: temperature
- name: Kids room 1 heating setpoint
state_address: 3/0/5
type: temperature
- name: Kids bath 1 heating setpoint
state_address: 3/0/6
type: temperature
- name: Kids room 2 heating setpoint
state_address: 3/0/7
type: temperature
@@ -244,24 +259,6 @@ knx:
- name: Kids room 2 AC setpoint
state_address: 3/0/27
type: temperature
- name: Living room heating setpoint status
state_address: 3/4/1
type: temperature
- name: Kitchen heating setpoint status
state_address: 3/4/2
type: temperature
- name: Master bedroom heating setpoint status
state_address: 3/4/3
type: temperature
- name: Master bath heating setpoint status
state_address: 3/4/4
type: temperature
- name: Kids room 1 heating setpoint status
state_address: 3/4/5
type: temperature
- name: Kids bath 1 heating setpoint status
state_address: 3/4/6
type: temperature
- name: Kids room 2 heating setpoint status
state_address: 3/4/7
type: temperature
@@ -295,24 +292,6 @@ knx:
- name: Kids room 2 AC setpoint status
state_address: 3/4/27
type: temperature
- name: Living room temperature
state_address: 4/0/1
type: temperature
- name: Kitchen temperature
state_address: 4/0/2
type: temperature
- name: Master bedroom temperature
state_address: 4/0/3
type: temperature
- name: Master bath temperature
state_address: 4/0/4
type: temperature
- name: Kids room 1 temperature
state_address: 4/0/5
type: temperature
- name: Kids bath 1 temperature
state_address: 4/0/6
type: temperature
- name: Kids room 2 temperature
state_address: 4/0/7
type: temperature
+22 -23
View File
@@ -1,6 +1,6 @@
# KNX Project Report — Nikolay Demo House
- **Source:** `demo-home.knxproj`
- **Source:** `examples/demo-home/demo-home.knxproj`
- **GA style:** ThreeLevel
- **ETS tool version:** 6.1.5686.0 (xknxproject 3.9.0)
- **Last modified:** 2026-06-28T10:00:00Z
@@ -15,9 +15,9 @@
- KNX Data Secure GAs: **0**
**By category:** diagnostics=10, energy=2, hvac=77, lighting=100, scene=4, sensor=15, shutter=26, unknown=5
**By category:** diagnostics=10, energy=2, hvac=77, lighting=106, scene=4, sensor=13, shutter=26, unknown=1
**By kind:** command=100, sensor=55, status=81, unknown=3
**By kind:** command=104, sensor=53, status=81, unknown=1
## 2. Findings
@@ -51,10 +51,10 @@ Totals: 🔴 errors **2**, 🟡 warnings **10**, 🔵 info **0**
## 3. Home Assistant mapping preview
Entities that can be generated now: switch **19**, light **13**, cover **6**, binary_sensor **13**, sensor **63**.
Entities that can be generated now: switch **19**, light **13**, cover **6**, climate **6**, binary_sensor **13**, sensor **41**.
**Needs manual review (65):**
**Needs manual review (50):**
- `0/1/2` All blinds down — verify_cover_mapping
- `2/0/1` Living room window blind up/down — verify_cover_mapping
@@ -63,26 +63,17 @@ Entities that can be generated now: switch **19**, light **13**, cover **6**, bi
- `2/0/20` Kids room 1 blind up/down — verify_cover_mapping
- `2/0/30` Kids room 2 blind up/down — verify_cover_mapping
- `0/1/1` All lights off — switch_without_status
- `0/0/1` Scene All off — manual_scene
- `0/0/2` Scene Movie — manual_scene
- `0/0/3` Scene Night — manual_scene
- `0/0/4` Scene Away — manual_scene
- `1/3/3` Living room RGBW accent wall colour — unmapped_dpt
- `1/3/31` Kids room 1 RGB accent colour — unmapped_dpt
- `1/6/3` Living room RGBW accent wall colour status — unmapped_dpt
- `1/6/31` Kids room 1 RGB accent colour status — unmapped_dpt
- `3/1/1` Living room HVAC mode — manual_climate
- `3/1/2` Kitchen HVAC mode — manual_climate
- `3/1/3` Master bedroom HVAC mode — manual_climate
- `3/1/4` Master bath HVAC mode — manual_climate
- `3/1/5` Kids room 1 HVAC mode — manual_climate
- `3/1/6` Kids bath 1 HVAC mode — manual_climate
- `3/1/7` Kids room 2 HVAC mode — manual_climate
- `3/1/8` Kids bath 2 HVAC mode — manual_climate
- `1/0/50` Guest WC ceiling switch — switch_without_status
- `3/1/9` Guest WC HVAC mode — manual_climate
- `3/1/10` Laundry HVAC mode — manual_climate
- `3/1/11` Corridor GF HVAC mode — manual_climate
- `3/1/12` Corridor UF HVAC mode — manual_climate
- `0/0/1` Scene All off — manual_scene
- `0/0/2` Scene Movie — manual_scene
- `0/0/3` Scene Night — manual_scene
- `0/0/4` Scene Away — manual_scene
- `3/1/7` Kids room 2 HVAC mode — manual_climate
- `3/1/8` Kids bath 2 HVAC mode — manual_climate
- `3/1/21` Living room AC mode — manual_climate
- `3/1/22` Kitchen AC mode — manual_climate
- `3/1/23` Master bedroom AC mode — manual_climate
@@ -102,11 +93,19 @@ Entities that can be generated now: switch **19**, light **13**, cover **6**, bi
- `1/1/65` Staircase LED steps dim — not_mapped
- `2/3/1` Living room window blind slat — shutter_slat_unattached
- `2/3/10` Master bedroom blind slat — shutter_slat_unattached
- `2/6/10` Master bedroom blind slat status — shutter_slat_unattached
- `3/3/21` Living room AC fan speed — not_mapped
- `3/3/22` Kitchen AC fan speed — not_mapped
- `3/3/23` Master bedroom AC fan speed — not_mapped
- … and 15 more
- `3/3/25` Kids room 1 AC fan speed — not_mapped
- `3/3/27` Kids room 2 AC fan speed — not_mapped
- `3/6/3` Master bedroom floor valve status — not_mapped
- `3/6/7` Kids room 2 floor valve status — not_mapped
- `3/6/8` Kids bath 2 floor valve status — not_mapped
- `3/6/9` Guest WC floor valve status — not_mapped
- `3/6/10` Laundry floor valve status — not_mapped
- `3/6/11` Corridor GF floor valve status — not_mapped
- `3/6/12` Corridor UF floor valve status — not_mapped
- `4/2/1` Living room CO2 — not_mapped
## 4. Next steps