mirror of
https://github.com/NickoScope/nickol-knx-mcp.git
synced 2026-09-29 19:31:12 +02:00
- Venetian slat GAs (Lamelle/slat/tilt) attach to their parent blind cover as move_short_address instead of becoming standalone covers; unmatched slats are flagged shutter_slat_unattached for manual attachment. - 1-bit diagnostics GAs (wind/frost/smoke/leak alarm, fault) become a read-only binary_sensor instead of a phantom command switch. - Add regression tests for both. Backlog item #6 from VALIDATION-FINDINGS, surfaced by real ETS fixtures. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.4 KiB
3.4 KiB
Changelog
All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Venetian-blind slats are handled as the blind's tilt: a slat GA (Lamelle / slat /
ламель / tilt) is attached to its parent blind cover as
move_short_addressinstead of becoming a standalone cover; an unmatched slat is flaggedshutter_slat_unattachedfor manual attachment rather than emitted wrong. - A 1-bit diagnostics GA (wind/frost/rain/smoke/leak alarm, fault) is now a read-only
binary_sensorinstead of a phantom command switch. - HA generation never drops a group address silently ("no silent caps"): every GA is
either emitted as an entity or listed in the
reviewoutput, and the YAML header states how many need manual review. - Shutter classification now recognises German/directional names (
Behang,Lamelle,auf/ab,Raffstore,Markise, plus RU equivalents). A shutter-looking command whose DPT lacks a sub-type gets an actionableshutter_incomplete_dptreview hint (set 1.008 / 1.010 / 5.001 in ETS) instead of vanishing. - ETS Function role pairing (the headline feature) is now actually wired up.
command↔status pairs are taken from ETS Function roles (e.g.
SwitchOnOff↔InfoOnOff) inpairing.function_status_pairs(), used by bothcheck_missing_statusand the HA generator. A feedback GA named only "Status" now pairs correctly (name tokens not needed), HA entities get the rightstate_address, and function-paired commands are no longer false-flagged as missing a status. Found because real ETS6 projects exposed that Functions were previously ignored despite the README.
Fixed
- Critical:
load_projectMCP tool recursed infinitely (RecursionError) on every real.knxprojbecause the server tool function shadowed the imported project loader. The tool now delegates correctly. Added a regression test that fails on recursion. Found via end-to-end testing against real ETS5/ETS6 project files.
0.1.0 — 2026-06-28
Initial public beta.
Added
- Design-time MCP server with 12 tools:
load_project,list_group_addresses,get_devices,get_topology,check_naming,check_missing_status,check_dpt,analyze_all,generate_ha_package,generate_ets_group_addresses,project_report,workspace_info. - Read-only
.knxprojparsing viaxknxproject(ETS5/ETS6, password-protected supported). - GA classification (category + kind) from DPT and multilingual (EN/DE/RU) name keywords.
- Naming, missing-status, and DPT validation checks.
- Home Assistant KNX YAML generation with a conservative
reviewlist for ambiguous items. - ETS-importable group-address export in XML (
knx.org/xml/ga-export/01) and CSV. - Markdown project report.
- Confined-workspace write guarantee (
NICKOL_KNX_WORKSPACE); no bus access by design. CLAUDE.mddesign playbook, end-to-end smoke test (synthetic 16-GA project), example Claude Desktop config.
Known limitations
- Tested end-to-end on a synthetic project only; real-world
.knxprojtesting is ongoing (see the call for testers in the README).