diff --git a/tests/fixtures/traces/issue_619/README.md b/tests/fixtures/traces/issue_619/README.md index d1831c1ba..63ffa133b 100644 --- a/tests/fixtures/traces/issue_619/README.md +++ b/tests/fixtures/traces/issue_619/README.md @@ -1,6 +1,6 @@ # #619 F453AV Gateway Traces & Bus Sweep -Verbatim bus traces contributed by **@nce2704** on [#619 (comment 5978395483)](https://github.com/OpenWebNet-HA/MyHOME/issues/619#issuecomment-5978395483) and [#619 (comment 5983731573)](https://github.com/OpenWebNet-HA/MyHOME/issues/619#issuecomment-5983731573). They are facts: never edit a frame. +Verbatim bus traces contributed by **@nce2704** on [#619 (comment 5978395483)](https://github.com/OpenWebNet-HA/MyHOME/issues/619#issuecomment-5978395483), [#619 (comment 5983731573)](https://github.com/OpenWebNet-HA/MyHOME/issues/619#issuecomment-5983731573), and [OWNd#97 (comment 6110745254)](https://github.com/OpenWebNet-HA/OWNd/pull/97#issuecomment-6110745254). They are facts: never edit a frame. ## Hardware Profile @@ -8,8 +8,8 @@ Verbatim bus traces contributed by **@nce2704** on [#619 (comment 5978395483)](h - **Firmware**: 1.0 (WHO 13 device code `12`) / 3.0.14 (`*#13**16*3*0*14##`) - **Actuator Models**: - BTicino F414 (Classic 1000 W modular DIN phase-cut dimmer, 60–1000 VA) - - Relays, motorized shutters/covers, thermostats/climate zones, burglar alarm, energy meters -- **Actuator Tested**: WHERE `13` (connected to a 35 W halogen lamp); WHERE `14`, `24`, `31`, `34` (unloaded) + - Relays, motorized shutters/covers, thermostats/climate zones, central unit #0, burglar alarm, energy meters +- **Actuator Tested**: WHERE `13` (connected to a 35 W halogen lamp); WHERE `14`, `24`, `31`, `34` (unloaded); Central Unit `#0` and subordinate climate zones - **Connection**: TCP OpenWebNet (Port 20000) ## Contributed Files @@ -18,6 +18,12 @@ Verbatim bus traces contributed by **@nce2704** on [#619 (comment 5978395483)](h |---|---|---| | `myhome_trace_F453AV_all_2026-10-04T08-28-13.json` | Bus Monitor Trace (23 frames) | Verification of physical F414 dimmer on WHERE `13` with 35 W load, cycling through discrete levels 2..7 (`*1*2*13##` through `*1*7*13##`) and switching OFF (`*1*0*13##`). | | `myhome_sweep_F453AV_all_2026-10-04T19-45-11.json` | Full Bus Sweep Capture (157 frames) | Full bus sweep of the F453AV installation (FW 3.0.14) covering 8 subsystems: WHO 1 (lights), WHO 2 (covers), WHO 4 (climate), WHO 5 (burglar alarm), WHO 13 (gateway info/clock), WHO 16 (audio), WHO 18 (energy), and WHO 1001 (actuator diagnostics). | +| `myhome_trace_F453AV_who4_2026-10-11T11-02-55.Holiday.ON.json` | Bus Monitor Trace (88 frames) | Setting Central Unit #0 to Daily Holiday (Holiday Plan) via `*4*115#1101*#0##` specifying weekly program 1 (`1101`), accompanied by central status flags `*4*21*#0##`, `*4*22*#0##`, and subzone program reports `*4*111*#Z##`. | +| `myhome_trace_F453AV_who4_2026-10-11T11-10-23.Holiday.OFF.automatically.json` | Bus Monitor Trace (20 frames) | Automatic expiration of Daily Holiday, restoring Central Unit #0 to weekly program 1 via `*4*1101*#0##`, status flags `*4*21*#0##` / `*4*22*#0##`, and subzone program synchronization. | +| `myhome_trace_F453AV_who4_2026-10-11T11-13-06.Antifreeze.ON.json` | Bus Monitor Trace (112 frames) | Switching Central Unit #0 to Antifreeze via `*4*102*#0##`, propagating to subzones `*4*102*#Z##` and physical actuators `*4*102*Z##`, with inactive zones remaining OFF (`*4*303*Z##`). | +| `myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json` | Bus Monitor Trace (63 frames) | Freedompro app transition switching a zone from Heat to Cool: Central Unit #0 automatically transitions plant from Winter to Summer into Thermal Protection via `*4*202*#0##` / `*4*202*Z##`, updating setpoints to cooling targets. | +| `myhome_trace_F453AV_who4_2026-10-11T10-49-26.Central.to.OFF.json` | Bus Monitor Trace (115 frames) | Setting Central Unit #0 to OFF via `*4*103*#0##`, propagating `*4*103*#Z##` and turning off physical zones via `*4*303*Z##`. | +| `myhome_trace_F453AV_who4_2026-10-11T10-29-57.json` | Bus Sweep & State Trace (121 frames) | Central unit #0 and zone status trace demonstrating concurrent `*4*1*Z##` (zone heating season status) and `*4*111*#Z##` (zone weekly program), proving season telemetry does not displace weekly schedule mode. | ## Sequence of Actions Recorded & Subsystems Verified @@ -36,3 +42,10 @@ Verbatim bus traces contributed by **@nce2704** on [#619 (comment 5978395483)](h - **WHO 16 (Audio / Sound Diffusion, 1 frame)**: Status query `*#16*0*5##`. - **WHO 18 (Energy Management, 18 frames)**: Energy meters / pulse counters at WHERE `51`, `52`, `53`, `54`, `55`, etc., reporting dimensions 51 and 1200. - **WHO 1001 (Actuator Diagnostics, 5 frames)**: Diagnostic bitmasks (`*#1001*WHERE*11*111110111111111111110111##`) emitted for unloaded F414 dimmers on WHERE `13`, `14`, `24`, `31`, `34`. + +3. **Authentic WHO 4 Central Unit #0, Holiday & Season Transitions (`myhome_trace_F453AV_who4_...`)**: + - **Daily Holiday Program Extraction**: `*4*115#1101*#0##` proves parameter `1101` encodes weekly program 1 (`1101 % 100 == 1`), permanently disproving the legacy misparsing of `1101` as temperature `-10.1 °C`. + - **Holiday Automatic Expiration**: `*4*1101*#0##` demonstrates the central unit cleanly transitioning back to weekly program 1. + - **Central Antifreeze & OFF Propagation**: `*4*102*#0##` and `*4*103*#0##` demonstrate clean broadcast to central subzones (`#Z`) and physical zone actuators (`Z`). + - **Season Decoupling & Winter-Summer Switch**: `myhome_trace_F453AV_who4_2026-10-11T10-29-57.json` demonstrates zone heating season frames `*4*1*Z##` coexisting with weekly program `*4*111*#Z##` without overriding active schedule mode. `myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json` captures switching a zone from Heat to Cool triggering the central unit to switch from Winter to Summer into Thermal Protection (`*4*202*#0##`). + - **Central Status Flags**: Every central mode transition is verified with companion flags `*4*21*#0##` and `*4*22*#0##`. diff --git a/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T10-29-57.json b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T10-29-57.json new file mode 100644 index 000000000..7ea0d28ac --- /dev/null +++ b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T10-29-57.json @@ -0,0 +1,1516 @@ +{ + "capture": { + "kind": "trace", + "started_at": null, + "filters": { + "who": "4", + "where": null, + "direction": null + }, + "window": { + "first": "2026-10-11T10:28:01.773Z", + "last": "2026-10-11T10:28:30.908Z", + "frames": 121, + "buffer_frames": 198, + "buffer_depth": 500, + "truncated": false + } + }, + "environment": { + "home_assistant_version": "2026.10.1", + "integration_version": "2.0.0b14", + "ownd_version": "2.0.0b9", + "exported_at": "2026-10-11T10:29:57.324Z" + }, + "gateway": { + "model": "F453AV", + "manufacturer": "BTicino S.p.A.", + "firmware": "1.0", + "mac_prefix": "00:03:50", + "connection_type": "tcp", + "queue_pacing": 0.05, + "is_connected": true, + "identification": { + "model": "F453AV", + "source": "ssdp", + "configured_model": "F453AV", + "ssdp_model": "F453AV", + "who13_code": "12", + "who13_model": "F453AV", + "who13_model_official": null, + "who13_model_observed": "F453AV", + "who13_firmware": null, + "who13_kernel": null, + "who13_distribution": null, + "who1013_code": null, + "who1013_model": null, + "who1013_other_names": [], + "who1013_n_conf": null, + "who1013_brand": null, + "who1013_line": null, + "profile": "GenericGatewayProfile", + "conflict": null + } + }, + "telemetry": { + "total_rx": 201, + "total_tx": 0, + "captured_in_buffer": 198, + "buffer_depth": 500, + "queue_depth": 0 + }, + "frames": [ + { + "timestamp": 1791714481.773877, + "iso_time": "2026-10-11T10:28:01.773877+00:00", + "direction": "rx", + "raw": "*4*115#1101*#0##", + "who": "4", + "what": "115", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714481.780871, + "iso_time": "2026-10-11T10:28:01.780871+00:00", + "direction": "rx", + "raw": "*4*21*#0##", + "who": "4", + "what": "21", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714481.781948, + "iso_time": "2026-10-11T10:28:01.781948+00:00", + "direction": "rx", + "raw": "*4*22*#0##", + "who": "4", + "what": "22", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714482.337779, + "iso_time": "2026-10-11T10:28:02.337779+00:00", + "direction": "rx", + "raw": "*#4*#0*30*12*10*2026##", + "who": "4", + "what": null, + "where": "#0", + "dimension": "30", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714483.327909, + "iso_time": "2026-10-11T10:28:03.327909+00:00", + "direction": "rx", + "raw": "*#4*#0*31*12*28##", + "who": "4", + "what": null, + "where": "#0", + "dimension": "31", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714483.86719, + "iso_time": "2026-10-11T10:28:03.867190+00:00", + "direction": "rx", + "raw": "*#4*1*0*0239##", + "who": "4", + "what": null, + "where": "1", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714483.917763, + "iso_time": "2026-10-11T10:28:03.917763+00:00", + "direction": "rx", + "raw": "*#4*1*12*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714483.922287, + "iso_time": "2026-10-11T10:28:03.922287+00:00", + "direction": "rx", + "raw": "*4*303*1##", + "who": "4", + "what": "303", + "where": "1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714484.377352, + "iso_time": "2026-10-11T10:28:04.377352+00:00", + "direction": "rx", + "raw": "*4*111*#10##", + "who": "4", + "what": "111", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714485.267294, + "iso_time": "2026-10-11T10:28:05.267294+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714485.337628, + "iso_time": "2026-10-11T10:28:05.337628+00:00", + "direction": "rx", + "raw": "*#4*1#1*20*0##", + "who": "4", + "what": null, + "where": "1", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714485.417546, + "iso_time": "2026-10-11T10:28:05.417546+00:00", + "direction": "rx", + "raw": "*4*111*#1##", + "who": "4", + "what": "111", + "where": "#1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714485.95838, + "iso_time": "2026-10-11T10:28:05.958380+00:00", + "direction": "rx", + "raw": "*#4*2*0*0236##", + "who": "4", + "what": null, + "where": "2", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714486.008836, + "iso_time": "2026-10-11T10:28:06.008836+00:00", + "direction": "rx", + "raw": "*#4*2*12*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714486.013605, + "iso_time": "2026-10-11T10:28:06.013605+00:00", + "direction": "rx", + "raw": "*4*303*2##", + "who": "4", + "what": "303", + "where": "2", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714486.457751, + "iso_time": "2026-10-11T10:28:06.457751+00:00", + "direction": "rx", + "raw": "*4*111*#13##", + "who": "4", + "what": "111", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714486.977327, + "iso_time": "2026-10-11T10:28:06.977327+00:00", + "direction": "rx", + "raw": "*4*111*#3##", + "who": "4", + "what": "111", + "where": "#3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714487.527645, + "iso_time": "2026-10-11T10:28:07.527645+00:00", + "direction": "rx", + "raw": "*#4*3*0*0238##", + "who": "4", + "what": null, + "where": "3", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714487.57815, + "iso_time": "2026-10-11T10:28:07.578150+00:00", + "direction": "rx", + "raw": "*#4*3*12*0100*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714487.583012, + "iso_time": "2026-10-11T10:28:07.583012+00:00", + "direction": "rx", + "raw": "*4*1*3##", + "who": "4", + "what": "1", + "where": "3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714488.027628, + "iso_time": "2026-10-11T10:28:08.027628+00:00", + "direction": "rx", + "raw": "*4*111*#17##", + "who": "4", + "what": "111", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714488.297663, + "iso_time": "2026-10-11T10:28:08.297663+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714488.408551, + "iso_time": "2026-10-11T10:28:08.408551+00:00", + "direction": "rx", + "raw": "*#4*3#1*20*0##", + "who": "4", + "what": null, + "where": "3", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714488.548184, + "iso_time": "2026-10-11T10:28:08.548184+00:00", + "direction": "rx", + "raw": "*4*111*#4##", + "who": "4", + "what": "111", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714489.100596, + "iso_time": "2026-10-11T10:28:09.100596+00:00", + "direction": "rx", + "raw": "*#4*4*0*0245##", + "who": "4", + "what": null, + "where": "4", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714489.148565, + "iso_time": "2026-10-11T10:28:09.148565+00:00", + "direction": "rx", + "raw": "*#4*4*12*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714489.155363, + "iso_time": "2026-10-11T10:28:09.155363+00:00", + "direction": "rx", + "raw": "*4*1*4##", + "who": "4", + "what": "1", + "where": "4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714489.587603, + "iso_time": "2026-10-11T10:28:09.587603+00:00", + "direction": "rx", + "raw": "*4*111*#11##", + "who": "4", + "what": "111", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714490.117344, + "iso_time": "2026-10-11T10:28:10.117344+00:00", + "direction": "rx", + "raw": "*4*111*#7##", + "who": "4", + "what": "111", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714490.665951, + "iso_time": "2026-10-11T10:28:10.665951+00:00", + "direction": "rx", + "raw": "*#4*5*0*0253##", + "who": "4", + "what": null, + "where": "5", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714490.719348, + "iso_time": "2026-10-11T10:28:10.719348+00:00", + "direction": "rx", + "raw": "*#4*5*12*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714490.72397, + "iso_time": "2026-10-11T10:28:10.723970+00:00", + "direction": "rx", + "raw": "*4*303*5##", + "who": "4", + "what": "303", + "where": "5", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714491.15799, + "iso_time": "2026-10-11T10:28:11.157990+00:00", + "direction": "rx", + "raw": "*4*111*#1##", + "who": "4", + "what": "111", + "where": "#1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714491.677648, + "iso_time": "2026-10-11T10:28:11.677648+00:00", + "direction": "rx", + "raw": "*4*111*#8##", + "who": "4", + "what": "111", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714492.228124, + "iso_time": "2026-10-11T10:28:12.228124+00:00", + "direction": "rx", + "raw": "*#4*6*0*0253##", + "who": "4", + "what": null, + "where": "6", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714492.288738, + "iso_time": "2026-10-11T10:28:12.288738+00:00", + "direction": "rx", + "raw": "*#4*6*12*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714492.293197, + "iso_time": "2026-10-11T10:28:12.293197+00:00", + "direction": "rx", + "raw": "*4*303*6##", + "who": "4", + "what": "303", + "where": "6", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714492.72761, + "iso_time": "2026-10-11T10:28:12.727610+00:00", + "direction": "rx", + "raw": "*4*111*#7##", + "who": "4", + "what": "111", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714493.247782, + "iso_time": "2026-10-11T10:28:13.247782+00:00", + "direction": "rx", + "raw": "*4*111*#10##", + "who": "4", + "what": "111", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714493.65853, + "iso_time": "2026-10-11T10:28:13.658530+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714493.758746, + "iso_time": "2026-10-11T10:28:13.758746+00:00", + "direction": "rx", + "raw": "*#4*4#1*20*0##", + "who": "4", + "what": null, + "where": "4", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714493.848347, + "iso_time": "2026-10-11T10:28:13.848347+00:00", + "direction": "rx", + "raw": "*#4*7*0*0248##", + "who": "4", + "what": null, + "where": "7", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714493.908773, + "iso_time": "2026-10-11T10:28:13.908773+00:00", + "direction": "rx", + "raw": "*#4*7*12*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714493.915813, + "iso_time": "2026-10-11T10:28:13.915813+00:00", + "direction": "rx", + "raw": "*4*1*7##", + "who": "4", + "what": "1", + "where": "7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714494.290609, + "iso_time": "2026-10-11T10:28:14.290609+00:00", + "direction": "rx", + "raw": "*4*111*#4##", + "who": "4", + "what": "111", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714494.507842, + "iso_time": "2026-10-11T10:28:14.507842+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714494.578147, + "iso_time": "2026-10-11T10:28:14.578147+00:00", + "direction": "rx", + "raw": "*#4*2#1*20*0##", + "who": "4", + "what": null, + "where": "2", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714494.808721, + "iso_time": "2026-10-11T10:28:14.808721+00:00", + "direction": "rx", + "raw": "*4*111*#11##", + "who": "4", + "what": "111", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714495.358469, + "iso_time": "2026-10-11T10:28:15.358469+00:00", + "direction": "rx", + "raw": "*#4*8*0*0251##", + "who": "4", + "what": null, + "where": "8", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714495.428793, + "iso_time": "2026-10-11T10:28:15.428793+00:00", + "direction": "rx", + "raw": "*#4*8*12*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714495.435805, + "iso_time": "2026-10-11T10:28:15.435805+00:00", + "direction": "rx", + "raw": "*4*1*8##", + "who": "4", + "what": "1", + "where": "8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714495.858001, + "iso_time": "2026-10-11T10:28:15.858001+00:00", + "direction": "rx", + "raw": "*4*111*#8##", + "who": "4", + "what": "111", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714496.39876, + "iso_time": "2026-10-11T10:28:16.398760+00:00", + "direction": "rx", + "raw": "*4*111*#13##", + "who": "4", + "what": "111", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714496.928193, + "iso_time": "2026-10-11T10:28:16.928193+00:00", + "direction": "rx", + "raw": "*#4*10*0*0246##", + "who": "4", + "what": null, + "where": "10", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714496.998956, + "iso_time": "2026-10-11T10:28:16.998956+00:00", + "direction": "rx", + "raw": "*#4*10*12*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.00375, + "iso_time": "2026-10-11T10:28:17.003750+00:00", + "direction": "rx", + "raw": "*4*1*10##", + "who": "4", + "what": "1", + "where": "10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.108711, + "iso_time": "2026-10-11T10:28:17.108711+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.218541, + "iso_time": "2026-10-11T10:28:17.218541+00:00", + "direction": "rx", + "raw": "*#4*5#1*20*0##", + "who": "4", + "what": null, + "where": "5", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.418735, + "iso_time": "2026-10-11T10:28:17.418735+00:00", + "direction": "rx", + "raw": "*4*111*#14##", + "who": "4", + "what": "111", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.588433, + "iso_time": "2026-10-11T10:28:17.588433+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.708595, + "iso_time": "2026-10-11T10:28:17.708595+00:00", + "direction": "rx", + "raw": "*#4*6#1*20*0##", + "who": "4", + "what": null, + "where": "6", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714497.947964, + "iso_time": "2026-10-11T10:28:17.947964+00:00", + "direction": "rx", + "raw": "*4*111*#12##", + "who": "4", + "what": "111", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.088616, + "iso_time": "2026-10-11T10:28:18.088616+00:00", + "direction": "rx", + "raw": "*#4*1*14*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.180131, + "iso_time": "2026-10-11T10:28:18.180131+00:00", + "direction": "rx", + "raw": "*#4*2*14*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.340365, + "iso_time": "2026-10-11T10:28:18.340365+00:00", + "direction": "rx", + "raw": "*#4*4*14*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.468764, + "iso_time": "2026-10-11T10:28:18.468764+00:00", + "direction": "rx", + "raw": "*#4*5*14*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.571775, + "iso_time": "2026-10-11T10:28:18.571775+00:00", + "direction": "rx", + "raw": "*#4*6*14*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.775894, + "iso_time": "2026-10-11T10:28:18.775894+00:00", + "direction": "rx", + "raw": "*#4*7*14*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.818418, + "iso_time": "2026-10-11T10:28:18.818418+00:00", + "direction": "rx", + "raw": "*#4*11*0*0233##", + "who": "4", + "what": null, + "where": "11", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714498.911427, + "iso_time": "2026-10-11T10:28:18.911427+00:00", + "direction": "rx", + "raw": "*#4*8*14*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714499.009925, + "iso_time": "2026-10-11T10:28:19.009925+00:00", + "direction": "rx", + "raw": "*4*111*#12##", + "who": "4", + "what": "111", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714499.07591, + "iso_time": "2026-10-11T10:28:19.075910+00:00", + "direction": "rx", + "raw": "*#4*10*14*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714499.185917, + "iso_time": "2026-10-11T10:28:19.185917+00:00", + "direction": "rx", + "raw": "*#4*11*12*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714499.19034, + "iso_time": "2026-10-11T10:28:19.190340+00:00", + "direction": "rx", + "raw": "*4*1*11##", + "who": "4", + "what": "1", + "where": "11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714499.256465, + "iso_time": "2026-10-11T10:28:19.256465+00:00", + "direction": "rx", + "raw": "*#4*11*14*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714499.508185, + "iso_time": "2026-10-11T10:28:19.508185+00:00", + "direction": "rx", + "raw": "*4*111*#14##", + "who": "4", + "what": "111", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.088314, + "iso_time": "2026-10-11T10:28:20.088314+00:00", + "direction": "rx", + "raw": "*#4*12*0*0238##", + "who": "4", + "what": null, + "where": "12", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.15928, + "iso_time": "2026-10-11T10:28:20.159280+00:00", + "direction": "rx", + "raw": "*#4*12*12*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.163988, + "iso_time": "2026-10-11T10:28:20.163988+00:00", + "direction": "rx", + "raw": "*4*1*12##", + "who": "4", + "what": "1", + "where": "12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.45944, + "iso_time": "2026-10-11T10:28:20.459440+00:00", + "direction": "rx", + "raw": "*#4*12*14*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.548655, + "iso_time": "2026-10-11T10:28:20.548655+00:00", + "direction": "rx", + "raw": "*4*111*#17##", + "who": "4", + "what": "111", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.699199, + "iso_time": "2026-10-11T10:28:20.699199+00:00", + "direction": "rx", + "raw": "*#4*1*14*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.849129, + "iso_time": "2026-10-11T10:28:20.849129+00:00", + "direction": "rx", + "raw": "*#4*2*14*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714500.988798, + "iso_time": "2026-10-11T10:28:20.988798+00:00", + "direction": "rx", + "raw": "*#4*3*14*0100*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.148482, + "iso_time": "2026-10-11T10:28:21.148482+00:00", + "direction": "rx", + "raw": "*#4*13*0*0268##", + "who": "4", + "what": null, + "where": "13", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.198711, + "iso_time": "2026-10-11T10:28:21.198711+00:00", + "direction": "rx", + "raw": "*#4*4*14*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.239038, + "iso_time": "2026-10-11T10:28:21.239038+00:00", + "direction": "rx", + "raw": "*#4*13*12*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.245265, + "iso_time": "2026-10-11T10:28:21.245265+00:00", + "direction": "rx", + "raw": "*4*1*13##", + "who": "4", + "what": "1", + "where": "13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.468855, + "iso_time": "2026-10-11T10:28:21.468855+00:00", + "direction": "rx", + "raw": "*#4*5*14*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.638731, + "iso_time": "2026-10-11T10:28:21.638731+00:00", + "direction": "rx", + "raw": "*#4*11#1*20*0##", + "who": "4", + "what": null, + "where": "11", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.688802, + "iso_time": "2026-10-11T10:28:21.688802+00:00", + "direction": "rx", + "raw": "*#4*6*14*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.858934, + "iso_time": "2026-10-11T10:28:21.858934+00:00", + "direction": "rx", + "raw": "*#4*7*14*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714501.928664, + "iso_time": "2026-10-11T10:28:21.928664+00:00", + "direction": "rx", + "raw": "*#4*14*0*0277##", + "who": "4", + "what": null, + "where": "14", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.038857, + "iso_time": "2026-10-11T10:28:22.038857+00:00", + "direction": "rx", + "raw": "*#4*13*14*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.079166, + "iso_time": "2026-10-11T10:28:22.079166+00:00", + "direction": "rx", + "raw": "*#4*8*14*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.129152, + "iso_time": "2026-10-11T10:28:22.129152+00:00", + "direction": "rx", + "raw": "*#4*14*12*0080*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.135686, + "iso_time": "2026-10-11T10:28:22.135686+00:00", + "direction": "rx", + "raw": "*4*1*14##", + "who": "4", + "what": "1", + "where": "14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.198713, + "iso_time": "2026-10-11T10:28:22.198713+00:00", + "direction": "rx", + "raw": "*#4*17*0*0231##", + "who": "4", + "what": null, + "where": "17", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.238976, + "iso_time": "2026-10-11T10:28:22.238976+00:00", + "direction": "rx", + "raw": "*#4*17*12*0260*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.244684, + "iso_time": "2026-10-11T10:28:22.244684+00:00", + "direction": "rx", + "raw": "*4*1*17##", + "who": "4", + "what": "1", + "where": "17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.428936, + "iso_time": "2026-10-11T10:28:22.428936+00:00", + "direction": "rx", + "raw": "*#4*10*14*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.468795, + "iso_time": "2026-10-11T10:28:22.468795+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.727977, + "iso_time": "2026-10-11T10:28:22.727977+00:00", + "direction": "rx", + "raw": "*#4*7#1*20*0##", + "who": "4", + "what": null, + "where": "7", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.840937, + "iso_time": "2026-10-11T10:28:22.840937+00:00", + "direction": "rx", + "raw": "*#4*11*14*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714502.899119, + "iso_time": "2026-10-11T10:28:22.899119+00:00", + "direction": "rx", + "raw": "*#4*13#1*20*0##", + "who": "4", + "what": null, + "where": "13", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714503.02158, + "iso_time": "2026-10-11T10:28:23.021580+00:00", + "direction": "rx", + "raw": "*#4*12*14*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714503.131199, + "iso_time": "2026-10-11T10:28:23.131199+00:00", + "direction": "rx", + "raw": "*#4*13*14*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714503.239151, + "iso_time": "2026-10-11T10:28:23.239151+00:00", + "direction": "rx", + "raw": "*#4*14*14*0100*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714503.366757, + "iso_time": "2026-10-11T10:28:23.366757+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714503.498537, + "iso_time": "2026-10-11T10:28:23.498537+00:00", + "direction": "rx", + "raw": "*#4*14#1*20*0##", + "who": "4", + "what": null, + "where": "14", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714503.698904, + "iso_time": "2026-10-11T10:28:23.698904+00:00", + "direction": "rx", + "raw": "*#4*17*14*0260*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714504.357848, + "iso_time": "2026-10-11T10:28:24.357848+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714504.437717, + "iso_time": "2026-10-11T10:28:24.437717+00:00", + "direction": "rx", + "raw": "*#4*10#1*20*0##", + "who": "4", + "what": null, + "where": "10", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714504.538776, + "iso_time": "2026-10-11T10:28:24.538776+00:00", + "direction": "rx", + "raw": "*#4*14*14*0100*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714504.685885, + "iso_time": "2026-10-11T10:28:24.685885+00:00", + "direction": "rx", + "raw": "*#4*17*14*0260*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714506.458196, + "iso_time": "2026-10-11T10:28:26.458196+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714506.57775, + "iso_time": "2026-10-11T10:28:26.577750+00:00", + "direction": "rx", + "raw": "*#4*8#1*20*0##", + "who": "4", + "what": null, + "where": "8", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714509.777904, + "iso_time": "2026-10-11T10:28:29.777904+00:00", + "direction": "rx", + "raw": "*#4*17#1*20*1##", + "who": "4", + "what": null, + "where": "17", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714509.848047, + "iso_time": "2026-10-11T10:28:29.848047+00:00", + "direction": "rx", + "raw": "*#4*0#2*20*1##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714510.775562, + "iso_time": "2026-10-11T10:28:30.775562+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791714510.908187, + "iso_time": "2026-10-11T10:28:30.908187+00:00", + "direction": "rx", + "raw": "*#4*12#1*20*0##", + "who": "4", + "what": null, + "where": "12", + "dimension": "20", + "is_ack": false, + "is_nack": false + } + ] +} diff --git a/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T10-49-26.Central.to.OFF.json b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T10-49-26.Central.to.OFF.json new file mode 100644 index 000000000..c36eac2b5 --- /dev/null +++ b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T10-49-26.Central.to.OFF.json @@ -0,0 +1,1444 @@ +{ + "capture": { + "kind": "trace", + "started_at": null, + "filters": { + "who": "4", + "where": null, + "direction": null + }, + "window": { + "first": "2026-10-11T10:48:57.144Z", + "last": "2026-10-11T10:49:18.806Z", + "frames": 115, + "buffer_frames": 132, + "buffer_depth": 500, + "truncated": false + } + }, + "environment": { + "home_assistant_version": "2026.10.1", + "integration_version": "2.0.0b14", + "ownd_version": "2.0.0b9", + "exported_at": "2026-10-11T10:49:26.330Z" + }, + "gateway": { + "model": "F453AV", + "manufacturer": "BTicino S.p.A.", + "firmware": "1.0", + "mac_prefix": "00:03:50", + "connection_type": "tcp", + "queue_pacing": 0.05, + "is_connected": true, + "identification": { + "model": "F453AV", + "source": "ssdp", + "configured_model": "F453AV", + "ssdp_model": "F453AV", + "who13_code": "12", + "who13_model": "F453AV", + "who13_model_official": null, + "who13_model_observed": "F453AV", + "who13_firmware": null, + "who13_kernel": null, + "who13_distribution": null, + "who1013_code": null, + "who1013_model": null, + "who1013_other_names": [], + "who1013_n_conf": null, + "who1013_brand": null, + "who1013_line": null, + "profile": "GenericGatewayProfile", + "conflict": null + } + }, + "telemetry": { + "total_rx": 132, + "total_tx": 0, + "captured_in_buffer": 132, + "buffer_depth": 500, + "queue_depth": 0 + }, + "frames": [ + { + "timestamp": 1791715737.144681, + "iso_time": "2026-10-11T10:48:57.144681+00:00", + "direction": "rx", + "raw": "*4*103*#0##", + "who": "4", + "what": "103", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715737.159027, + "iso_time": "2026-10-11T10:48:57.159027+00:00", + "direction": "rx", + "raw": "*4*21*#0##", + "who": "4", + "what": "21", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715737.74263, + "iso_time": "2026-10-11T10:48:57.742630+00:00", + "direction": "rx", + "raw": "*#4*1*0*0239##", + "who": "4", + "what": null, + "where": "1", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715737.777765, + "iso_time": "2026-10-11T10:48:57.777765+00:00", + "direction": "rx", + "raw": "*4*303*1##", + "who": "4", + "what": "303", + "where": "1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.21568, + "iso_time": "2026-10-11T10:48:58.215680+00:00", + "direction": "rx", + "raw": "*#4*2*0*0236##", + "who": "4", + "what": null, + "where": "2", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.255974, + "iso_time": "2026-10-11T10:48:58.255974+00:00", + "direction": "rx", + "raw": "*4*303*2##", + "who": "4", + "what": "303", + "where": "2", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.524122, + "iso_time": "2026-10-11T10:48:58.524122+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.604681, + "iso_time": "2026-10-11T10:48:58.604681+00:00", + "direction": "rx", + "raw": "*#4*1#1*20*0##", + "who": "4", + "what": null, + "where": "1", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.743989, + "iso_time": "2026-10-11T10:48:58.743989+00:00", + "direction": "rx", + "raw": "*#4*3*0*0239##", + "who": "4", + "what": null, + "where": "3", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.782719, + "iso_time": "2026-10-11T10:48:58.782719+00:00", + "direction": "rx", + "raw": "*4*303*3##", + "who": "4", + "what": "303", + "where": "3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715738.83564, + "iso_time": "2026-10-11T10:48:58.835640+00:00", + "direction": "rx", + "raw": "*#4*3*12*0230*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715739.264054, + "iso_time": "2026-10-11T10:48:59.264054+00:00", + "direction": "rx", + "raw": "*#4*4*0*0247##", + "who": "4", + "what": null, + "where": "4", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715739.304115, + "iso_time": "2026-10-11T10:48:59.304115+00:00", + "direction": "rx", + "raw": "*4*303*4##", + "who": "4", + "what": "303", + "where": "4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715739.35492, + "iso_time": "2026-10-11T10:48:59.354920+00:00", + "direction": "rx", + "raw": "*#4*4*12*0220*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715739.784197, + "iso_time": "2026-10-11T10:48:59.784197+00:00", + "direction": "rx", + "raw": "*#4*5*0*0252##", + "who": "4", + "what": null, + "where": "5", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715739.823838, + "iso_time": "2026-10-11T10:48:59.823838+00:00", + "direction": "rx", + "raw": "*4*303*5##", + "who": "4", + "what": "303", + "where": "5", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715739.97412, + "iso_time": "2026-10-11T10:48:59.974120+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.08509, + "iso_time": "2026-10-11T10:49:00.085090+00:00", + "direction": "rx", + "raw": "*#4*5#1*20*0##", + "who": "4", + "what": null, + "where": "5", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.305213, + "iso_time": "2026-10-11T10:49:00.305213+00:00", + "direction": "rx", + "raw": "*#4*6*0*0254##", + "who": "4", + "what": null, + "where": "6", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.355335, + "iso_time": "2026-10-11T10:49:00.355335+00:00", + "direction": "rx", + "raw": "*4*303*6##", + "who": "4", + "what": "303", + "where": "6", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.46639, + "iso_time": "2026-10-11T10:49:00.466390+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.566022, + "iso_time": "2026-10-11T10:49:00.566022+00:00", + "direction": "rx", + "raw": "*#4*3#1*20*0##", + "who": "4", + "what": null, + "where": "3", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.834941, + "iso_time": "2026-10-11T10:49:00.834941+00:00", + "direction": "rx", + "raw": "*#4*7*0*0249##", + "who": "4", + "what": null, + "where": "7", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.874813, + "iso_time": "2026-10-11T10:49:00.874813+00:00", + "direction": "rx", + "raw": "*4*303*7##", + "who": "4", + "what": "303", + "where": "7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715740.935697, + "iso_time": "2026-10-11T10:49:00.935697+00:00", + "direction": "rx", + "raw": "*#4*7*12*0220*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715741.335101, + "iso_time": "2026-10-11T10:49:01.335101+00:00", + "direction": "rx", + "raw": "*4*103*#10##", + "who": "4", + "what": "103", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715741.374392, + "iso_time": "2026-10-11T10:49:01.374392+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715741.52486, + "iso_time": "2026-10-11T10:49:01.524860+00:00", + "direction": "rx", + "raw": "*#4*6#1*20*0##", + "who": "4", + "what": null, + "where": "6", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715741.845054, + "iso_time": "2026-10-11T10:49:01.845054+00:00", + "direction": "rx", + "raw": "*4*103*#1##", + "who": "4", + "what": "103", + "where": "#1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715742.404859, + "iso_time": "2026-10-11T10:49:02.404859+00:00", + "direction": "rx", + "raw": "*#4*8*0*0251##", + "who": "4", + "what": null, + "where": "8", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715742.445693, + "iso_time": "2026-10-11T10:49:02.445693+00:00", + "direction": "rx", + "raw": "*4*303*8##", + "who": "4", + "what": "303", + "where": "8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715742.505621, + "iso_time": "2026-10-11T10:49:02.505621+00:00", + "direction": "rx", + "raw": "*#4*8*12*0220*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715742.92603, + "iso_time": "2026-10-11T10:49:02.926030+00:00", + "direction": "rx", + "raw": "*#4*10*0*0246##", + "who": "4", + "what": null, + "where": "10", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715742.974148, + "iso_time": "2026-10-11T10:49:02.974148+00:00", + "direction": "rx", + "raw": "*4*303*10##", + "who": "4", + "what": "303", + "where": "10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715743.044883, + "iso_time": "2026-10-11T10:49:03.044883+00:00", + "direction": "rx", + "raw": "*#4*10*12*0220*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715743.444305, + "iso_time": "2026-10-11T10:49:03.444305+00:00", + "direction": "rx", + "raw": "*#4*11*0*0235##", + "who": "4", + "what": null, + "where": "11", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715743.504414, + "iso_time": "2026-10-11T10:49:03.504414+00:00", + "direction": "rx", + "raw": "*4*303*11##", + "who": "4", + "what": "303", + "where": "11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715743.564991, + "iso_time": "2026-10-11T10:49:03.564991+00:00", + "direction": "rx", + "raw": "*#4*11*12*0220*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715743.99421, + "iso_time": "2026-10-11T10:49:03.994210+00:00", + "direction": "rx", + "raw": "*#4*12*0*0239##", + "who": "4", + "what": null, + "where": "12", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.05443, + "iso_time": "2026-10-11T10:49:04.054430+00:00", + "direction": "rx", + "raw": "*4*303*12##", + "who": "4", + "what": "303", + "where": "12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.115045, + "iso_time": "2026-10-11T10:49:04.115045+00:00", + "direction": "rx", + "raw": "*#4*12*12*0220*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.345333, + "iso_time": "2026-10-11T10:49:04.345333+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.515432, + "iso_time": "2026-10-11T10:49:04.515432+00:00", + "direction": "rx", + "raw": "*#4*11#1*20*0##", + "who": "4", + "what": null, + "where": "11", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.595536, + "iso_time": "2026-10-11T10:49:04.595536+00:00", + "direction": "rx", + "raw": "*#4*13*0*0271##", + "who": "4", + "what": null, + "where": "13", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.644846, + "iso_time": "2026-10-11T10:49:04.644846+00:00", + "direction": "rx", + "raw": "*4*303*13##", + "who": "4", + "what": "303", + "where": "13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.732862, + "iso_time": "2026-10-11T10:49:04.732862+00:00", + "direction": "rx", + "raw": "*#4*13*12*0220*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715744.915141, + "iso_time": "2026-10-11T10:49:04.915141+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715745.075086, + "iso_time": "2026-10-11T10:49:05.075086+00:00", + "direction": "rx", + "raw": "*#4*7#1*20*0##", + "who": "4", + "what": null, + "where": "7", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715745.165554, + "iso_time": "2026-10-11T10:49:05.165554+00:00", + "direction": "rx", + "raw": "*#4*14*0*0281##", + "who": "4", + "what": null, + "where": "14", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715745.215107, + "iso_time": "2026-10-11T10:49:05.215107+00:00", + "direction": "rx", + "raw": "*4*303*14##", + "who": "4", + "what": "303", + "where": "14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715745.296093, + "iso_time": "2026-10-11T10:49:05.296093+00:00", + "direction": "rx", + "raw": "*#4*14*12*0220*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715745.505516, + "iso_time": "2026-10-11T10:49:05.505516+00:00", + "direction": "rx", + "raw": "*4*103*#13##", + "who": "4", + "what": "103", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715745.815316, + "iso_time": "2026-10-11T10:49:05.815316+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715746.06557, + "iso_time": "2026-10-11T10:49:06.065570+00:00", + "direction": "rx", + "raw": "*#4*10#1*20*0##", + "who": "4", + "what": null, + "where": "10", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715746.144087, + "iso_time": "2026-10-11T10:49:06.144087+00:00", + "direction": "rx", + "raw": "*#4*2#1*20*0##", + "who": "4", + "what": null, + "where": "2", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715746.185301, + "iso_time": "2026-10-11T10:49:06.185301+00:00", + "direction": "rx", + "raw": "*4*103*#3##", + "who": "4", + "what": "103", + "where": "#3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715746.584956, + "iso_time": "2026-10-11T10:49:06.584956+00:00", + "direction": "rx", + "raw": "*#4*17*0*0230##", + "who": "4", + "what": null, + "where": "17", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715746.63483, + "iso_time": "2026-10-11T10:49:06.634830+00:00", + "direction": "rx", + "raw": "*4*303*17##", + "who": "4", + "what": "303", + "where": "17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715746.692719, + "iso_time": "2026-10-11T10:49:06.692719+00:00", + "direction": "rx", + "raw": "*#4*17*12*0000*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715747.064902, + "iso_time": "2026-10-11T10:49:07.064902+00:00", + "direction": "rx", + "raw": "*4*103*#17##", + "who": "4", + "what": "103", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715747.494519, + "iso_time": "2026-10-11T10:49:07.494519+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715747.624579, + "iso_time": "2026-10-11T10:49:07.624579+00:00", + "direction": "rx", + "raw": "*4*103*#4##", + "who": "4", + "what": "103", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715747.684359, + "iso_time": "2026-10-11T10:49:07.684359+00:00", + "direction": "rx", + "raw": "*#4*14#1*20*0##", + "who": "4", + "what": null, + "where": "14", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715748.1155, + "iso_time": "2026-10-11T10:49:08.115500+00:00", + "direction": "rx", + "raw": "*4*103*#11##", + "who": "4", + "what": "103", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715748.644648, + "iso_time": "2026-10-11T10:49:08.644648+00:00", + "direction": "rx", + "raw": "*#4*0#2*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715748.684429, + "iso_time": "2026-10-11T10:49:08.684429+00:00", + "direction": "rx", + "raw": "*#4*17#1*20*0##", + "who": "4", + "what": null, + "where": "17", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715748.764721, + "iso_time": "2026-10-11T10:49:08.764721+00:00", + "direction": "rx", + "raw": "*4*103*#7##", + "who": "4", + "what": "103", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715748.945548, + "iso_time": "2026-10-11T10:49:08.945548+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715749.129461, + "iso_time": "2026-10-11T10:49:09.129461+00:00", + "direction": "rx", + "raw": "*#4*4#1*20*0##", + "who": "4", + "what": null, + "where": "4", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715749.175423, + "iso_time": "2026-10-11T10:49:09.175423+00:00", + "direction": "rx", + "raw": "*4*103*#1##", + "who": "4", + "what": "103", + "where": "#1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715749.365338, + "iso_time": "2026-10-11T10:49:09.365338+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715749.485525, + "iso_time": "2026-10-11T10:49:09.485525+00:00", + "direction": "rx", + "raw": "*#4*8#1*20*0##", + "who": "4", + "what": null, + "where": "8", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715749.675675, + "iso_time": "2026-10-11T10:49:09.675675+00:00", + "direction": "rx", + "raw": "*4*103*#8##", + "who": "4", + "what": "103", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715750.194966, + "iso_time": "2026-10-11T10:49:10.194966+00:00", + "direction": "rx", + "raw": "*4*103*#7##", + "who": "4", + "what": "103", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715750.724818, + "iso_time": "2026-10-11T10:49:10.724818+00:00", + "direction": "rx", + "raw": "*4*103*#10##", + "who": "4", + "what": "103", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715751.245404, + "iso_time": "2026-10-11T10:49:11.245404+00:00", + "direction": "rx", + "raw": "*4*103*#4##", + "who": "4", + "what": "103", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715751.76483, + "iso_time": "2026-10-11T10:49:11.764830+00:00", + "direction": "rx", + "raw": "*4*103*#11##", + "who": "4", + "what": "103", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715752.285043, + "iso_time": "2026-10-11T10:49:12.285043+00:00", + "direction": "rx", + "raw": "*4*103*#8##", + "who": "4", + "what": "103", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715752.805112, + "iso_time": "2026-10-11T10:49:12.805112+00:00", + "direction": "rx", + "raw": "*4*103*#13##", + "who": "4", + "what": "103", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715753.324816, + "iso_time": "2026-10-11T10:49:13.324816+00:00", + "direction": "rx", + "raw": "*4*103*#12##", + "who": "4", + "what": "103", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715753.856108, + "iso_time": "2026-10-11T10:49:13.856108+00:00", + "direction": "rx", + "raw": "*4*103*#14##", + "who": "4", + "what": "103", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715754.285448, + "iso_time": "2026-10-11T10:49:14.285448+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715754.415804, + "iso_time": "2026-10-11T10:49:14.415804+00:00", + "direction": "rx", + "raw": "*4*103*#14##", + "who": "4", + "what": "103", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715754.473511, + "iso_time": "2026-10-11T10:49:14.473511+00:00", + "direction": "rx", + "raw": "*#4*12#1*20*0##", + "who": "4", + "what": null, + "where": "12", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715754.775738, + "iso_time": "2026-10-11T10:49:14.775738+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715754.913641, + "iso_time": "2026-10-11T10:49:14.913641+00:00", + "direction": "rx", + "raw": "*#4*13#1*20*0##", + "who": "4", + "what": null, + "where": "13", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715754.96333, + "iso_time": "2026-10-11T10:49:14.963330+00:00", + "direction": "rx", + "raw": "*4*103*#12##", + "who": "4", + "what": "103", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.055772, + "iso_time": "2026-10-11T10:49:15.055772+00:00", + "direction": "rx", + "raw": "*#4*1*14*0220*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.146143, + "iso_time": "2026-10-11T10:49:15.146143+00:00", + "direction": "rx", + "raw": "*#4*2*14*0220*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.268594, + "iso_time": "2026-10-11T10:49:15.268594+00:00", + "direction": "rx", + "raw": "*#4*4*14*0220*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.366497, + "iso_time": "2026-10-11T10:49:15.366497+00:00", + "direction": "rx", + "raw": "*#4*5*14*0220*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.44687, + "iso_time": "2026-10-11T10:49:15.446870+00:00", + "direction": "rx", + "raw": "*#4*6*14*0220*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.506406, + "iso_time": "2026-10-11T10:49:15.506406+00:00", + "direction": "rx", + "raw": "*4*103*#17##", + "who": "4", + "what": "103", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.595849, + "iso_time": "2026-10-11T10:49:15.595849+00:00", + "direction": "rx", + "raw": "*#4*7*14*0220*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.735823, + "iso_time": "2026-10-11T10:49:15.735823+00:00", + "direction": "rx", + "raw": "*#4*1*14*0220*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.795636, + "iso_time": "2026-10-11T10:49:15.795636+00:00", + "direction": "rx", + "raw": "*#4*8*14*0220*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715755.935812, + "iso_time": "2026-10-11T10:49:15.935812+00:00", + "direction": "rx", + "raw": "*#4*10*14*0220*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715756.035705, + "iso_time": "2026-10-11T10:49:16.035705+00:00", + "direction": "rx", + "raw": "*#4*2*14*0220*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715756.105801, + "iso_time": "2026-10-11T10:49:16.105801+00:00", + "direction": "rx", + "raw": "*#4*11*14*0220*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715756.23601, + "iso_time": "2026-10-11T10:49:16.236010+00:00", + "direction": "rx", + "raw": "*#4*12*14*0220*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715756.406462, + "iso_time": "2026-10-11T10:49:16.406462+00:00", + "direction": "rx", + "raw": "*#4*13*14*0220*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715756.566068, + "iso_time": "2026-10-11T10:49:16.566068+00:00", + "direction": "rx", + "raw": "*#4*14*14*0220*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715756.697666, + "iso_time": "2026-10-11T10:49:16.697666+00:00", + "direction": "rx", + "raw": "*#4*17*14*0000*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715757.185029, + "iso_time": "2026-10-11T10:49:17.185029+00:00", + "direction": "rx", + "raw": "*#4*3*14*0230*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715757.345497, + "iso_time": "2026-10-11T10:49:17.345497+00:00", + "direction": "rx", + "raw": "*#4*4*14*0220*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715757.515036, + "iso_time": "2026-10-11T10:49:17.515036+00:00", + "direction": "rx", + "raw": "*#4*5*14*0220*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715757.666044, + "iso_time": "2026-10-11T10:49:17.666044+00:00", + "direction": "rx", + "raw": "*#4*6*14*0220*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715757.825898, + "iso_time": "2026-10-11T10:49:17.825898+00:00", + "direction": "rx", + "raw": "*#4*7*14*0220*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715757.985835, + "iso_time": "2026-10-11T10:49:17.985835+00:00", + "direction": "rx", + "raw": "*#4*8*14*0220*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715758.155944, + "iso_time": "2026-10-11T10:49:18.155944+00:00", + "direction": "rx", + "raw": "*#4*10*14*0220*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715758.316026, + "iso_time": "2026-10-11T10:49:18.316026+00:00", + "direction": "rx", + "raw": "*#4*11*14*0220*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715758.456128, + "iso_time": "2026-10-11T10:49:18.456128+00:00", + "direction": "rx", + "raw": "*#4*12*14*0220*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715758.582768, + "iso_time": "2026-10-11T10:49:18.582768+00:00", + "direction": "rx", + "raw": "*#4*13*14*0220*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715758.706277, + "iso_time": "2026-10-11T10:49:18.706277+00:00", + "direction": "rx", + "raw": "*#4*14*14*0220*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791715758.806713, + "iso_time": "2026-10-11T10:49:18.806713+00:00", + "direction": "rx", + "raw": "*#4*17*14*0000*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + } + ] +} diff --git a/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-02-55.Holiday.ON.json b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-02-55.Holiday.ON.json new file mode 100644 index 000000000..a302682c5 --- /dev/null +++ b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-02-55.Holiday.ON.json @@ -0,0 +1,1120 @@ +{ + "capture": { + "kind": "trace", + "started_at": null, + "filters": { + "who": "4", + "where": null, + "direction": null + }, + "window": { + "first": "2026-10-11T11:02:02.258Z", + "last": "2026-10-11T11:02:30.808Z", + "frames": 88, + "buffer_frames": 115, + "buffer_depth": 500, + "truncated": false + } + }, + "environment": { + "home_assistant_version": "2026.10.1", + "integration_version": "2.0.0b14", + "ownd_version": "2.0.0b9", + "exported_at": "2026-10-11T11:02:55.880Z" + }, + "gateway": { + "model": "F453AV", + "manufacturer": "BTicino S.p.A.", + "firmware": "1.0", + "mac_prefix": "00:03:50", + "connection_type": "tcp", + "queue_pacing": 0.05, + "is_connected": true, + "identification": { + "model": "F453AV", + "source": "ssdp", + "configured_model": "F453AV", + "ssdp_model": "F453AV", + "who13_code": "12", + "who13_model": "F453AV", + "who13_model_official": null, + "who13_model_observed": "F453AV", + "who13_firmware": null, + "who13_kernel": null, + "who13_distribution": null, + "who1013_code": null, + "who1013_model": null, + "who1013_other_names": [], + "who1013_n_conf": null, + "who1013_brand": null, + "who1013_line": null, + "profile": "GenericGatewayProfile", + "conflict": null + } + }, + "telemetry": { + "total_rx": 125, + "total_tx": 0, + "captured_in_buffer": 115, + "buffer_depth": 500, + "queue_depth": 0 + }, + "frames": [ + { + "timestamp": 1791716522.258457, + "iso_time": "2026-10-11T11:02:02.258457+00:00", + "direction": "rx", + "raw": "*4*115#1101*#0##", + "who": "4", + "what": "115", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716522.266166, + "iso_time": "2026-10-11T11:02:02.266166+00:00", + "direction": "rx", + "raw": "*4*21*#0##", + "who": "4", + "what": "21", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716522.26935, + "iso_time": "2026-10-11T11:02:02.269350+00:00", + "direction": "rx", + "raw": "*4*22*#0##", + "who": "4", + "what": "22", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716522.849656, + "iso_time": "2026-10-11T11:02:02.849656+00:00", + "direction": "rx", + "raw": "*#4*#0*30*11*10*2026##", + "who": "4", + "what": null, + "where": "#0", + "dimension": "30", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716523.301, + "iso_time": "2026-10-11T11:02:03.301000+00:00", + "direction": "rx", + "raw": "*#4*#0*31*13*10##", + "who": "4", + "what": null, + "where": "#0", + "dimension": "31", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716523.838081, + "iso_time": "2026-10-11T11:02:03.838081+00:00", + "direction": "rx", + "raw": "*#4*1*0*0239##", + "who": "4", + "what": null, + "where": "1", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716524.348032, + "iso_time": "2026-10-11T11:02:04.348032+00:00", + "direction": "rx", + "raw": "*4*111*#10##", + "who": "4", + "what": "111", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716524.868071, + "iso_time": "2026-10-11T11:02:04.868071+00:00", + "direction": "rx", + "raw": "*4*111*#3##", + "who": "4", + "what": "111", + "where": "#3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716525.408712, + "iso_time": "2026-10-11T11:02:05.408712+00:00", + "direction": "rx", + "raw": "*#4*2*0*0237##", + "who": "4", + "what": null, + "where": "2", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716525.908307, + "iso_time": "2026-10-11T11:02:05.908307+00:00", + "direction": "rx", + "raw": "*4*111*#13##", + "who": "4", + "what": "111", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716526.42809, + "iso_time": "2026-10-11T11:02:06.428090+00:00", + "direction": "rx", + "raw": "*4*111*#4##", + "who": "4", + "what": "111", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716526.986879, + "iso_time": "2026-10-11T11:02:06.986879+00:00", + "direction": "rx", + "raw": "*#4*3*0*0239##", + "who": "4", + "what": null, + "where": "3", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716527.479519, + "iso_time": "2026-10-11T11:02:07.479519+00:00", + "direction": "rx", + "raw": "*4*111*#17##", + "who": "4", + "what": "111", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716527.998476, + "iso_time": "2026-10-11T11:02:07.998476+00:00", + "direction": "rx", + "raw": "*4*111*#7##", + "who": "4", + "what": "111", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716528.539077, + "iso_time": "2026-10-11T11:02:08.539077+00:00", + "direction": "rx", + "raw": "*#4*4*0*0248##", + "who": "4", + "what": null, + "where": "4", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716528.927829, + "iso_time": "2026-10-11T11:02:08.927829+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716528.997899, + "iso_time": "2026-10-11T11:02:08.997899+00:00", + "direction": "rx", + "raw": "*#4*1#1*20*0##", + "who": "4", + "what": null, + "where": "1", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716529.07838, + "iso_time": "2026-10-11T11:02:09.078380+00:00", + "direction": "rx", + "raw": "*4*111*#11##", + "who": "4", + "what": "111", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716529.278931, + "iso_time": "2026-10-11T11:02:09.278931+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716529.3893, + "iso_time": "2026-10-11T11:02:09.389300+00:00", + "direction": "rx", + "raw": "*#4*4#1*20*0##", + "who": "4", + "what": null, + "where": "4", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716529.55892, + "iso_time": "2026-10-11T11:02:09.558920+00:00", + "direction": "rx", + "raw": "*4*111*#8##", + "who": "4", + "what": "111", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716530.108711, + "iso_time": "2026-10-11T11:02:10.108711+00:00", + "direction": "rx", + "raw": "*#4*5*0*0252##", + "who": "4", + "what": null, + "where": "5", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716530.218862, + "iso_time": "2026-10-11T11:02:10.218862+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716530.33741, + "iso_time": "2026-10-11T11:02:10.337410+00:00", + "direction": "rx", + "raw": "*#4*3#1*20*0##", + "who": "4", + "what": null, + "where": "3", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716530.608464, + "iso_time": "2026-10-11T11:02:10.608464+00:00", + "direction": "rx", + "raw": "*4*111*#7##", + "who": "4", + "what": "111", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716530.959644, + "iso_time": "2026-10-11T11:02:10.959644+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716531.069154, + "iso_time": "2026-10-11T11:02:11.069154+00:00", + "direction": "rx", + "raw": "*#4*5#1*20*0##", + "who": "4", + "what": null, + "where": "5", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716531.149141, + "iso_time": "2026-10-11T11:02:11.149141+00:00", + "direction": "rx", + "raw": "*4*111*#10##", + "who": "4", + "what": "111", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716531.678702, + "iso_time": "2026-10-11T11:02:11.678702+00:00", + "direction": "rx", + "raw": "*#4*6*0*0254##", + "who": "4", + "what": null, + "where": "6", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716532.168381, + "iso_time": "2026-10-11T11:02:12.168381+00:00", + "direction": "rx", + "raw": "*4*111*#4##", + "who": "4", + "what": "111", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716532.698141, + "iso_time": "2026-10-11T11:02:12.698141+00:00", + "direction": "rx", + "raw": "*4*111*#11##", + "who": "4", + "what": "111", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716532.999069, + "iso_time": "2026-10-11T11:02:12.999069+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716533.139035, + "iso_time": "2026-10-11T11:02:13.139035+00:00", + "direction": "rx", + "raw": "*#4*6#1*20*0##", + "who": "4", + "what": null, + "where": "6", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716533.258981, + "iso_time": "2026-10-11T11:02:13.258981+00:00", + "direction": "rx", + "raw": "*#4*7*0*0248##", + "who": "4", + "what": null, + "where": "7", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716533.73887, + "iso_time": "2026-10-11T11:02:13.738870+00:00", + "direction": "rx", + "raw": "*4*111*#8##", + "who": "4", + "what": "111", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716534.258504, + "iso_time": "2026-10-11T11:02:14.258504+00:00", + "direction": "rx", + "raw": "*4*111*#13##", + "who": "4", + "what": "111", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716534.808593, + "iso_time": "2026-10-11T11:02:14.808593+00:00", + "direction": "rx", + "raw": "*#4*8*0*0251##", + "who": "4", + "what": null, + "where": "8", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716535.338485, + "iso_time": "2026-10-11T11:02:15.338485+00:00", + "direction": "rx", + "raw": "*4*111*#14##", + "who": "4", + "what": "111", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716535.385787, + "iso_time": "2026-10-11T11:02:15.385787+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716535.516777, + "iso_time": "2026-10-11T11:02:15.516777+00:00", + "direction": "rx", + "raw": "*#4*2#1*20*0##", + "who": "4", + "what": null, + "where": "2", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716535.858618, + "iso_time": "2026-10-11T11:02:15.858618+00:00", + "direction": "rx", + "raw": "*4*111*#12##", + "who": "4", + "what": "111", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716535.898374, + "iso_time": "2026-10-11T11:02:15.898374+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716535.988909, + "iso_time": "2026-10-11T11:02:15.988909+00:00", + "direction": "rx", + "raw": "*#4*1*14*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.089704, + "iso_time": "2026-10-11T11:02:16.089704+00:00", + "direction": "rx", + "raw": "*#4*2*14*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.229411, + "iso_time": "2026-10-11T11:02:16.229411+00:00", + "direction": "rx", + "raw": "*#4*4*14*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.398862, + "iso_time": "2026-10-11T11:02:16.398862+00:00", + "direction": "rx", + "raw": "*#4*7#1*20*0##", + "who": "4", + "what": null, + "where": "7", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.449397, + "iso_time": "2026-10-11T11:02:16.449397+00:00", + "direction": "rx", + "raw": "*#4*5*14*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.539536, + "iso_time": "2026-10-11T11:02:16.539536+00:00", + "direction": "rx", + "raw": "*#4*6*14*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.869082, + "iso_time": "2026-10-11T11:02:16.869082+00:00", + "direction": "rx", + "raw": "*4*111*#12##", + "who": "4", + "what": "111", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.929159, + "iso_time": "2026-10-11T11:02:16.929159+00:00", + "direction": "rx", + "raw": "*#4*8*14*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716536.979211, + "iso_time": "2026-10-11T11:02:16.979211+00:00", + "direction": "rx", + "raw": "*#4*10*0*0246##", + "who": "4", + "what": null, + "where": "10", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716537.28937, + "iso_time": "2026-10-11T11:02:17.289370+00:00", + "direction": "rx", + "raw": "*#4*10*14*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716537.389617, + "iso_time": "2026-10-11T11:02:17.389617+00:00", + "direction": "rx", + "raw": "*4*111*#14##", + "who": "4", + "what": "111", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716537.949087, + "iso_time": "2026-10-11T11:02:17.949087+00:00", + "direction": "rx", + "raw": "*#4*11*0*0236##", + "who": "4", + "what": null, + "where": "11", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716538.139624, + "iso_time": "2026-10-11T11:02:18.139624+00:00", + "direction": "rx", + "raw": "*#4*11*14*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716538.438568, + "iso_time": "2026-10-11T11:02:18.438568+00:00", + "direction": "rx", + "raw": "*4*111*#17##", + "who": "4", + "what": "111", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716538.59891, + "iso_time": "2026-10-11T11:02:18.598910+00:00", + "direction": "rx", + "raw": "*#4*1*14*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716538.768599, + "iso_time": "2026-10-11T11:02:18.768599+00:00", + "direction": "rx", + "raw": "*#4*2*14*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716538.919429, + "iso_time": "2026-10-11T11:02:18.919429+00:00", + "direction": "rx", + "raw": "*#4*3*14*0100*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.069329, + "iso_time": "2026-10-11T11:02:19.069329+00:00", + "direction": "rx", + "raw": "*#4*12*0*0244##", + "who": "4", + "what": null, + "where": "12", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.12615, + "iso_time": "2026-10-11T11:02:19.126150+00:00", + "direction": "rx", + "raw": "*#4*4*14*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.273525, + "iso_time": "2026-10-11T11:02:19.273525+00:00", + "direction": "rx", + "raw": "*#4*5*14*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.423352, + "iso_time": "2026-10-11T11:02:19.423352+00:00", + "direction": "rx", + "raw": "*#4*6*14*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.61955, + "iso_time": "2026-10-11T11:02:19.619550+00:00", + "direction": "rx", + "raw": "*#4*7*14*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.669545, + "iso_time": "2026-10-11T11:02:19.669545+00:00", + "direction": "rx", + "raw": "*#4*12*14*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.809393, + "iso_time": "2026-10-11T11:02:19.809393+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.906431, + "iso_time": "2026-10-11T11:02:19.906431+00:00", + "direction": "rx", + "raw": "*#4*8*14*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716539.939572, + "iso_time": "2026-10-11T11:02:19.939572+00:00", + "direction": "rx", + "raw": "*#4*13*0*0270##", + "who": "4", + "what": null, + "where": "13", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.079347, + "iso_time": "2026-10-11T11:02:20.079347+00:00", + "direction": "rx", + "raw": "*#4*8#1*20*0##", + "who": "4", + "what": null, + "where": "8", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.121399, + "iso_time": "2026-10-11T11:02:20.121399+00:00", + "direction": "rx", + "raw": "*#4*10*14*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.259383, + "iso_time": "2026-10-11T11:02:20.259383+00:00", + "direction": "rx", + "raw": "*#4*14*0*0280##", + "who": "4", + "what": null, + "where": "14", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.302059, + "iso_time": "2026-10-11T11:02:20.302059+00:00", + "direction": "rx", + "raw": "*#4*11*14*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.459489, + "iso_time": "2026-10-11T11:02:20.459489+00:00", + "direction": "rx", + "raw": "*#4*12*14*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.600145, + "iso_time": "2026-10-11T11:02:20.600145+00:00", + "direction": "rx", + "raw": "*#4*13*14*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.639657, + "iso_time": "2026-10-11T11:02:20.639657+00:00", + "direction": "rx", + "raw": "*#4*17*0*0233##", + "who": "4", + "what": null, + "where": "17", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716540.759446, + "iso_time": "2026-10-11T11:02:20.759446+00:00", + "direction": "rx", + "raw": "*#4*14*14*0100*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716541.009576, + "iso_time": "2026-10-11T11:02:21.009576+00:00", + "direction": "rx", + "raw": "*#4*17*14*0260*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716544.558592, + "iso_time": "2026-10-11T11:02:24.558592+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716544.698524, + "iso_time": "2026-10-11T11:02:24.698524+00:00", + "direction": "rx", + "raw": "*#4*13#1*20*0##", + "who": "4", + "what": null, + "where": "13", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716545.058704, + "iso_time": "2026-10-11T11:02:25.058704+00:00", + "direction": "rx", + "raw": "*#4*17#1*20*1##", + "who": "4", + "what": null, + "where": "17", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716545.248362, + "iso_time": "2026-10-11T11:02:25.248362+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716545.37958, + "iso_time": "2026-10-11T11:02:25.379580+00:00", + "direction": "rx", + "raw": "*#4*12#1*20*0##", + "who": "4", + "what": null, + "where": "12", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716546.738702, + "iso_time": "2026-10-11T11:02:26.738702+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716546.878185, + "iso_time": "2026-10-11T11:02:26.878185+00:00", + "direction": "rx", + "raw": "*#4*11#1*20*0##", + "who": "4", + "what": null, + "where": "11", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716547.228639, + "iso_time": "2026-10-11T11:02:27.228639+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716547.348574, + "iso_time": "2026-10-11T11:02:27.348574+00:00", + "direction": "rx", + "raw": "*#4*10#1*20*0##", + "who": "4", + "what": null, + "where": "10", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716550.668691, + "iso_time": "2026-10-11T11:02:30.668691+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791716550.808732, + "iso_time": "2026-10-11T11:02:30.808732+00:00", + "direction": "rx", + "raw": "*#4*14#1*20*0##", + "who": "4", + "what": null, + "where": "14", + "dimension": "20", + "is_ack": false, + "is_nack": false + } + ] +} diff --git a/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-10-23.Holiday.OFF.automatically.json b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-10-23.Holiday.OFF.automatically.json new file mode 100644 index 000000000..1bf2c80d9 --- /dev/null +++ b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-10-23.Holiday.OFF.automatically.json @@ -0,0 +1,304 @@ +{ + "capture": { + "kind": "trace", + "started_at": null, + "filters": { + "who": "4", + "where": null, + "direction": null + }, + "window": { + "first": "2026-10-11T11:10:00.772Z", + "last": "2026-10-11T11:10:10.631Z", + "frames": 20, + "buffer_frames": 72, + "buffer_depth": 500, + "truncated": false + } + }, + "environment": { + "home_assistant_version": "2026.10.1", + "integration_version": "2.0.0b14", + "ownd_version": "2.0.0b9", + "exported_at": "2026-10-11T11:10:23.726Z" + }, + "gateway": { + "model": "F453AV", + "manufacturer": "BTicino S.p.A.", + "firmware": "1.0", + "mac_prefix": "00:03:50", + "connection_type": "tcp", + "queue_pacing": 0.05, + "is_connected": true, + "identification": { + "model": "F453AV", + "source": "ssdp", + "configured_model": "F453AV", + "ssdp_model": "F453AV", + "who13_code": "12", + "who13_model": "F453AV", + "who13_model_official": null, + "who13_model_observed": "F453AV", + "who13_firmware": null, + "who13_kernel": null, + "who13_distribution": null, + "who1013_code": null, + "who1013_model": null, + "who1013_other_names": [], + "who1013_n_conf": null, + "who1013_brand": null, + "who1013_line": null, + "profile": "GenericGatewayProfile", + "conflict": null + } + }, + "telemetry": { + "total_rx": 78, + "total_tx": 0, + "captured_in_buffer": 72, + "buffer_depth": 500, + "queue_depth": 0 + }, + "frames": [ + { + "timestamp": 1791717000.772718, + "iso_time": "2026-10-11T11:10:00.772718+00:00", + "direction": "rx", + "raw": "*4*1101*#0##", + "who": "4", + "what": "1101", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717000.789841, + "iso_time": "2026-10-11T11:10:00.789841+00:00", + "direction": "rx", + "raw": "*4*21*#0##", + "who": "4", + "what": "21", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717000.790996, + "iso_time": "2026-10-11T11:10:00.790996+00:00", + "direction": "rx", + "raw": "*4*22*#0##", + "who": "4", + "what": "22", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717001.343346, + "iso_time": "2026-10-11T11:10:01.343346+00:00", + "direction": "rx", + "raw": "*4*111*#10##", + "who": "4", + "what": "111", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717001.773095, + "iso_time": "2026-10-11T11:10:01.773095+00:00", + "direction": "rx", + "raw": "*4*111*#13##", + "who": "4", + "what": "111", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717002.280681, + "iso_time": "2026-10-11T11:10:02.280681+00:00", + "direction": "rx", + "raw": "*4*111*#3##", + "who": "4", + "what": "111", + "where": "#3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717002.801039, + "iso_time": "2026-10-11T11:10:02.801039+00:00", + "direction": "rx", + "raw": "*4*111*#17##", + "who": "4", + "what": "111", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717003.320578, + "iso_time": "2026-10-11T11:10:03.320578+00:00", + "direction": "rx", + "raw": "*4*111*#4##", + "who": "4", + "what": "111", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717003.841153, + "iso_time": "2026-10-11T11:10:03.841153+00:00", + "direction": "rx", + "raw": "*4*111*#11##", + "who": "4", + "what": "111", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717004.360851, + "iso_time": "2026-10-11T11:10:04.360851+00:00", + "direction": "rx", + "raw": "*4*111*#7##", + "who": "4", + "what": "111", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717005.410965, + "iso_time": "2026-10-11T11:10:05.410965+00:00", + "direction": "rx", + "raw": "*4*111*#4##", + "who": "4", + "what": "111", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717005.930993, + "iso_time": "2026-10-11T11:10:05.930993+00:00", + "direction": "rx", + "raw": "*4*111*#8##", + "who": "4", + "what": "111", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717006.971106, + "iso_time": "2026-10-11T11:10:06.971106+00:00", + "direction": "rx", + "raw": "*4*111*#14##", + "who": "4", + "what": "111", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717007.500901, + "iso_time": "2026-10-11T11:10:07.500901+00:00", + "direction": "rx", + "raw": "*4*111*#10##", + "who": "4", + "what": "111", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717008.021166, + "iso_time": "2026-10-11T11:10:08.021166+00:00", + "direction": "rx", + "raw": "*4*111*#12##", + "who": "4", + "what": "111", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717008.541302, + "iso_time": "2026-10-11T11:10:08.541302+00:00", + "direction": "rx", + "raw": "*4*111*#11##", + "who": "4", + "what": "111", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717009.061331, + "iso_time": "2026-10-11T11:10:09.061331+00:00", + "direction": "rx", + "raw": "*4*111*#13##", + "who": "4", + "what": "111", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717009.581136, + "iso_time": "2026-10-11T11:10:09.581136+00:00", + "direction": "rx", + "raw": "*4*111*#12##", + "who": "4", + "what": "111", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717010.102416, + "iso_time": "2026-10-11T11:10:10.102416+00:00", + "direction": "rx", + "raw": "*4*111*#14##", + "who": "4", + "what": "111", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717010.631042, + "iso_time": "2026-10-11T11:10:10.631042+00:00", + "direction": "rx", + "raw": "*4*111*#17##", + "who": "4", + "what": "111", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + } + ] +} diff --git a/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-13-06.Antifreeze.ON.json b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-13-06.Antifreeze.ON.json new file mode 100644 index 000000000..b873e95bb --- /dev/null +++ b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-13-06.Antifreeze.ON.json @@ -0,0 +1,1408 @@ +{ + "capture": { + "kind": "trace", + "started_at": null, + "filters": { + "who": "4", + "where": null, + "direction": null + }, + "window": { + "first": "2026-10-11T11:12:41.837Z", + "last": "2026-10-11T11:13:01.445Z", + "frames": 112, + "buffer_frames": 126, + "buffer_depth": 500, + "truncated": false + } + }, + "environment": { + "home_assistant_version": "2026.10.1", + "integration_version": "2.0.0b14", + "ownd_version": "2.0.0b9", + "exported_at": "2026-10-11T11:13:06.066Z" + }, + "gateway": { + "model": "F453AV", + "manufacturer": "BTicino S.p.A.", + "firmware": "1.0", + "mac_prefix": "00:03:50", + "connection_type": "tcp", + "queue_pacing": 0.05, + "is_connected": true, + "identification": { + "model": "F453AV", + "source": "ssdp", + "configured_model": "F453AV", + "ssdp_model": "F453AV", + "who13_code": "12", + "who13_model": "F453AV", + "who13_model_official": null, + "who13_model_observed": "F453AV", + "who13_firmware": null, + "who13_kernel": null, + "who13_distribution": null, + "who1013_code": null, + "who1013_model": null, + "who1013_other_names": [], + "who1013_n_conf": null, + "who1013_brand": null, + "who1013_line": null, + "profile": "GenericGatewayProfile", + "conflict": null + } + }, + "telemetry": { + "total_rx": 126, + "total_tx": 0, + "captured_in_buffer": 126, + "buffer_depth": 500, + "queue_depth": 0 + }, + "frames": [ + { + "timestamp": 1791717161.83746, + "iso_time": "2026-10-11T11:12:41.837460+00:00", + "direction": "rx", + "raw": "*4*102*#0##", + "who": "4", + "what": "102", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717161.847546, + "iso_time": "2026-10-11T11:12:41.847546+00:00", + "direction": "rx", + "raw": "*4*21*#0##", + "who": "4", + "what": "21", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717161.848627, + "iso_time": "2026-10-11T11:12:41.848627+00:00", + "direction": "rx", + "raw": "*4*22*#0##", + "who": "4", + "what": "22", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717162.436506, + "iso_time": "2026-10-11T11:12:42.436506+00:00", + "direction": "rx", + "raw": "*#4*1*0*0239##", + "who": "4", + "what": null, + "where": "1", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717162.466805, + "iso_time": "2026-10-11T11:12:42.466805+00:00", + "direction": "rx", + "raw": "*4*303*1##", + "who": "4", + "what": "303", + "where": "1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717162.896273, + "iso_time": "2026-10-11T11:12:42.896273+00:00", + "direction": "rx", + "raw": "*#4*2*0*0237##", + "who": "4", + "what": null, + "where": "2", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717162.925747, + "iso_time": "2026-10-11T11:12:42.925747+00:00", + "direction": "rx", + "raw": "*4*303*2##", + "who": "4", + "what": "303", + "where": "2", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717163.416147, + "iso_time": "2026-10-11T11:12:43.416147+00:00", + "direction": "rx", + "raw": "*#4*3*0*0238##", + "who": "4", + "what": null, + "where": "3", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717163.45592, + "iso_time": "2026-10-11T11:12:43.455920+00:00", + "direction": "rx", + "raw": "*4*102*3##", + "who": "4", + "what": "102", + "where": "3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717163.505508, + "iso_time": "2026-10-11T11:12:43.505508+00:00", + "direction": "rx", + "raw": "*#4*3*12*0100*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717163.946002, + "iso_time": "2026-10-11T11:12:43.946002+00:00", + "direction": "rx", + "raw": "*#4*4*0*0247##", + "who": "4", + "what": null, + "where": "4", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717163.985777, + "iso_time": "2026-10-11T11:12:43.985777+00:00", + "direction": "rx", + "raw": "*4*102*4##", + "who": "4", + "what": "102", + "where": "4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717164.03555, + "iso_time": "2026-10-11T11:12:44.035550+00:00", + "direction": "rx", + "raw": "*#4*4*12*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717164.466555, + "iso_time": "2026-10-11T11:12:44.466555+00:00", + "direction": "rx", + "raw": "*#4*5*0*0251##", + "who": "4", + "what": null, + "where": "5", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717164.505907, + "iso_time": "2026-10-11T11:12:44.505907+00:00", + "direction": "rx", + "raw": "*4*303*5##", + "who": "4", + "what": "303", + "where": "5", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717164.985975, + "iso_time": "2026-10-11T11:12:44.985975+00:00", + "direction": "rx", + "raw": "*#4*6*0*0254##", + "who": "4", + "what": null, + "where": "6", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717165.035949, + "iso_time": "2026-10-11T11:12:45.035949+00:00", + "direction": "rx", + "raw": "*4*303*6##", + "who": "4", + "what": "303", + "where": "6", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717165.5167, + "iso_time": "2026-10-11T11:12:45.516700+00:00", + "direction": "rx", + "raw": "*#4*7*0*0249##", + "who": "4", + "what": null, + "where": "7", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717165.555889, + "iso_time": "2026-10-11T11:12:45.555889+00:00", + "direction": "rx", + "raw": "*4*102*7##", + "who": "4", + "what": "102", + "where": "7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717165.635794, + "iso_time": "2026-10-11T11:12:45.635794+00:00", + "direction": "rx", + "raw": "*#4*7*12*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717166.005161, + "iso_time": "2026-10-11T11:12:46.005161+00:00", + "direction": "rx", + "raw": "*4*102*#10##", + "who": "4", + "what": "102", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717166.187474, + "iso_time": "2026-10-11T11:12:46.187474+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717166.298077, + "iso_time": "2026-10-11T11:12:46.298077+00:00", + "direction": "rx", + "raw": "*#4*6#1*20*0##", + "who": "4", + "what": null, + "where": "6", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717166.52586, + "iso_time": "2026-10-11T11:12:46.525860+00:00", + "direction": "rx", + "raw": "*4*102*#3##", + "who": "4", + "what": "102", + "where": "#3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717166.94671, + "iso_time": "2026-10-11T11:12:46.946710+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.04656, + "iso_time": "2026-10-11T11:12:47.046560+00:00", + "direction": "rx", + "raw": "*#4*2#1*20*0##", + "who": "4", + "what": null, + "where": "2", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.136909, + "iso_time": "2026-10-11T11:12:47.136909+00:00", + "direction": "rx", + "raw": "*#4*8*0*0251##", + "who": "4", + "what": null, + "where": "8", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.176569, + "iso_time": "2026-10-11T11:12:47.176569+00:00", + "direction": "rx", + "raw": "*4*102*8##", + "who": "4", + "what": "102", + "where": "8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.23629, + "iso_time": "2026-10-11T11:12:47.236290+00:00", + "direction": "rx", + "raw": "*#4*8*12*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.606451, + "iso_time": "2026-10-11T11:12:47.606451+00:00", + "direction": "rx", + "raw": "*#4*10*0*0245##", + "who": "4", + "what": null, + "where": "10", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.656058, + "iso_time": "2026-10-11T11:12:47.656058+00:00", + "direction": "rx", + "raw": "*4*102*10##", + "who": "4", + "what": "102", + "where": "10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717167.725719, + "iso_time": "2026-10-11T11:12:47.725719+00:00", + "direction": "rx", + "raw": "*#4*10*12*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.076141, + "iso_time": "2026-10-11T11:12:48.076141+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.246792, + "iso_time": "2026-10-11T11:12:48.246792+00:00", + "direction": "rx", + "raw": "*#4*10#1*20*0##", + "who": "4", + "what": null, + "where": "10", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.27742, + "iso_time": "2026-10-11T11:12:48.277420+00:00", + "direction": "rx", + "raw": "*#4*11*0*0236##", + "who": "4", + "what": null, + "where": "11", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.339507, + "iso_time": "2026-10-11T11:12:48.339507+00:00", + "direction": "rx", + "raw": "*4*102*11##", + "who": "4", + "what": "102", + "where": "11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.396446, + "iso_time": "2026-10-11T11:12:48.396446+00:00", + "direction": "rx", + "raw": "*#4*11*12*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.517136, + "iso_time": "2026-10-11T11:12:48.517136+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.777507, + "iso_time": "2026-10-11T11:12:48.777507+00:00", + "direction": "rx", + "raw": "*#4*7#1*20*0##", + "who": "4", + "what": null, + "where": "7", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.886973, + "iso_time": "2026-10-11T11:12:48.886973+00:00", + "direction": "rx", + "raw": "*#4*12*0*0244##", + "who": "4", + "what": null, + "where": "12", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.937038, + "iso_time": "2026-10-11T11:12:48.937038+00:00", + "direction": "rx", + "raw": "*#4*11#1*20*0##", + "who": "4", + "what": null, + "where": "11", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717168.976452, + "iso_time": "2026-10-11T11:12:48.976452+00:00", + "direction": "rx", + "raw": "*4*102*12##", + "who": "4", + "what": "102", + "where": "12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.046674, + "iso_time": "2026-10-11T11:12:49.046674+00:00", + "direction": "rx", + "raw": "*#4*12*12*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.206994, + "iso_time": "2026-10-11T11:12:49.206994+00:00", + "direction": "rx", + "raw": "*#4*13*0*0266##", + "who": "4", + "what": null, + "where": "13", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.256918, + "iso_time": "2026-10-11T11:12:49.256918+00:00", + "direction": "rx", + "raw": "*4*102*13##", + "who": "4", + "what": "102", + "where": "13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.326956, + "iso_time": "2026-10-11T11:12:49.326956+00:00", + "direction": "rx", + "raw": "*#4*13*12*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.727868, + "iso_time": "2026-10-11T11:12:49.727868+00:00", + "direction": "rx", + "raw": "*#4*14*0*0276##", + "who": "4", + "what": null, + "where": "14", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.786211, + "iso_time": "2026-10-11T11:12:49.786211+00:00", + "direction": "rx", + "raw": "*4*102*14##", + "who": "4", + "what": "102", + "where": "14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717169.856126, + "iso_time": "2026-10-11T11:12:49.856126+00:00", + "direction": "rx", + "raw": "*#4*14*12*0100*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717170.177153, + "iso_time": "2026-10-11T11:12:50.177153+00:00", + "direction": "rx", + "raw": "*4*102*#13##", + "who": "4", + "what": "102", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717170.708166, + "iso_time": "2026-10-11T11:12:50.708166+00:00", + "direction": "rx", + "raw": "*4*102*#4##", + "who": "4", + "what": "102", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717171.24672, + "iso_time": "2026-10-11T11:12:51.246720+00:00", + "direction": "rx", + "raw": "*#4*17*0*0232##", + "who": "4", + "what": null, + "where": "17", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717171.277008, + "iso_time": "2026-10-11T11:12:51.277008+00:00", + "direction": "rx", + "raw": "*4*102*17##", + "who": "4", + "what": "102", + "where": "17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717171.316354, + "iso_time": "2026-10-11T11:12:51.316354+00:00", + "direction": "rx", + "raw": "*#4*17*12*0006*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717172.315483, + "iso_time": "2026-10-11T11:12:52.315483+00:00", + "direction": "rx", + "raw": "*4*102*#7##", + "who": "4", + "what": "102", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717172.356509, + "iso_time": "2026-10-11T11:12:52.356509+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717172.557013, + "iso_time": "2026-10-11T11:12:52.557013+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717172.626847, + "iso_time": "2026-10-11T11:12:52.626847+00:00", + "direction": "rx", + "raw": "*#4*1#1*20*0##", + "who": "4", + "what": null, + "where": "1", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717172.666884, + "iso_time": "2026-10-11T11:12:52.666884+00:00", + "direction": "rx", + "raw": "*#4*8#1*20*0##", + "who": "4", + "what": null, + "where": "8", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717172.915974, + "iso_time": "2026-10-11T11:12:52.915974+00:00", + "direction": "rx", + "raw": "*4*102*#11##", + "who": "4", + "what": "102", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717173.066846, + "iso_time": "2026-10-11T11:12:53.066846+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717173.316947, + "iso_time": "2026-10-11T11:12:53.316947+00:00", + "direction": "rx", + "raw": "*#4*14#1*20*0##", + "who": "4", + "what": null, + "where": "14", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717173.387288, + "iso_time": "2026-10-11T11:12:53.387288+00:00", + "direction": "rx", + "raw": "*#4*3#1*20*0##", + "who": "4", + "what": null, + "where": "3", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717173.436366, + "iso_time": "2026-10-11T11:12:53.436366+00:00", + "direction": "rx", + "raw": "*4*102*#8##", + "who": "4", + "what": "102", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717173.836211, + "iso_time": "2026-10-11T11:12:53.836211+00:00", + "direction": "rx", + "raw": "*4*102*#7##", + "who": "4", + "what": "102", + "where": "#7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717173.996655, + "iso_time": "2026-10-11T11:12:53.996655+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717174.0969, + "iso_time": "2026-10-11T11:12:54.096900+00:00", + "direction": "rx", + "raw": "*#4*4#1*20*0##", + "who": "4", + "what": null, + "where": "4", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717174.357204, + "iso_time": "2026-10-11T11:12:54.357204+00:00", + "direction": "rx", + "raw": "*4*102*#10##", + "who": "4", + "what": "102", + "where": "#10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717174.875555, + "iso_time": "2026-10-11T11:12:54.875555+00:00", + "direction": "rx", + "raw": "*4*102*#4##", + "who": "4", + "what": "102", + "where": "#4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717175.066374, + "iso_time": "2026-10-11T11:12:55.066374+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717175.176958, + "iso_time": "2026-10-11T11:12:55.176958+00:00", + "direction": "rx", + "raw": "*#4*5#1*20*0##", + "who": "4", + "what": null, + "where": "5", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717175.396196, + "iso_time": "2026-10-11T11:12:55.396196+00:00", + "direction": "rx", + "raw": "*4*102*#11##", + "who": "4", + "what": "102", + "where": "#11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717175.924152, + "iso_time": "2026-10-11T11:12:55.924152+00:00", + "direction": "rx", + "raw": "*4*102*#8##", + "who": "4", + "what": "102", + "where": "#8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717176.314681, + "iso_time": "2026-10-11T11:12:56.314681+00:00", + "direction": "rx", + "raw": "*#4*0#2*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717176.344531, + "iso_time": "2026-10-11T11:12:56.344531+00:00", + "direction": "rx", + "raw": "*#4*17#1*20*0##", + "who": "4", + "what": null, + "where": "17", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717176.474062, + "iso_time": "2026-10-11T11:12:56.474062+00:00", + "direction": "rx", + "raw": "*4*102*#13##", + "who": "4", + "what": "102", + "where": "#13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717176.54436, + "iso_time": "2026-10-11T11:12:56.544360+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717176.9244, + "iso_time": "2026-10-11T11:12:56.924400+00:00", + "direction": "rx", + "raw": "*#4*13#1*20*0##", + "who": "4", + "what": null, + "where": "13", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717177.004135, + "iso_time": "2026-10-11T11:12:57.004135+00:00", + "direction": "rx", + "raw": "*4*102*#14##", + "who": "4", + "what": "102", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717177.486978, + "iso_time": "2026-10-11T11:12:57.486978+00:00", + "direction": "rx", + "raw": "*4*102*#12##", + "who": "4", + "what": "102", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717177.634406, + "iso_time": "2026-10-11T11:12:57.634406+00:00", + "direction": "rx", + "raw": "*#4*1*14*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717177.724301, + "iso_time": "2026-10-11T11:12:57.724301+00:00", + "direction": "rx", + "raw": "*#4*2*14*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717177.814482, + "iso_time": "2026-10-11T11:12:57.814482+00:00", + "direction": "rx", + "raw": "*#4*4*14*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.004402, + "iso_time": "2026-10-11T11:12:58.004402+00:00", + "direction": "rx", + "raw": "*#4*5*14*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.104629, + "iso_time": "2026-10-11T11:12:58.104629+00:00", + "direction": "rx", + "raw": "*#4*6*14*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.23575, + "iso_time": "2026-10-11T11:12:58.235750+00:00", + "direction": "rx", + "raw": "*4*102*#12##", + "who": "4", + "what": "102", + "where": "#12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.306128, + "iso_time": "2026-10-11T11:12:58.306128+00:00", + "direction": "rx", + "raw": "*#4*7*14*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.414536, + "iso_time": "2026-10-11T11:12:58.414536+00:00", + "direction": "rx", + "raw": "*#4*0#1*20*0##", + "who": "4", + "what": null, + "where": "0", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.525943, + "iso_time": "2026-10-11T11:12:58.525943+00:00", + "direction": "rx", + "raw": "*#4*8*14*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.614351, + "iso_time": "2026-10-11T11:12:58.614351+00:00", + "direction": "rx", + "raw": "*4*102*#14##", + "who": "4", + "what": "102", + "where": "#14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.71478, + "iso_time": "2026-10-11T11:12:58.714780+00:00", + "direction": "rx", + "raw": "*#4*10*14*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717178.893824, + "iso_time": "2026-10-11T11:12:58.893824+00:00", + "direction": "rx", + "raw": "*#4*11*14*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.044343, + "iso_time": "2026-10-11T11:12:59.044343+00:00", + "direction": "rx", + "raw": "*#4*12#1*20*0##", + "who": "4", + "what": null, + "where": "12", + "dimension": "20", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.134387, + "iso_time": "2026-10-11T11:12:59.134387+00:00", + "direction": "rx", + "raw": "*4*102*#17##", + "who": "4", + "what": "102", + "where": "#17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.273828, + "iso_time": "2026-10-11T11:12:59.273828+00:00", + "direction": "rx", + "raw": "*#4*12*14*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.314518, + "iso_time": "2026-10-11T11:12:59.314518+00:00", + "direction": "rx", + "raw": "*#4*1*14*0100*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.484401, + "iso_time": "2026-10-11T11:12:59.484401+00:00", + "direction": "rx", + "raw": "*#4*13*14*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.534409, + "iso_time": "2026-10-11T11:12:59.534409+00:00", + "direction": "rx", + "raw": "*#4*2*14*0100*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.704518, + "iso_time": "2026-10-11T11:12:59.704518+00:00", + "direction": "rx", + "raw": "*#4*3*14*0100*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.753847, + "iso_time": "2026-10-11T11:12:59.753847+00:00", + "direction": "rx", + "raw": "*#4*14*14*0100*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.905481, + "iso_time": "2026-10-11T11:12:59.905481+00:00", + "direction": "rx", + "raw": "*#4*17*14*0030*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717179.955207, + "iso_time": "2026-10-11T11:12:59.955207+00:00", + "direction": "rx", + "raw": "*#4*4*14*0100*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717180.114503, + "iso_time": "2026-10-11T11:13:00.114503+00:00", + "direction": "rx", + "raw": "*#4*5*14*0100*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717180.285471, + "iso_time": "2026-10-11T11:13:00.285471+00:00", + "direction": "rx", + "raw": "*#4*6*14*0100*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717180.445164, + "iso_time": "2026-10-11T11:13:00.445164+00:00", + "direction": "rx", + "raw": "*#4*7*14*0100*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717180.60533, + "iso_time": "2026-10-11T11:13:00.605330+00:00", + "direction": "rx", + "raw": "*#4*8*14*0100*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717180.768045, + "iso_time": "2026-10-11T11:13:00.768045+00:00", + "direction": "rx", + "raw": "*#4*10*14*0100*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717180.925121, + "iso_time": "2026-10-11T11:13:00.925121+00:00", + "direction": "rx", + "raw": "*#4*11*14*0100*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717181.065372, + "iso_time": "2026-10-11T11:13:01.065372+00:00", + "direction": "rx", + "raw": "*#4*12*14*0100*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717181.175457, + "iso_time": "2026-10-11T11:13:01.175457+00:00", + "direction": "rx", + "raw": "*#4*13*14*0100*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717181.355358, + "iso_time": "2026-10-11T11:13:01.355358+00:00", + "direction": "rx", + "raw": "*#4*14*14*0100*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717181.445167, + "iso_time": "2026-10-11T11:13:01.445167+00:00", + "direction": "rx", + "raw": "*#4*17*14*0030*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + } + ] +} diff --git a/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json new file mode 100644 index 000000000..8230ec0fd --- /dev/null +++ b/tests/fixtures/traces/issue_619/myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json @@ -0,0 +1,820 @@ +{ + "capture": { + "kind": "trace", + "started_at": null, + "filters": { + "who": "4", + "where": null, + "direction": null + }, + "window": { + "first": "2026-10-11T11:15:24.152Z", + "last": "2026-10-11T11:15:32.053Z", + "frames": 63, + "buffer_frames": 70, + "buffer_depth": 500, + "truncated": false + } + }, + "environment": { + "home_assistant_version": "2026.10.1", + "integration_version": "2.0.0b14", + "ownd_version": "2.0.0b9", + "exported_at": "2026-10-11T11:15:50.323Z" + }, + "gateway": { + "model": "F453AV", + "manufacturer": "BTicino S.p.A.", + "firmware": "1.0", + "mac_prefix": "00:03:50", + "connection_type": "tcp", + "queue_pacing": 0.05, + "is_connected": true, + "identification": { + "model": "F453AV", + "source": "ssdp", + "configured_model": "F453AV", + "ssdp_model": "F453AV", + "who13_code": "12", + "who13_model": "F453AV", + "who13_model_official": null, + "who13_model_observed": "F453AV", + "who13_firmware": null, + "who13_kernel": null, + "who13_distribution": null, + "who1013_code": null, + "who1013_model": null, + "who1013_other_names": [], + "who1013_n_conf": null, + "who1013_brand": null, + "who1013_line": null, + "profile": "GenericGatewayProfile", + "conflict": null + } + }, + "telemetry": { + "total_rx": 75, + "total_tx": 0, + "captured_in_buffer": 70, + "buffer_depth": 500, + "queue_depth": 0 + }, + "frames": [ + { + "timestamp": 1791717324.152319, + "iso_time": "2026-10-11T11:15:24.152319+00:00", + "direction": "rx", + "raw": "*4*202*#0##", + "who": "4", + "what": "202", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717324.162471, + "iso_time": "2026-10-11T11:15:24.162471+00:00", + "direction": "rx", + "raw": "*4*21*#0##", + "who": "4", + "what": "21", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717324.163481, + "iso_time": "2026-10-11T11:15:24.163481+00:00", + "direction": "rx", + "raw": "*4*22*#0##", + "who": "4", + "what": "22", + "where": "#0", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717324.701821, + "iso_time": "2026-10-11T11:15:24.701821+00:00", + "direction": "rx", + "raw": "*#4*1*0*0239##", + "who": "4", + "what": null, + "where": "1", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717324.733428, + "iso_time": "2026-10-11T11:15:24.733428+00:00", + "direction": "rx", + "raw": "*4*303*1##", + "who": "4", + "what": "303", + "where": "1", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717324.793622, + "iso_time": "2026-10-11T11:15:24.793622+00:00", + "direction": "rx", + "raw": "*#4*1*12*0220*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.103078, + "iso_time": "2026-10-11T11:15:25.103078+00:00", + "direction": "rx", + "raw": "*#4*1*14*0220*3##", + "who": "4", + "what": null, + "where": "1", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.232767, + "iso_time": "2026-10-11T11:15:25.232767+00:00", + "direction": "rx", + "raw": "*#4*2*0*0237##", + "who": "4", + "what": null, + "where": "2", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.272599, + "iso_time": "2026-10-11T11:15:25.272599+00:00", + "direction": "rx", + "raw": "*4*303*2##", + "who": "4", + "what": "303", + "where": "2", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.323348, + "iso_time": "2026-10-11T11:15:25.323348+00:00", + "direction": "rx", + "raw": "*#4*2*12*0220*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.59307, + "iso_time": "2026-10-11T11:15:25.593070+00:00", + "direction": "rx", + "raw": "*#4*2*14*0220*3##", + "who": "4", + "what": null, + "where": "2", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.822859, + "iso_time": "2026-10-11T11:15:25.822859+00:00", + "direction": "rx", + "raw": "*#4*3*0*0239##", + "who": "4", + "what": null, + "where": "3", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.862745, + "iso_time": "2026-10-11T11:15:25.862745+00:00", + "direction": "rx", + "raw": "*4*202*3##", + "who": "4", + "what": "202", + "where": "3", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717325.91371, + "iso_time": "2026-10-11T11:15:25.913710+00:00", + "direction": "rx", + "raw": "*#4*3*12*0350*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.242821, + "iso_time": "2026-10-11T11:15:26.242821+00:00", + "direction": "rx", + "raw": "*#4*3*14*0230*3##", + "who": "4", + "what": null, + "where": "3", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.322306, + "iso_time": "2026-10-11T11:15:26.322306+00:00", + "direction": "rx", + "raw": "*#4*4*0*0248##", + "who": "4", + "what": null, + "where": "4", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.362485, + "iso_time": "2026-10-11T11:15:26.362485+00:00", + "direction": "rx", + "raw": "*4*202*4##", + "who": "4", + "what": "202", + "where": "4", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.422893, + "iso_time": "2026-10-11T11:15:26.422893+00:00", + "direction": "rx", + "raw": "*#4*4*12*0350*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.833146, + "iso_time": "2026-10-11T11:15:26.833146+00:00", + "direction": "rx", + "raw": "*#4*4*14*0220*3##", + "who": "4", + "what": null, + "where": "4", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.913334, + "iso_time": "2026-10-11T11:15:26.913334+00:00", + "direction": "rx", + "raw": "*#4*5*0*0252##", + "who": "4", + "what": null, + "where": "5", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717326.982912, + "iso_time": "2026-10-11T11:15:26.982912+00:00", + "direction": "rx", + "raw": "*4*303*5##", + "who": "4", + "what": "303", + "where": "5", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.043323, + "iso_time": "2026-10-11T11:15:27.043323+00:00", + "direction": "rx", + "raw": "*#4*5*12*0220*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.253032, + "iso_time": "2026-10-11T11:15:27.253032+00:00", + "direction": "rx", + "raw": "*#4*5*14*0220*3##", + "who": "4", + "what": null, + "where": "5", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.413058, + "iso_time": "2026-10-11T11:15:27.413058+00:00", + "direction": "rx", + "raw": "*#4*6*0*0254##", + "who": "4", + "what": null, + "where": "6", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.462926, + "iso_time": "2026-10-11T11:15:27.462926+00:00", + "direction": "rx", + "raw": "*4*303*6##", + "who": "4", + "what": "303", + "where": "6", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.513453, + "iso_time": "2026-10-11T11:15:27.513453+00:00", + "direction": "rx", + "raw": "*#4*6*12*0220*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.842128, + "iso_time": "2026-10-11T11:15:27.842128+00:00", + "direction": "rx", + "raw": "*#4*7*0*0249##", + "who": "4", + "what": null, + "where": "7", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.912181, + "iso_time": "2026-10-11T11:15:27.912181+00:00", + "direction": "rx", + "raw": "*4*202*7##", + "who": "4", + "what": "202", + "where": "7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717327.983496, + "iso_time": "2026-10-11T11:15:27.983496+00:00", + "direction": "rx", + "raw": "*#4*6*14*0220*3##", + "who": "4", + "what": null, + "where": "6", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.143434, + "iso_time": "2026-10-11T11:15:28.143434+00:00", + "direction": "rx", + "raw": "*#4*7*12*0350*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.152009, + "iso_time": "2026-10-11T11:15:28.152009+00:00", + "direction": "rx", + "raw": "*4*202*7##", + "who": "4", + "what": "202", + "where": "7", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.263749, + "iso_time": "2026-10-11T11:15:28.263749+00:00", + "direction": "rx", + "raw": "*#4*7*14*0220*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.363096, + "iso_time": "2026-10-11T11:15:28.363096+00:00", + "direction": "rx", + "raw": "*#4*8*0*0252##", + "who": "4", + "what": null, + "where": "8", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.412948, + "iso_time": "2026-10-11T11:15:28.412948+00:00", + "direction": "rx", + "raw": "*4*202*8##", + "who": "4", + "what": "202", + "where": "8", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.473485, + "iso_time": "2026-10-11T11:15:28.473485+00:00", + "direction": "rx", + "raw": "*#4*8*12*0350*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.630385, + "iso_time": "2026-10-11T11:15:28.630385+00:00", + "direction": "rx", + "raw": "*#4*7*14*0220*3##", + "who": "4", + "what": null, + "where": "7", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.823336, + "iso_time": "2026-10-11T11:15:28.823336+00:00", + "direction": "rx", + "raw": "*#4*8*14*0220*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.922984, + "iso_time": "2026-10-11T11:15:28.922984+00:00", + "direction": "rx", + "raw": "*#4*10*0*0245##", + "who": "4", + "what": null, + "where": "10", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717328.981811, + "iso_time": "2026-10-11T11:15:28.981811+00:00", + "direction": "rx", + "raw": "*4*202*10##", + "who": "4", + "what": "202", + "where": "10", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.050109, + "iso_time": "2026-10-11T11:15:29.050109+00:00", + "direction": "rx", + "raw": "*#4*10*12*0350*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.140974, + "iso_time": "2026-10-11T11:15:29.140974+00:00", + "direction": "rx", + "raw": "*#4*8*14*0220*3##", + "who": "4", + "what": null, + "where": "8", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.343162, + "iso_time": "2026-10-11T11:15:29.343162+00:00", + "direction": "rx", + "raw": "*#4*10*14*0220*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.442887, + "iso_time": "2026-10-11T11:15:29.442887+00:00", + "direction": "rx", + "raw": "*#4*11*0*0236##", + "who": "4", + "what": null, + "where": "11", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.492798, + "iso_time": "2026-10-11T11:15:29.492798+00:00", + "direction": "rx", + "raw": "*4*202*11##", + "who": "4", + "what": "202", + "where": "11", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.563883, + "iso_time": "2026-10-11T11:15:29.563883+00:00", + "direction": "rx", + "raw": "*#4*11*12*0350*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717329.893198, + "iso_time": "2026-10-11T11:15:29.893198+00:00", + "direction": "rx", + "raw": "*#4*11*14*0220*3##", + "who": "4", + "what": null, + "where": "11", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.013096, + "iso_time": "2026-10-11T11:15:30.013096+00:00", + "direction": "rx", + "raw": "*#4*12*0*0244##", + "who": "4", + "what": null, + "where": "12", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.062965, + "iso_time": "2026-10-11T11:15:30.062965+00:00", + "direction": "rx", + "raw": "*4*202*12##", + "who": "4", + "what": "202", + "where": "12", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.133586, + "iso_time": "2026-10-11T11:15:30.133586+00:00", + "direction": "rx", + "raw": "*#4*12*12*0350*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.273207, + "iso_time": "2026-10-11T11:15:30.273207+00:00", + "direction": "rx", + "raw": "*#4*12*14*0220*3##", + "who": "4", + "what": null, + "where": "12", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.313756, + "iso_time": "2026-10-11T11:15:30.313756+00:00", + "direction": "rx", + "raw": "*#4*10*14*0220*3##", + "who": "4", + "what": null, + "where": "10", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.48295, + "iso_time": "2026-10-11T11:15:30.482950+00:00", + "direction": "rx", + "raw": "*#4*13*0*0266##", + "who": "4", + "what": null, + "where": "13", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.542765, + "iso_time": "2026-10-11T11:15:30.542765+00:00", + "direction": "rx", + "raw": "*4*202*13##", + "who": "4", + "what": "202", + "where": "13", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.613839, + "iso_time": "2026-10-11T11:15:30.613839+00:00", + "direction": "rx", + "raw": "*#4*13*12*0350*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717330.973359, + "iso_time": "2026-10-11T11:15:30.973359+00:00", + "direction": "rx", + "raw": "*#4*13*14*0220*3##", + "who": "4", + "what": null, + "where": "13", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.043158, + "iso_time": "2026-10-11T11:15:31.043158+00:00", + "direction": "rx", + "raw": "*#4*14*0*0275##", + "who": "4", + "what": null, + "where": "14", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.102797, + "iso_time": "2026-10-11T11:15:31.102797+00:00", + "direction": "rx", + "raw": "*4*202*14##", + "who": "4", + "what": "202", + "where": "14", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.173656, + "iso_time": "2026-10-11T11:15:31.173656+00:00", + "direction": "rx", + "raw": "*#4*14*12*0350*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.483053, + "iso_time": "2026-10-11T11:15:31.483053+00:00", + "direction": "rx", + "raw": "*#4*17*0*0232##", + "who": "4", + "what": null, + "where": "17", + "dimension": "0", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.522666, + "iso_time": "2026-10-11T11:15:31.522666+00:00", + "direction": "rx", + "raw": "*4*202*17##", + "who": "4", + "what": "202", + "where": "17", + "dimension": null, + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.563876, + "iso_time": "2026-10-11T11:15:31.563876+00:00", + "direction": "rx", + "raw": "*#4*17*12*0326*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "12", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717331.663782, + "iso_time": "2026-10-11T11:15:31.663782+00:00", + "direction": "rx", + "raw": "*#4*14*14*0220*3##", + "who": "4", + "what": null, + "where": "14", + "dimension": "14", + "is_ack": false, + "is_nack": false + }, + { + "timestamp": 1791717332.053355, + "iso_time": "2026-10-11T11:15:32.053355+00:00", + "direction": "rx", + "raw": "*#4*17*14*0350*3##", + "who": "4", + "what": null, + "where": "17", + "dimension": "14", + "is_ack": false, + "is_nack": false + } + ] +} diff --git a/tests/test_issue_619_who4_trace.py b/tests/test_issue_619_who4_trace.py new file mode 100644 index 000000000..e0c469969 --- /dev/null +++ b/tests/test_issue_619_who4_trace.py @@ -0,0 +1,254 @@ +"""Tests for #619: Authentic BTicino F453AV Central Unit (#0) & WHO 4 Trace Replay. + +Verifies that authentic on-wire OpenWebNet traces captured from a physical +BTicino F453AV gateway (FW 3.0.14) with central unit #0 contributed by @nce2704 replay cleanly: +1. myhome_trace_F453AV_who4_2026-10-11T11-02-55.Holiday.ON.json (88 frames): + Setting Daily Holiday (Holiday Plan) on Central Unit #0 (*4*115#1101*#0##) with weekly program 1. +2. myhome_trace_F453AV_who4_2026-10-11T11-10-23.Holiday.OFF.automatically.json (20 frames): + Automatic expiration of Holiday mode restoring weekly program 1 (*4*1101*#0##). +3. myhome_trace_F453AV_who4_2026-10-11T11-13-06.Antifreeze.ON.json (112 frames): + Switching Central Unit #0 to Antifreeze (*4*102*#0##) propagating to all zones. +4. myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json (63 frames): + Freedompro summer transition: switching one zone to cool triggers central unit #0 + to enter thermal protection (*4*202*#0##) in summer/cooling season. +5. myhome_trace_F453AV_who4_2026-10-11T10-49-26.Central.to.OFF.json (115 frames): + Switching Central Unit #0 to OFF (*4*103*#0##) propagating OFF to physical zones (*4*303*Z##). +6. myhome_trace_F453AV_who4_2026-10-11T10-29-57.json (121 frames): + Status sweep verifying coexistence of *4*1*Z## (season heating) alongside *4*111*#Z## + (weekly program 1) without displacing the programmed schedule mode. +""" + +from __future__ import annotations + +import json +from pathlib import Path +from unittest.mock import patch + +import pytest +from homeassistant.components.climate import HVACMode +from homeassistant.const import ( + CONF_FRIENDLY_NAME, + CONF_HOST, + CONF_MAC, + CONF_NAME, + CONF_PASSWORD, + CONF_PORT, +) +from homeassistant.core import HomeAssistant +from homeassistant.helpers.dispatcher import async_dispatcher_send +from OWNd.message import OWNMessage +from pytest_homeassistant_custom_component.common import MockConfigEntry + +from custom_components.myhome.const import ( + CONF_DEVICE_TYPE, + CONF_ENTITY, + CONF_FIRMWARE, + CONF_MANUFACTURER, + DOMAIN, +) + +TRACES_DIR = Path(__file__).resolve().parent / "fixtures" / "traces" / "issue_619" +HOLIDAY_ON_TRACE_FILE = ( + TRACES_DIR / "myhome_trace_F453AV_who4_2026-10-11T11-02-55.Holiday.ON.json" +) +HOLIDAY_OFF_TRACE_FILE = ( + TRACES_DIR + / "myhome_trace_F453AV_who4_2026-10-11T11-10-23.Holiday.OFF.automatically.json" +) +ANTIFREEZE_ON_TRACE_FILE = ( + TRACES_DIR / "myhome_trace_F453AV_who4_2026-10-11T11-13-06.Antifreeze.ON.json" +) +ONE_ZONE_COOL_TRACE_FILE = ( + TRACES_DIR / "myhome_trace_F453AV_who4_2026-10-11T11-15-50.one.zone.to.cool.json" +) +CENTRAL_OFF_TRACE_FILE = ( + TRACES_DIR / "myhome_trace_F453AV_who4_2026-10-11T10-49-26.Central.to.OFF.json" +) +STATE_SWEEP_TRACE_FILE = TRACES_DIR / "myhome_trace_F453AV_who4_2026-10-11T10-29-57.json" + + +async def _setup_f453av_gateway(hass: HomeAssistant) -> str: + """Set up a mock F453AV gateway config entry for trace replaying.""" + mac = "00:03:50:00:04:53" + entry = MockConfigEntry( + domain=DOMAIN, + data={ + CONF_HOST: "192.168.0.155", + CONF_PORT: 20000, + CONF_PASSWORD: "open", + CONF_MAC: mac, + CONF_NAME: "F453AV Gateway", + CONF_DEVICE_TYPE: "urn:schemas-bticino-it:device:lightingcontrolunit:1", + CONF_FRIENDLY_NAME: "F453AV Web Server", + CONF_MANUFACTURER: "BTicino S.p.A.", + CONF_FIRMWARE: "3.0.14", + }, + unique_id=mac, + ) + entry.add_to_hass(hass) + + with ( + patch( + "custom_components.myhome.gateway.OWNSession.test_connection", + return_value={"Success": True, "Message": None}, + ), + patch("custom_components.myhome.gateway.MyHOMEGatewayHandler.listening_loop"), + patch("custom_components.myhome.gateway.MyHOMEGatewayHandler.sending_loop"), + ): + assert await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + handler._on_event_connection_state_change(True) + return mac + + +async def _replay_trace_frames( + hass: HomeAssistant, mac: str, trace_file: Path +) -> int: + """Replay all valid frames from a trace file into the dispatcher.""" + assert trace_file.is_file(), f"Missing trace fixture: {trace_file}" + with open(trace_file, "r", encoding="utf-8") as f: + trace_data = json.load(f) + + replayed = 0 + for item in trace_data["frames"]: + raw = item.get("raw") + if not raw or raw in ("*#*1##", "*#*0##"): + continue + + try: + msg = OWNMessage.parse(raw) + except Exception as exc: # pragma: no cover + pytest.fail(f"Failed to parse authentic F453AV frame {raw!r}: {exc}") + + if msg is not None: + async_dispatcher_send(hass, f"myhome_message_{mac}", msg) + replayed += 1 + + await hass.async_block_till_done() + return replayed + + +@pytest.mark.asyncio +async def test_f453av_holiday_on_trace_replay(hass: HomeAssistant) -> None: + """Replay Holiday ON trace from physical F453AV gateway. + + Verifies that setting Central Unit #0 to Daily Holiday via *4*115#1101*#0##: + 1. Replays 88 authentic frames cleanly through dispatcher. + 2. Replays central status flags *4*21*#0## and *4*22*#0##. + 3. Replays subzone program reports *4*111*#Z## for active zones. + 4. Leaves 0 device health faults. + """ + mac = await _setup_f453av_gateway(hass) + replayed = await _replay_trace_frames(hass, mac, HOLIDAY_ON_TRACE_FILE) + assert replayed == 88 + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + assert handler.device_health.faults == [] + + # Check Central Unit #0 was discovered + state_0 = hass.states.get("climate.climate_zone_0") + assert state_0 is not None + + +@pytest.mark.asyncio +async def test_f453av_holiday_off_automatically_replay(hass: HomeAssistant) -> None: + """Replay Holiday OFF trace where central unit returns to weekly program. + + Verifies that expiration of Holiday mode emitting *4*1101*#0##: + 1. Replays 20 authentic frames cleanly without errors. + 2. Updates Central Unit #0 to weekly program 1. + 3. Replays subzone program reports *4*111*#Z##. + 4. Leaves 0 device health faults. + """ + mac = await _setup_f453av_gateway(hass) + replayed = await _replay_trace_frames(hass, mac, HOLIDAY_OFF_TRACE_FILE) + assert replayed == 20 + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + assert handler.device_health.faults == [] + + +@pytest.mark.asyncio +async def test_f453av_antifreeze_on_replay(hass: HomeAssistant) -> None: + """Replay Antifreeze ON trace where central unit is set to antifreeze. + + Verifies that setting Central Unit #0 to Antifreeze via *4*102*#0##: + 1. Replays 112 authentic frames cleanly without errors. + 2. Sets Central Unit #0 to HVACMode.OFF (antifreeze protection). + 3. Replays subordinate zone frames *4*102*#Z## and *4*102*Z##. + 4. Leaves 0 device health faults. + """ + mac = await _setup_f453av_gateway(hass) + replayed = await _replay_trace_frames(hass, mac, ANTIFREEZE_ON_TRACE_FILE) + assert replayed == 112 + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + assert handler.device_health.faults == [] + + state_0 = hass.states.get("climate.climate_zone_0") + assert state_0 is not None + assert state_0.state == HVACMode.OFF + + +@pytest.mark.asyncio +async def test_f453av_one_zone_to_cool_replay(hass: HomeAssistant) -> None: + """Replay Freedompro transition where switching zone to cool changes season. + + Verifies that switching from Winter to Summer season into Thermal Protection: + 1. Replays 63 authentic frames cleanly without errors. + 2. Emits *4*202*#0## putting Central Unit #0 into protection. + 3. Propagates cooling setpoints *#4*Z*12*0350*3## to zones. + 4. Leaves 0 device health faults. + """ + mac = await _setup_f453av_gateway(hass) + replayed = await _replay_trace_frames(hass, mac, ONE_ZONE_COOL_TRACE_FILE) + assert replayed == 63 + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + assert handler.device_health.faults == [] + + state_0 = hass.states.get("climate.climate_zone_0") + assert state_0 is not None + assert state_0.state == HVACMode.OFF + + +@pytest.mark.asyncio +async def test_f453av_central_to_off_replay(hass: HomeAssistant) -> None: + """Replay Central to OFF trace from physical F453AV gateway. + + Verifies that setting Central Unit #0 to OFF via *4*103*#0##: + 1. Replays 115 authentic frames cleanly without errors. + 2. Puts Central Unit #0 into HVACMode.OFF. + 3. Propagates OFF to subzones *4*103*#Z## and physical zones *4*303*Z##. + 4. Leaves 0 device health faults. + """ + mac = await _setup_f453av_gateway(hass) + replayed = await _replay_trace_frames(hass, mac, CENTRAL_OFF_TRACE_FILE) + assert replayed == 115 + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + assert handler.device_health.faults == [] + + state_0 = hass.states.get("climate.climate_zone_0") + assert state_0 is not None + assert state_0.state == HVACMode.OFF + + +@pytest.mark.asyncio +async def test_f453av_who4_state_sweep_replay(hass: HomeAssistant) -> None: + """Replay status sweep trace demonstrating season and weekly program coexistence. + + Verifies that receiving *4*1*Z## (season heating telemetry): + 1. Replays 121 authentic frames cleanly without errors. + 2. Coexists with active weekly program reports *4*111*#Z##. + 3. Does not displace programmed schedule states or raise faults. + 4. Leaves 0 device health faults. + """ + mac = await _setup_f453av_gateway(hass) + replayed = await _replay_trace_frames(hass, mac, STATE_SWEEP_TRACE_FILE) + assert replayed == 121 + + handler = hass.data[DOMAIN][mac][CONF_ENTITY] + assert handler.device_health.faults == []