mirror of
https://github.com/NickoScope/nickol-knx-mcp.git
synced 2026-09-30 03:41:58 +02:00
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>
56 lines
1.7 KiB
YAML
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
|