Bump version 0.1.2 -> 0.2.0 (pyproject + __init__). Promote the
Unreleased changelog section to [0.2.0] — 2026-06-30. Scrub a client
city label from two test comments (provenance note only, no PII/topology).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Re-captured all 5 live HA dashboard views (consistent 1240px, no PII): overview
now shows the floor-heating climate snapshot, climate shows the 6 floor-heating
thermostats + valve gauges, lighting shows RGBW/RGB/CCT colour lights (the prior
'Ошибка' was a non-existent light-color tile feature, now removed). Site fact
cards + gallery captions + both READMEs updated to describe colour/climate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Root README + RU now list the Track A/D capabilities: GA-intent classification
(reserve/logic/scratch kept out of error & missing-status checks), colour light
assembly (RGBW/RGB/CCT) and climate entity generation, with the real 685-GA
Zennio validation figure (false errors 29 -> 6).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Regenerate examples/demo-home/generated/ with the current generator:
13 lights now carry RGBW/RGB/CCT colour, 6 climate zones assembled with
HA-doc-verified keys, sensors fold into climate where applicable.
README updated (entity counts, capability note) and records that the real
ETS6-signed round-trip was validated. Report source path sanitized (relative).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Colour control assembled into light entities (RGB 232.600, RGBW 251.600,
xyY 242.600, colour-temp 7.600) with statuses, matched by zone identity.
Climate entities generated from HVAC mode zones (temp 9.001 + target status
+ operation/controller mode 20.102/20.105 + valve command_value 5.001),
emitted only when HA-required keys are present, else routed to review.
B1 fix: a command no longer borrows a sibling's status (identity must nest,
status maps to exactly one entity) — removed all shared-status addresses.
New DPTs 232.600/251.600/242.600/7.600/20.105/1.100. HA keys verified vs docs.
Real files: signed demo 6 climate + 4 colour lights; Zennio 685-GA 7 climate;
zero shared-status; all 10 regression groups pass.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Classify every group address as functional/reserve/logic/scratch (intent.py)
and reclassify intentional non-functional GAs instead of crying wolf:
- reserve spare with no DPT -> INFO reserve_without_dpt (not a missing_dpt error)
- reserve name reused across DPTs -> no duplicate_name / inconsistent_dpt
- logic/virtual + scratch GAs -> excluded from missing-status warnings
dpt_mismatch_co and all real functional findings are untouched.
Driven by a real 685-GA Zennio project: false errors 29 -> 6,
missing-status noise 79 -> 45, all 12 real dpt_mismatch_co catches preserved.
Intent breakdown now exposed via list_group_addresses, report inventory and
the analyze_all summary. New regression test covers the reserve/logic/scratch
patterns and proves real DPT + status problems still surface.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Glama Docker introspection passes (build success, MCP release created).
Satisfies awesome-mcp-servers listing requirement: server is on Glama
and the score badge is now shown in both READMEs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Builds the stdio MCP server into a slim image (verified: container starts and
responds to initialize + tools/list with all 12 tools). Enables the Glama
(glama.ai) checks required by the awesome-mcp-servers listing bot.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A professional KNX engineer confirmed ETS rejects the programmatically-authored
demo project on import ('Project file has no valid signature') — ETS signs its own
projects and that can't be forged. Document the real-file path: import the GA
export XML into ETS and export from there.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Discussions badge + call-to-action linking to Discussion #1, plus a nav 'Discuss'
link and a CTA button on the landing site.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ready-to-post messages for GitHub Discussions, KNX User Forum, Home Assistant
forum, Reddit, Discord, Telegram (RU) and an awesome-mcp-servers catalog entry.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Five real screenshots of the live Demo House dashboard (overview/climate/lighting/
energy/presence). The site now leads with a real screenshot gallery (interactive
mock kept below), and both READMEs gain a live-dashboard gallery section.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a linked SVG hero banner (docs/assets/banner.svg), a 'live demo' badge, a
heading link and a callout pointing to the GitHub Pages site and the demo house,
in both README.md and README.ru.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Self-contained HTML showcase: hero, two-layer architecture, demo-house stats +
the 5 planted mistakes, an interactive 5-tab dashboard preview (Overview/Climate/
Lighting/Energy/Presence), the HA brain, and a testers CTA. .nojekyll included.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A 5-view sections dashboard (Overview · Climate · Lighting · Energy & Stats ·
Presence) using only built-in cards (tile/gauge/heading/history-graph/markdown/
button + badges), wired to the demo-home brain entities.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A synthetic 239-GA / 47-Function demo .knxproj (ETS6 schema, parseable by
xknxproject) with 5 deliberate mistakes, the tool's generated artifacts
(project report, Home Assistant entities, ETS XML/CSV), and a ha-brain/ smart
layer: circadian lighting, an 8-factor climate setpoint, presence/season/time
state machine and statistics. Whitelist the demo .knxproj past the *.knxproj
gitignore (synthetic, no real topology/secrets).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump to 0.1.2 and finalize CHANGELOG. Second hardening pass (round-2 public
ETS4/5/6 fixtures): complete dimmable lights, wider shutter detection
(1.001/1.017 + zone-identity guard), and date/time/text DPT routing.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Bump version to 0.1.1 and finalize CHANGELOG. This release bundles the fixes
found by running the tool against real ETS5/ETS6 project files: the critical
load_project recursion, the now-implemented ETS Function role pairing, no-silent
-drops in HA generation, smarter shutter/German classification, venetian slat
tilt handling, and diagnostics alarms as binary_sensors. 5 regression tests added.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 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>
- 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>
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>
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>
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>