Files
nickol-knx-mcp/nickol_knx_mcp/room_templates/bathroom.yaml
T
Nikolay1andClaude Opus 4.8 bf7eba8898 room-library: Theben-benchmark corrections (dogfood on 5 official ETS examples)
Ran KNX Association-ecosystem vendor (Theben) 5 official ETS example .knxproj
through our QA. Findings folded back into the product:

- repair.py _infer_dpt: relative dimming (Brighter/darker, heller/dunkler,
  светлее/темнее) now infers 3.007 DPT_Control_Dimming instead of falling to
  1.001; explicit '% / value' stays 5.001; scene checked before the broad
  value branch. DPTs verified against XKNX/xknx via deepwiki.
- room_library.py: new reusable blocks distilled from vendor patterns —
  shutter_venetian (slat + slat-status + wind/frost safety-lock), climate_floor
  modulating actuating-value + status, ventilation (airing stage + CO2 +
  humidity), lighting_dali, multisensor_air, central scene/all-off/all-on.
- project.py classifier: airing/Lüftung/проветривание -> hvac (was unknown).
- analyze.py: safety_input_no_status INFO exemption for write-only wind/frost
  lock inputs (Theben central wind-safety pattern).
- SCHEMA.md: new function rows; automation_intents implementation: knx|external
  with safety_related => knx rule; DPT-tolerance note (missing-DPT hard error
  applies to generated output; ETS4 object-derived DPT on import is legitimate).
- templates: ventilation slot (bathroom/kitchen), opt-in venetian + wind/frost
  safety intent (living/bedroom), new house-level central.yaml.
- tests: +test_theben_corrections.py (10); golden bedroom 26->28 GA (climate
  actuating-value). pytest 20 passed (pre-existing unrelated test_protocol
  collection error untouched). senior-code-audit: APPROVED.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 11:21:18 +02:00

56 lines
1.7 KiB
YAML

# Room Template — Bathroom / WC (Санузел)
schema_version: 1
slot_id: bathroom
labels:
ru: Санузел
en: Bathroom
parameters:
lighting_circuits:
default: 1
provenance: {source: preset_rule, note: "1 ceiling circuit"}
windows:
default: 0
provenance: {source: preset_rule, note: "many bathrooms are windowless"}
area_m2:
default: 6
role: hint
provenance: {source: preset_default, user_overridden: false}
slots:
- slot_id: main_light
labels: {ru: свет, en: light}
presets:
basic: {enabled: true, function: lighting_switch, multiplicity: {param: lighting_circuits}}
comfort: {enabled: true, function: lighting_switch, multiplicity: {param: lighting_circuits}}
- slot_id: mirror_light
labels: {ru: свет зеркала, en: mirror light}
presets:
basic: {enabled: false}
comfort: {enabled: true, function: lighting_switch, multiplicity: {fixed: 1}}
- slot_id: window
labels: {ru: окно, en: window}
presets:
basic: {enabled: true, function: shutter, multiplicity: {param: windows}}
comfort: {enabled: true, function: shutter, multiplicity: {param: windows}}
- slot_id: floor_heating
labels: {ru: тёплый пол, en: floor heating}
presets:
basic: {enabled: false}
comfort: {enabled: true, function: climate_floor, multiplicity: {fixed: 1}}
- slot_id: ventilation
labels: {ru: вентиляция, en: ventilation}
presets:
basic: {enabled: false}
comfort: {enabled: true, function: ventilation, multiplicity: {fixed: 1}}
automation_intents:
- intent: humidity_ventilation
description: "Run ventilation above a humidity threshold."
criticality: convenience
implementation: external