Commit Graph
6 Commits
Author SHA1 Message Date
Nikolay MiroshnichenkoandClaude Opus 4.8 64bb4c87e6 HA mapping: full dimmable lights, wider shutters, datetime DPTs
Round-2 fixes found by running against more public ETS4/5/6 fixtures (yene
DemoCase, KnxProjParser, knxray, open-knxviewer):
- Lights assemble both on/off and brightness status via identity-based pairing
  and fold the on/off command into one light entity (no duplicate switch),
  pairing even when device identity is a single name token. Switches too.
- Cover up/down recognised on 1.008 or any 1.x named up/down; stop on
  1.007/1.010/1.017 or a stop-name. Siblings attach only to the same shutter
  (zone-identity guard) so multiple blinds don't cross-wire.
- Date/time/text DPTs (10/11/16/19) route to review (manual_datetime/manual_text).
- Add regression tests for all three.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 11:26:09 +02:00
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
Nikolay MiroshnichenkoandClaude Opus 4.8 53e5630d45 HA: no silent drops + smarter shutter classification
- generate_ha now lists every unmapped GA in `review` instead of dropping it
  silently ("no silent caps"); YAML header reports the review count.
- Shutter category recognises German/directional names (Behang, Lamelle,
  auf/ab, Raffstore, Markise, RU equivalents). Shutter-looking commands with an
  incomplete DPT get an actionable `shutter_incomplete_dpt` review hint instead
  of vanishing.
- Add regression tests for both.

Backlog items #4 and #5 from VALIDATION-FINDINGS, surfaced by real ETS fixtures.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:42:22 +02:00
Nikolay MiroshnichenkoandClaude Opus 4.8 29d39dc147 Wire up ETS Function role pairing for command/status
Implement pairing.function_status_pairs(): pair command<->status GAs from ETS
Function roles (SwitchOnOff<->InfoOnOff etc.), used by check_missing_status and
the HA generator. Fixes false "missing status" on function-paired commands and
gives HA entities the correct state_address even when the feedback GA is named
only "Status". Add a regression test.

Found via real-ETS6 fixture testing: Functions were previously ignored despite
the README claiming they were the primary pairing signal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:35:34 +02:00
Nikolay MiroshnichenkoandClaude Opus 4.8 1b0fe566f7 Fix infinite recursion in load_project MCP tool
The server tool function `load_project` shadowed the imported project loader,
so it called itself instead of the parser -> RecursionError on every real
.knxproj. Alias the import as `load_project_file` and call that.

Add a regression test (server.load_project on a bad path must not raise
RecursionError) and a CHANGELOG entry. Found via end-to-end testing against
real ETS5/ETS6 fixtures from XKNX/xknxproject.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:24:17 +02:00
Nikolay MiroshnichenkoandClaude Opus 4.8 bba8befcde nickol-knx-mcp v0.1.0 — design-time KNX/ETS6 MCP server (public beta)
Design-time MCP server that reads .knxproj (read-only), validates naming/DPT/status,
and generates Home Assistant KNX YAML + ETS-importable group addresses (XML/CSV).
No live bus access — confined-workspace writes only.

Includes: 12 MCP tools, end-to-end smoke test, MIT license, English-first README
(+ Russian), CONTRIBUTING with a real-project test call, SECURITY policy, CHANGELOG,
GitHub Actions CI (Python 3.10–3.12), and issue/PR templates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 09:25:57 +02:00