Skip to content

fix(catalog): correct WHO 5 burglar-alarm vocabulary and addressing - #13

Merged
GreenGrassBlueOcean merged 1 commit into
mainfrom
fix/who5-alarm-vocabulary
Oct 2, 2026
Merged

GreenGrassBlueOcean merged 1 commit into
mainfrom
fix/who5-alarm-vocabulary

Conversation

@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor

Problem

get_who_spec(5), lookup_frame_syntax(who=5) and parse_and_validate_frame all read the WHO 5 entry in data/who_catalog.json, which was wrong:

  • WHAT table: 0 Disarm / Alarm idle, 1 Arm system (Total), 2 Arm partition / Partial, 3 Intrusion alarm active, 4 Technical alarm active
  • Examples offered *5*1*0## / *5*0*0## as arm/disarm commands
  • Addressing said zones are '1' to '8' (they are #1..#8)

The published vocabulary (WHO_5.pdf, Encyclopedia functional/who-5-alarm) is 0 maintenance, 1 activation, 2 disactivation, 3 delay end, 4/5/10 battery, 6/7 network, 8 engage, 9 disengage, 11/18 active/non-active zone, 12/13 technical alarm, 14 no reception, 15 intrusion, 16 tamper/24h, 17 anti-panic, 26/27 programming, 31 silent alarm. Field captures (MyHOME tests/fixtures/plants/issue_311_f454) show arming reported as *5*1*0## → *5*8*0## and disarming as *5*2*0## → *5*1*0## → *5*9*0##, so WHAT 1 is not "armed".

Changes

  • Catalog (WHO 5): full 22-value WHAT table, each marked report/event; notes (report-only, independent 0/1 vs 8/9 axes, read status replies to ACK) and evidence.
  • Addressing: 0 central unit (published 1 control panel kept), #N zone (#0 inputs/sirens, #12/#15 zones C/F), two-digit ZN sensor; where_forms so the parser says "at Zone 3" / "at Zone 1 sensor 2".
  • Examples: *#5##, *#5*#1##, and reports *5*8*0##, *5*9*0##, *5*15*#3## instead of fake arm/disarm commands.
  • get_who_spec now renders a family's notes and evidence (WHO 16/22 already carried them but they were never shown).
  • Parser: family where_forms are checked before the generic WHERE 0 → "General (all devices)" fallback. WHO 5 0 becomes "Central unit"; side effect: WHO 16's existing ^0$ "General: all amplifiers" form is now reachable. WHO 1/2/22 unchanged.
  • Bundled who_specifications.md row no longer claims "partition arming/disarming".

Tests

  • test_who5_alarm_vocabulary_is_activation_and_engage_not_arm: WHAT 1 starts with "Activation", WHAT 8 with "Engage", no arm/disarm examples, #1..#8 addressing, rendered spec.
  • test_who5_alarm_frames: 9 WHO 5 frames parse without "not standard" warnings and with correct zone/sensor/central-unit WHERE.
  • Full suite: 119 passed, 1 skipped. The 10 new cases all fail against the main catalog (checked via OPENWEBNET_WHO_CATALOG_PATH).

🤖 Generated with Claude Code

The WHO 5 entry described WHAT 0/1/2 as disarm/arm/partial and offered
*5*1*0## and *5*0*0## as arm/disarm commands. The published vocabulary
(WHO_5.pdf, Encyclopedia functional/who-5-alarm) is 0 maintenance,
1 activation, 2 disactivation, 8 engage, 9 disengage, ... 31 silent
alarm, and field captures (MyHOME issue_311_f454) show arming reported
as *5*1*0## then *5*8*0##, so WHAT 1 is not the armed state.

- Replace the WHAT table with all 22 published values, marked as
  reports/events, and add notes on independent state axes.
- Fix addressing: 0 = central unit, #N = zone, two-digit ZN = sensor;
  add where_forms so the parser names zones and sensors.
- Replace the arm/disarm examples with status requests and reports.
- Render catalog notes/evidence in get_who_spec.
- Check family where_forms before the generic WHERE 0 fallback (also
  makes WHO 16's "General: all amplifiers" form reachable).
- Regression tests: WHAT 1 is "Activation", WHAT 8 is "Engage".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@GreenGrassBlueOcean
GreenGrassBlueOcean merged commit 86c3b45 into main Oct 2, 2026
16 checks passed
@GreenGrassBlueOcean
GreenGrassBlueOcean deleted the fix/who5-alarm-vocabulary branch October 2, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant