From a6a5e68444c3fd06975b03efde856df986fc714f Mon Sep 17 00:00:00 2001 From: Nikolay Miroshnichenko Date: Tue, 30 Jun 2026 20:23:05 +0200 Subject: [PATCH] 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 --- examples/demo-home/README.md | 21 +- .../generated/home-assistant-knx.yaml | 179 ++++++++---------- .../demo-home/generated/project_report.md | 45 +++-- 3 files changed, 118 insertions(+), 127 deletions(-) diff --git a/examples/demo-home/README.md b/examples/demo-home/README.md index 0f90254..31360e9 100644 --- a/examples/demo-home/README.md +++ b/examples/demo-home/README.md @@ -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. diff --git a/examples/demo-home/generated/home-assistant-knx.yaml b/examples/demo-home/generated/home-assistant-knx.yaml index 535df4f..b9ed625 100644 --- a/examples/demo-home/generated/home-assistant-knx.yaml +++ b/examples/demo-home/generated/home-assistant-knx.yaml @@ -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 diff --git a/examples/demo-home/generated/project_report.md b/examples/demo-home/generated/project_report.md index 3c14919..8e2c4c0 100644 --- a/examples/demo-home/generated/project_report.md +++ b/examples/demo-home/generated/project_report.md @@ -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