Files
nickol-knx-mcp/CHANGELOG.md
T
Nikolay MiroshnichenkoandClaude Opus 4.8 1fc64a7a89 Polish shutter slats and diagnostics alarms (HA mapping)
- 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>
2026-06-28 10:49:24 +02:00

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_address instead of becoming a standalone cover; an unmatched slat is flagged shutter_slat_unattached for manual attachment rather than emitted wrong.
  • A 1-bit diagnostics GA (wind/frost/rain/smoke/leak alarm, fault) is now a read-only binary_sensor instead 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 review output, 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 actionable shutter_incomplete_dpt review 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) in pairing.function_status_pairs(), used by both check_missing_status and the HA generator. A feedback GA named only "Status" now pairs correctly (name tokens not needed), HA entities get the right state_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_project MCP tool recursed infinitely (RecursionError) on every real .knxproj because 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 .knxproj parsing via xknxproject (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 review list 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.md design 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 .knxproj testing is ongoing (see the call for testers in the README).