Repository navigation
HA Sim Test Recipes
Willem edited this page Aug 24, 2026
·
1 revision
73 recipes (R01–R86, with gaps where structural recipes were converted to pytest). Each recipe is a self-contained module under tools/ha_sim_test/recipes/.
The 10 structural recipes (R39, R48, R49, R51–R57) have been converted to pytest unit tests — 7 in ramses_rf (tests/tests_rf/structural/) and 3 in ramses_cc (tests/tests_new/structural/). These tests run directly against the source code without needing the ha-sim container.
| Recipe | Description | Checks |
|---|---|---|
| R01 | Heat profile activation + schema/entities | 5 |
| R02 | remove_device — remove TRV | 4 |
| R03 | remove_device — HGI rejection | 2 |
| R04 | remove_device — CTL / main_tcs removal | 3 |
| R05 | No resurrection after restart | 2 |
| R10 | Invalid main_tcs safety net | 4 |
| R11 | Discover → accept → remove lifecycle | 6 |
| R16 | Concurrency/stress test — rapid add/remove | 4 |
| Recipe | Description | Checks |
|---|---|---|
| R07 | HVAC schema caching — FAN + REM | 5 |
| R07b | Restart, HVAC survives + device-loss scenario | 5 |
| R08 | HVAC schema caching — merge union on reload | 3 |
| R09 | User schema edits survive sync — _alias | 2 |
| R15 | Verify hvac_schema key in .storage | 3 |
| R20 | SSOT Phase 2 migration — known_list traits | 5 |
| Recipe | Description | Checks |
|---|---|---|
| R06 | Zone binding via inject_message (000C packet) | 2 |
| R14 | Raw packet injection — zone rebinding | 1 |
| R19 | Zone binding from broadcast traffic (passive) | 1 |
| R19b | Invalid zone indices are rejected | 1 |
| R19c | 18: (HGI) devices tracked but no zone binding | 2 |
| R21 | CTL (01:) does not get zone_idx from 000A | 3 |
| R22 | THM (22:) zone binding via 000A | 2 |
| R23 | 0004 zone_name propagation (parser_0004) | 2 |
| R28 | Foreign HGI — 0004 zone names not blocked | 4 |
| Recipe | Description | Checks |
|---|---|---|
| R17 | Discovery service lifecycle [A] | 14 |
| R18 | add_faked_rem service — creates faked REM | 6 |
| R47 | Unknown device discovery + log tracking | 4 |
| Recipe | Description | Checks |
|---|---|---|
| R29 | BDR 3B00/3EF0 → appliance_control | 6 |
| R34 | BDR re-parent hotwater_valve → appliance_control | 5 |
| R37 | BDR hotwater_valve misclassified as appliance_control | 10 |
| Recipe | Description | Checks |
|---|---|---|
| R24 | Phase 3c — class mismatch flagging | 5 |
| R25 | Phase 3c — fix mismatch, notification dismissed | 2 |
| R26 | Phase 3c — missing _class detection | 3 |
| R27 | Phase 3c — accept_discovered_device preserves root | 5 |
| Recipe | Description | Checks |
|---|---|---|
| R30 | Phase 3d.4 — multi-REM FAN with _bound as list | 5 |
| R31 | Phase 3d.6 — _commands override precedence (E2E) | 6 |
| R33 | Phase 3d.3b — consolidated stripper validation | 11 |
| Recipe | Description | Checks |
|---|---|---|
| R58 | Phase 4 — known_list removed, enforce always-on | 14 |
| Recipe | Description | Checks |
|---|---|---|
| R62 | Topology event-driven schema sync (step 5) | 5 |
| R65 | HVAC 'belongs to' FAN detected from traffic | 19 |
| R66 | HVAC dual-role CO2+REM support | 13 |
| R67 | HVAC via_device/parent_device grouping (step 6d) | 19 |
| R68 | Active HVAC topology probing (6f) | 13 |
| Recipe | Description | Checks |
|---|---|---|
| R35 | Water heater DHW CQRS hydration (issue 843) | 4 |
| R36 | Zone climate state hydration (issue 843) | 3 |
| Recipe | Description | Checks |
|---|---|---|
| R32 | Battery (1060) cache restore — stale 1060 after restart | 4 |
| Recipe | Description | Checks |
|---|---|---|
| R50 | Device health tracking — orphaned/lost devices | 17 |
| Recipe | Description | Checks |
|---|---|---|
| R42 | HVAC topology learned from traffic — binding rules | 4 |
| R43 | CO2 dual-role device — 1298 + 22F1 from same 37: | 2 |
| R44 | Schema migration v1→v2 — traits survive restart | 5 |
| R45 | Crash recovery — force reload, topology survives | 6 |
| R46 | _disabled trait — device excluded from known_list | 5 |
| Recipe | Description | Checks |
|---|---|---|
| R38 | Faked THM 30C9 correct zone_idx (issue 639) | 3 |
| R40 | PacketDTO rx_path integrity (issue 639) | 9 |
| Recipe | Description | Checks |
|---|---|---|
| R63 | Zone name survives message_store prune (issue 919) | 5 |
| R64 | No repeated discovery notifications (issue 917) | 3 |
| R69 | Faked THM 03x 30C9 decoder (issue 929) | 4 |
| R70 | 3EF0 9-byte OTB payload decode (PR 1031 regression guard) | 19 |
| R71 | 1260 DHW temperature value accuracy | 3 |
| R72 | 3150 heat_demand value accuracy | 6 |
| Recipe | Description | Checks |
|---|---|---|
| R73 | Authoritative domain_id from 000C — FA/F9/FC placement | 6 |
| R74 | Manual placement preserved + comment staleness | 5 |
| Recipe | Description | Checks |
|---|---|---|
| R75 | Zone class inference + BDR hotwater_valve fallback | 8 |
| R76 | Zone name 0004 polling regression | 5 |
| Recipe | Description | Checks |
|---|---|---|
| R77 | HGI device not re-discovered every cycle (issue 987) | 4 |
| R78 | Orphaned device suppress_not_seen, no re-notify (issue 988) | 4 |
| R79 | FAN→DIS reclassification via contradiction detection (issue 1000) | 5 |
| R80 | Foreign-owned device not flagged as "new" (issue 1003) | 3 |
| Recipe | Description | Checks |
|---|---|---|
| R81 | Config entry migration v2→v3 (known_list to schema) | 25 |
| R82 | Config entry migration v1→v3 (0.56-era to current) | 26 |
| Recipe | Description | Checks |
|---|---|---|
| R83 | Representative TRV sensor persistence | 7 |
| R84 | Multi-room zone sensor learning | 6 |
| Recipe | Description | Checks |
|---|---|---|
| R85 | 000A zone config hydration (min/max temp) | 3 |
| R86 | relay/heat/TPI demand hydration (ramses_cc#1026) | 3 |
| Recipe | Description | Checks |
|---|---|---|
| R60 | send_packet CommandDTO + device_id filter (issue 864) | 9 |
| Log Report | ERROR/WARNING analysis | 2 |
Total: ~449 checks across 73 recipes (10 structural recipes converted to pytest — see ramses_rf/ramses_cc test suites).
| Recipe | Reason |
|---|---|
| R39, R41, R48, R49 | Converted to pytest in ramses_rf |
| R51–R57 | Converted to pytest in ramses_rf/ramses_cc |
| R59 | Removed — functionality covered by R58 |
Back to: HA-Sim Test Tool
- Feature Catalog
- CO2 Control
- Humidity Control (Balance)
- Temp Control (Bypass)
- FAN Configuration (Sensor Control)
- HVAC Fan Card
- Ramses Debugger
-
Device Simulator -
⚠️ Use only on dedicated system/container - Default Feature
- Hello World (Developer Example)