diff --git a/tests/fixtures/traces/f461_live_2026-10-23/README.md b/tests/fixtures/traces/f461_live_2026-10-23/README.md new file mode 100644 index 000000000..e5e8f459c --- /dev/null +++ b/tests/fixtures/traces/f461_live_2026-10-23/README.md @@ -0,0 +1,118 @@ +# Live capture: BTicino F461 (firmware 2.0.11), 2026-10-23 + +Every frame exchanged with a physical F461 gateway on 2026-10-23 (20:38 to 23:03 UTC) while the +findings behind OWNd #136-#142 and MyHOME #791-#798 were collected: an oracle replay of 165 read-only +requests, reviewer reads, a setpoint restore, two report-form writes, and the event session while a +local Home Assistant ran the integration under test. Nothing is synthetic except the gateway's MAC +and LAN address (rewritten in both their text and their WHO 13 byte forms, see below); the HMAC +handshake is not included. Recorded with OWNd master (`OWNCommandSession` + `OWNEventSession`), +one request at a time with a 1.2-1.5 s pause. + +The earlier capture of the same plant is `tests/fixtures/traces/f461_live_2026-10-15/` (lights still +at `01` / `04`). It already holds the WHO 4 central-mode pair cited by OWNd #137 (`*4*311*2##` NACK, +`*4*311*#2##` ACK and ignored, `run3_climate` t=252 and `probe_followup` t=7) and the dimension 22 +crash behind OWNd #136 (`probe_dim22_confirm`); those frames are not duplicated here. + +## Plant + +| Item | Value | +|---|---| +| Gateway | F461, firmware 2.0.11 (`*#13**16*2*0*11##`), kernel 5.10.35, distribution 2.26.4, WHO 13 device type `200`, WHO 13 dimension 27 model name `70#52#54#49` = "F461", WHO 1013 object model `134.15.5.0`, clock time zone `999`, HMAC SHA-256 on both sessions | +| Lights | BT-F411/4 at A=0 PL=6 (`WHERE 06`) and A=0 PL=7 (`WHERE 07`), Group `#1`, General `0`; an F422 interface with a light at `WHERE 09` whose actuator was missing configurator "2" at capture time: it appears in the area sweep (`*1*0*09##`) but answers no point request or command | +| Shutter | BT-F411/2 at A=0 PL=5 (`WHERE 05`), no position reporting, stops itself 5.1-5.9 s after a run starts | +| Climate | Living Now KW4691 standalone thermostat at zone 2 with a BT-F430/2 heating valve (actuator 1) and a BT-F430/4 fan coil (actuator 2); heating season; no central unit | +| Not present | WHO 16 / 22 sound devices, WHO 18 meters, WHO 5 / 9 alarm, central unit | + +## File format: `myhome_trace_F461_live_2026-10-23.json` + +Standard `MyHOME` derived trace archive: + +- `capture` and `gateway`: metadata with the RFC 5737 documentation IP `192.0.2.92` and the synthetic + MAC `00:03:50:00:10:23`. The MAC also appears as the WHO 13 dimension 12 reply `*#13**12*0*3*80*0*16*35##` + and the IP as `*#13**10*192*0*2*92##`: the decimal bytes of the synthetic values, rewritten consistently. + `capture.runs` lists each run with its source, UTC window and purpose. +- `frames`: the 299 event-session `rx` frames (`timestamp`, `direction: "rx"`, `raw`, `run`, `session: "evt"`), + replayed by `test_device_health_corpus.py` and parsed by `test_trace_oracle_validation.py` (tier 4). +- `rows`: the 939 session-log entries in capture order: + +| `dir` | Meaning | Fields | +|---|---|---| +| `tx` | frame written on the command session | `frame`, `is_status_request` (how OWNd sent it) | +| `rx` | frame read; `session: "cmd"` for the replies and the closing `*#*1##` / `*#*0##`, `session: "evt"` for the event monitor | `frame`; event rows also carry `ownd_class` and `ownd_log`, what OWNd master made of the frame at capture time. Command-session rows carry `t_estimated: true`: the session hands the replies over as a batch with the ACK / NACK, so their arrival time is unknown and they sit right after their request with `t` = the request's `t` | +| `result` | what the command session returned for the `tx` | `ack`, `reply_time_s`, `replies` (frames collected on the command session; empty on a NACK and on an ACK that carried no data), `events_after` (only the event-session frames that arrived while the request was pending, `tx.t <= t <= result.t`; what arrived during the pause before the next request is in the chronological rows only), `utc`, `note` on the frames the pull requests cite | + +`t` is one monotonic axis over the whole archive: each run starts 1 s after the previous one ended, and +`capture.runs[].t_offset` gives each run's start (`t - t_offset` is the time since that run's first frame), so +corpus replayers that drive a clock from `frames[].timestamp` never go backwards. `step` is the phase +(`oracle_who` / `plant_reads` in run 1, the run name elsewhere, `listen` for the event-only runs). + +## The runs + +| `run` | UTC | What it was | +|---|---|---| +| `run1_oracle_replay_readonly` | 20:38-20:44 | 165 status / dimension requests mirrored from the firmware-oracle suites (WHO 1, 2, 3, 4, 5, 8, 9, 13, 14, 16, 17, 18, 22, 25, 1001, 1013) plus 31 plant reads (`*#1*06##`, `*#4*2*12##`, `*#13**27##`, ...); read-only, no WHO 4 dimension 22, no report-form writes | +| `run2_reviewer_reads` | 21:02 | `*#1*0007##` / `*#1*07##` / `*#1*7##`, `*#4*0*60##`, `*#4*2*60##`, `*#22*3#1#1*1##`, `*#13**0##` | +| `run3_climate_setpoint_restore` | 21:13 | `*#4*2*#14*0235*3##` restores the setpoint in force, then `*#4*2##` | +| `run4_final_state` | 21:13 | `*#1*06##`, `*#1*07##`, `*#2*05##`, `*#4*2##` after the Home Assistant session (dimension 12 = 14 = 21.0) | +| `run4b_final_state_after_restore` | 23:03 | the same reads two hours after the restore (dimension 12 = 14 = 23.5) | +| `run5_injection_flags` | 21:10 | report-form writes used by the expose engine: `*#18*51*113*100##`, `*#4*#0*0*0215##` | +| `run6_event_session_ha_fixed_integration` | 22:31-23:00 | event session only (1770 s) while a local Home Assistant ran the integration with the fixes under review: six reconnect sweeps, actuator frames after every zone poll, eight shutter runs, one general stop | +| `run7_localha_bus_monitor` | 21:03-21:13 | event session only: the local Home Assistant on the unpatched branch (lights 06 / 07, `close_cover`, `set_cover_position 40`, `close_cover`, `set_temperature 22` then 21, a manual `*#4*2*20##`) | +| `run8_flicker_repro`, `run8b_flicker_repro_who22` | 20:49-20:50 | the reads that preceded a 100 ms pulse of lights 07 and 06 in run 1 (`*#25*21##`, `*#3*#1##`, three WHO 22 reads) re-sent twice: no pulse, no event; the pulse came from somewhere else | + +## What the plant established (each row has its frames in the archive) + +* `*#4*2##` is answered in 1.3 s with `*#4*2*0*0239##`, `*#4*2*12*0235*3##`, `*4*1*2##`, `*#4*2*14*0210*3##`, + `*#4*2*13*00##`: dimension 12 (23.5, the setpoint in force, set at the thermostat) precedes and differs from + dimension 14 (21.0, the last value written from Home Assistant). `*#4*2*#14*0235*3##` (mode 3) is ACKed in + 78 ms, dimension 12 follows at once, dimension 14 catches up 0.3 s later, the season frame stays `*4*1*2##`. +* `*#4*2*20##` is ACKed in 111 ms with `*#4*2#1*20*0##` on the command session, followed by `*#4*2#2*20*5##` on the + event session; `*#4*#0*20##` returns both on the command session after 2.1 s. In run 6 the two actuator frames + followed every `*#4*2##` burst within 3 s because the patched integration under test (#792) sent `*#4*#0*20##` + after each zone poll; the F461 does not emit dimension 20 in reply to `*#4*2##` (run 1: `*#4*2##` answers + dimensions 0, 12, 14, 13 and the season only). +* `*#4*0*60##` is answered by zone 2 (`*#4*2*60*39##`) after 2.1 s, `*#4*2*60##` in 0.14 s; the thermostat pushed + `*#4*2*60*38##` three times in 30 minutes on its own. +* `*#4*0##`, `*#5*0##`, `*#9*0##`, `*#17*0##`, `*#14*06##`, `*#3*…##`, `*#8*…##` and all 18 WHO 16 forms are refused + by the gateway itself in under 10 ms (`*#5*#1##` in 13 ms). `*#25*21##` NACKed after 950 ms in run 1 and in 5-6 ms + when re-sent in runs 8 / 8b. `*#4*#2##`, `*#4*#2*14##`, `*#4*#0##`, `*#4*#0*14##` and the 13 WHO 22 reads are + forwarded to the bus and NACKed after the TX-ACK wait (1.8-2.9 s). +* `*#1*0007##`, `*#1*0001##`, `*#1*0002##` are refused in 5-7 ms; `*#1*07##` answers `*1*0*07##` in 88 ms; + `*#1*7##` is area 7 (ACK, no data, 1.0 s). `*#1*0##` and `*#1*00##` list `06`, `07` and `09`; `*#1*09##` times + out on the bus. Dimension 15 is group-only (`*#1*06*15##` NACK, `*#1*#1*15##` ACK and echoed). +* `*#13**0##` sent on the command session is also delivered on the event session (`*#13**0*23*38*50*999##`, + `*#13**0*00*02*31*999##`). `*#13**10##`, `*#13**11##`, `*#13**12##`, `*#13**19##`, `*#13**27##` are answered + on an F461 (`*#13**27*70#52#54#49##` has no decoder in the pinned OWNd: `OWNMessage.parse` returns `None` + without raising; OWNd #139 adds it). The spontaneous `*#13**12*…##` and `*#1013**1*134*15*5*0##` open every + event session. The gateway's clock echoes carry an empty time-zone field (`*#13**#0*01*40*00*##`). +* `*#18*51*51##`, `*#18*51*113##`, `*#18*51*54##` are ACKed with no data after 0.6-0.8 s (no meter); + `*#18*51*1200##` is refused; `*#18*51*113*100##` (report form) is ACKed in 1.4 s and not echoed; + `*#4*#0*0*0215##` is NACKed after 4.1 s. +* The F411/2 shutter: every run starts with the gateway burst `*2*1000#0*05##`, `*2*0*05##`, `*2*1000#<1|2>*05##`, + `*2*<1|2>*05##` (the order of the two translation echoes and the stop status varies) and a full run ends with + the actuator's own `*2*0*05##` 5.1-5.9 s later (nine full runs); the two `set_cover_position` runs were stopped + by Home Assistant after 2.45 s and 3.65 s. `*#2*05*10##` ACKs with no data, + `*#2*05*11##` is refused. `*2*0*0##` (one general stop from Home Assistant) appears exactly once. +* Lights 06 / 07 switched from Home Assistant echo `*1*<0|1>*0<6|7>##` in about 0.1 s with no group or area frame. + +## What this capture backs + +| Pull request | Frames in this archive | +|---|---| +| OWNd #136 (refuse WHO 4 dimension 22 in every send path) | not in this capture (no dimension 22 was sent); the crash is `probe_dim22_confirm` in `f461_live_2026-10-15` | +| OWNd #137 (`set_central_mode` requires a central-unit address) | `*#4*#2##`, `*#4*#2*14##`, `*#4*#0##`, `*#4*#0*14##` NACK after the bus timeout on a plant without a central unit (run 1); the `*4*311*2##` NACK / `*4*311*#2##` ACK pair is in `f461_live_2026-10-15` | +| OWNd #138 (`#`-prefixed dimension 14 setpoints, WHO 13 clock echoes) | `*#4*2#1*#20*0##` (run 6, a `#`-prefixed dimension echo), `*#13**#0*01*40*00*##` / `*#13**#1*06*24*10*2026##` clock echoes on the event session (run 6) | +| OWNd #139 (WHO 13 dimension 27 model name, WHO 1001 diagnostic event) | `*#13**27##` -> `*#13**27*70#52#54#49##` (run 1); `*#1001*74##` NACK (no WHO 1001 device on this plant) | +| OWNd #140 (`actuators_status` builder) | `*#4*2*20##` -> `*#4*2#1*20*0##`, `*#4*2#2*20*5##`; `*#4*#0*20##` (run 1, run 6, run 7) | +| OWNd #141 (`normalize_where` area-0 four-digit points) | `*#1*0007##` NACK vs `*#1*07##` ACK vs `*#1*7##` (run 2); `*#1*0001##`, `*#1*0002##` NACK (run 1) | +| OWNd #142 (drop WHO 16 from the F461 profile) | all 18 WHO 16 requests NACK in under 10 ms (run 1) | +| MyHOME #791 (setpoint in force = dimension 12) | `*#4*2##` reply order and dimension 12 != 14 (run 1, run 4); `*#4*2*#14*0235*3##` restore (run 3, run 4b) | +| MyHOME #792 (request dimension 20 on add and after reconnect) | `*#4*2*20##`, `*#4*#0*20##` (run 1); the actuator frames after every reconnect (run 6); the manual request (run 7) | +| MyHOME #793 (humidity poll gate) | `*#4*0*60##`, `*#4*2*60##` (run 2); spontaneous `*#4*2*60*38##` (run 6) | +| MyHOME #794 (skip the startup requests the firmware refuses) | `*#4*0##`, `*#16*0*5##`, `*#5*0##` NACK in under 10 ms (run 1) | +| MyHOME #795 (timed cover starts unknown) | the shutter runs and their hardware stops 5.1-5.9 s later (run 6, run 7) | +| MyHOME #796 (yaml `class:` for WHO 2) | nothing on the bus; configuration only | +| MyHOME #797 (scope events only for frames that carry a state) | one `*2*0*0##` (run 6); light toggles without group / area frames (run 7) | +| MyHOME #798 (canonicalise four-digit area-0 addresses) | `*#1*0007##` NACK, `*#1*07##` ACK (run 2) | + +Tests: `tests/test_f461_live_2026_10_23_trace.py`. diff --git a/tests/fixtures/traces/f461_live_2026-10-23/myhome_trace_F461_live_2026-10-23.json b/tests/fixtures/traces/f461_live_2026-10-23/myhome_trace_F461_live_2026-10-23.json new file mode 100644 index 000000000..9f3ceb3c0 --- /dev/null +++ b/tests/fixtures/traces/f461_live_2026-10-23/myhome_trace_F461_live_2026-10-23.json @@ -0,0 +1,9954 @@ +{ + "capture": { + "kind": "derived_trace_archive", + "started_at": "2026-10-23T20:38:04+00:00", + "notes": "Live BTicino F461 (firmware 2.0.11 / WHO 13 device type 200 / WHO 1013 134.15.5.0) multi-session bus capture of 2026-10-23 recorded with OWNd master on the physical test plant: BT-F411/4 lights at WHERE 06 and 07 (Group #1, General 0), an F422 interface with a light at WHERE 09 whose actuator lacked configurator 2 at capture time (it reports in the area sweep but answers no point command), BT-F411/2 5 s timed shutter at WHERE 05, Living Now KW4691 standalone thermostat at Zone 2 with a BT-F430/2 heating valve (actuator 1) and a BT-F430/4 fan coil (actuator 2); no central unit, no WHO 16 / 22 devices. Purpose: the physical evidence behind OWNd pull requests 136-142 and MyHOME pull requests 791-798 (oracle replay of 165 read-only requests, reviewer reads, setpoint restore, report-form writes, and the event-session bus while the fixed integration ran in a local Home Assistant). The *4*311*2## NACK / *4*311*#2## ACK pair cited by OWNd 137 is in the earlier capture of the same plant, tests/fixtures/traces/f461_live_2026-10-15 (run3_climate, probe_followup). Timing: t is one monotonic axis over all runs (capture.runs[].t_offset is each run's start; t - t_offset is the time since that run's first frame); command-session rx rows carry t_estimated = true because the session hands the replies over as a batch with the ACK / NACK, so they are placed at their request's t; result.events_after holds only the event-session frames that arrived while the request was pending (tx.t <= t <= result.t).", + "window": { + "first": "2026-10-23T20:38:04+00:00", + "last": "2026-10-23T23:03:07+00:00", + "frames": 299, + "rows": 939 + }, + "runs": [ + {"run": "run1_oracle_replay_readonly", "source": "replay_readonly.jsonl", "utc": "20:38:05-20:44:27", "t_offset": 0.0, "rows": 603, "frames": 69, "purpose": "165 status / dimension requests mirrored from the firmware-oracle suites (WHO 1, 2, 3, 4, 5, 8, 9, 13, 14, 16, 17, 18, 22, 25, 1001, 1013) plus 31 plant reads; read-only, no WHO 4 dimension 22, no report-form writes"}, + {"run": "run2_reviewer_reads", "source": "reviewer_reads.jsonl", "utc": "21:02:20-21:02:32", "t_offset": 383.623, "rows": 29, "frames": 4, "purpose": "address spellings *#1*0007## / *#1*07## / *#1*7##, humidity *#4*0*60## and *#4*2*60##, a WHO 22 read, *#13**0## echoed on the event session"}, + {"run": "run3_climate_setpoint_restore", "source": "restore_setpoint.jsonl", "utc": "21:13:33-21:13:39", "t_offset": 398.258, "rows": 19, "frames": 8, "purpose": "*#4*2*#14*0235*3## restores the setpoint in force, then *#4*2## shows the reply order 0, 12, season, 14, 13"}, + {"run": "run4_final_state", "source": "final_state.jsonl", "utc": "21:13:17-21:13:21", "t_offset": 403.657, "rows": 28, "frames": 8, "purpose": "final plant state after the Home Assistant session: lights 06 / 07, cover 05, zone 2 (*#4*2## with dimension 12 = 21.0)"}, + {"run": "run4b_final_state_after_restore", "source": "final_state_2.jsonl", "utc": "23:03:03-23:03:07", "t_offset": 408.771, "rows": 28, "frames": 8, "purpose": "same reads two hours later: dimension 12 and 14 both 23.5 after the restore"}, + {"run": "run5_injection_flags", "source": "injection_flags.jsonl", "utc": "21:10:36-21:10:42", "t_offset": 413.911, "rows": 6, "frames": 0, "purpose": "report-form writes used by the expose engine: *#18*51*113*100## ACK (not echoed), *#4*#0*0*0215## NACK after the bus timeout (no central unit)"}, + {"run": "run6_event_session_ha_fixed_integration", "source": "verify_bus.jsonl", "utc": "22:31:06-23:00:36", "t_offset": 423.534, "rows": 171, "frames": 171, "purpose": "event session only, 1770 s listen while a local Home Assistant ran the integration under test: startup sweeps, *#4*#0*20## actuator replies after every reconnect, cover 05 runs, one *2*0*0## general stop, the spontaneous WHO 13 / 1013 frames at connect"}, + {"run": "run7_localha_bus_monitor", "source": "localha_session_bus.jsonl", "utc": "21:03:01-21:13:03", "t_offset": 2220.595, "rows": 31, "frames": 31, "purpose": "event session only, bus monitor of the local Home Assistant session: light 06 / 07 toggles, cover 05 close / position / close, setpoint 22.0 then 21.0, the manual *#4*2*20## reply"}, + {"run": "run8_flicker_repro", "source": "repro_flicker.jsonl", "utc": "20:49:37-20:49:49", "t_offset": 2826.742, "rows": 9, "frames": 0, "purpose": "re-sent *#25*21## and *#3*#1## after a 100 ms light pulse was seen during run1 at 20:42:07 UTC; not reproduced, the pulse came from elsewhere"}, + {"run": "run8b_flicker_repro_who22", "source": "repro_flicker2.jsonl", "utc": "20:50:05-20:50:14", "t_offset": 2840.805, "rows": 15, "frames": 0, "purpose": "second attempt with the WHO 22 reads that preceded the pulse in run1; not reproduced"} + ] + }, + "gateway": { + "model": "F461", + "manufacturer": "BTicino", + "firmware": "2.0.11", + "kernel": "5.10.35", + "distribution": "2.26.4", + "ip": "192.0.2.92", + "mac": "00:03:50:00:10:23", + "identification": { + "model": "F461", + "who13_code": "200", + "who13_model_name": "F461", + "who1013_code": "134" + } + }, + "frames": [ + {"timestamp": 1.148, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 1.188, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 1.228, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 1.299, "direction": "rx", "raw": "*1*0*09##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 5.804, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 5.851, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 5.891, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 5.94, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 5.98, "direction": "rx", "raw": "*1*0*09##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 45.312, "direction": "rx", "raw": "*#1013**1*134*15*5*0##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 46.52, "direction": "rx", "raw": "*#13**0*23*38*50*999##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 47.73, "direction": "rx", "raw": "*#13**1*05*23*10*2026##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 48.938, "direction": "rx", "raw": "*#13**15*200##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 50.149, "direction": "rx", "raw": "*#13**16*2*0*11##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 51.359, "direction": "rx", "raw": "*#13**22*23*38*55*999*05*23*10*2026##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 52.588, "direction": "rx", "raw": "*#13**23*5*10*35##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 53.797, "direction": "rx", "raw": "*#13**24*2*26*4##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 116.485, "direction": "rx", "raw": "*#13**#1*05*23*10*2026##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 116.486, "direction": "rx", "raw": "*#13**#0*23*40*00*##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 174.88, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 174.928, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 174.97, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 175.049, "direction": "rx", "raw": "*1*0*09##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 242.983, "direction": "rx", "raw": "*1*1*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 243.086, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 243.19, "direction": "rx", "raw": "*1*1*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 243.295, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 258.456, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 258.512, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 260.944, "direction": "rx", "raw": "*#4*2*60*39##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 316.173, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 316.212, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 316.253, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 316.325, "direction": "rx", "raw": "*1*0*09##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 318.157, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 318.205, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 318.253, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 318.325, "direction": "rx", "raw": "*1*0*09##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 324.613, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 325.229, "direction": "rx", "raw": "*#4*2*0*0239##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 325.545, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 325.547, "direction": "rx", "raw": "*4*1*2##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 325.849, "direction": "rx", "raw": "*#4*2*14*0210*3##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 325.96, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 328.246, "direction": "rx", "raw": "*#4*2*60*39##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 333.676, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 334.961, "direction": "rx", "raw": "*1*0*07##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 341.7, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 343.028, "direction": "rx", "raw": "*1*0*06##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 345.524, "direction": "rx", "raw": "*#1*#1*15##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 346.805, "direction": "rx", "raw": "*2*0*05##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 352.097, "direction": "rx", "raw": "*#4*2*0*0239##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 352.403, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 352.405, "direction": "rx", "raw": "*4*1*2##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 352.722, "direction": "rx", "raw": "*#4*2*14*0210*3##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 352.815, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 354.135, "direction": "rx", "raw": "*#4*2*0*0239##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 355.447, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 355.45, "direction": "rx", "raw": "*4*1*2##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 356.769, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 358.062, "direction": "rx", "raw": "*#4*2*14*0210*3##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 359.375, "direction": "rx", "raw": "*#4*2*19*5*0##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 360.686, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 360.749, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 372.948, "direction": "rx", "raw": "*#13**10*192*0*2*92##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 374.159, "direction": "rx", "raw": "*#13**11*255*255*255*0##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 375.369, "direction": "rx", "raw": "*#13**12*0*3*80*0*16*35##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 378.994, "direction": "rx", "raw": "*#13**27*70#52#54#49##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 380.204, "direction": "rx", "raw": "*#13**19*0*0*38*54##", "run": "run1_oracle_replay_readonly", "session": "evt"}, + {"timestamp": 385.956, "direction": "rx", "raw": "*1*0*07##", "run": "run2_reviewer_reads", "session": "evt"}, + {"timestamp": 389.492, "direction": "rx", "raw": "*#4*2*60*39##", "run": "run2_reviewer_reads", "session": "evt"}, + {"timestamp": 392.837, "direction": "rx", "raw": "*#4*2*60*39##", "run": "run2_reviewer_reads", "session": "evt"}, + {"timestamp": 397.255, "direction": "rx", "raw": "*#13**0*00*02*31*999##", "run": "run2_reviewer_reads", "session": "evt"}, + {"timestamp": 399.49, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 399.493, "direction": "rx", "raw": "*4*1*2##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 399.525, "direction": "rx", "raw": "*#4*2*0*0239##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 401.962, "direction": "rx", "raw": "*#4*2*0*0239##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 402.265, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 402.267, "direction": "rx", "raw": "*4*1*2##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 402.57, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 402.654, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run3_climate_setpoint_restore", "session": "evt"}, + {"timestamp": 404.8, "direction": "rx", "raw": "*1*0*06##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 405.392, "direction": "rx", "raw": "*1*0*07##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 406.001, "direction": "rx", "raw": "*2*0*05##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 407.084, "direction": "rx", "raw": "*#4*2*0*0239##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 407.392, "direction": "rx", "raw": "*#4*2*12*0210*3##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 407.396, "direction": "rx", "raw": "*4*1*2##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 407.692, "direction": "rx", "raw": "*#4*2*14*0210*3##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 407.769, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run4_final_state", "session": "evt"}, + {"timestamp": 409.92, "direction": "rx", "raw": "*1*0*06##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 410.512, "direction": "rx", "raw": "*1*0*07##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 411.097, "direction": "rx", "raw": "*2*0*05##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 412.223, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 412.495, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 412.498, "direction": "rx", "raw": "*4*1*2##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 412.805, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 412.905, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run4b_final_state_after_restore", "session": "evt"}, + {"timestamp": 449.499, "direction": "rx", "raw": "*#13**12*0*3*80*0*16*35##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 449.508, "direction": "rx", "raw": "*#1013**1*134*15*5*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 449.698, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 449.744, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 449.784, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 449.856, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 451.705, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 451.746, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 451.793, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 451.866, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 453.682, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 454.302, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 454.631, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 454.633, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 454.941, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 455.045, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 455.194, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 455.249, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 494.831, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 494.867, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 494.907, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 494.927, "direction": "rx", "raw": "*2*2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 500.04, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 509.464, "direction": "rx", "raw": "*1*1*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 511.783, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 586.968, "direction": "rx", "raw": "*2*0*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 625.496, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 625.536, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 625.584, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 625.655, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 627.592, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 627.641, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 627.68, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 627.754, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 629.57, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 630.212, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 630.525, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 630.528, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 630.828, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 630.921, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 633.201, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 633.257, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 637.736, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 637.783, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 637.816, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 637.887, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 639.735, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 639.783, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 639.841, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 639.872, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 641.69, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 642.418, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 642.658, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 642.666, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 642.932, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 643.074, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 645.425, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 645.472, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 884.116, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 884.168, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 884.205, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 884.285, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 886.213, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 886.26, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 886.309, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 886.381, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 888.318, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 888.938, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 889.257, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 889.261, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 889.555, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 889.638, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 891.92, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 891.963, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 892.007, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 983.792, "direction": "rx", "raw": "*#13**#1*06*24*10*2026##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 983.796, "direction": "rx", "raw": "*#13**#0*01*40*00*##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1231.565, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1231.608, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1231.645, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1231.686, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1233.485, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1233.529, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1233.574, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1233.646, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1235.494, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1236.122, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1236.434, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1236.437, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1236.753, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1236.83, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1239.11, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1239.154, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1242.916, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1242.941, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1242.982, "direction": "rx", "raw": "*2*1000#1*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1243.013, "direction": "rx", "raw": "*2*1*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1248.702, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1252.597, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1252.613, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1252.662, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1252.686, "direction": "rx", "raw": "*2*2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1256.34, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1256.365, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1258.692, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1258.725, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1258.757, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1258.797, "direction": "rx", "raw": "*2*2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1264.645, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1304.918, "direction": "rx", "raw": "*#4*2*60*38##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1577.037, "direction": "rx", "raw": "*#4*2#1*#20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1577.069, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1583.651, "direction": "rx", "raw": "*#13**#1*06*24*10*2026##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 1583.652, "direction": "rx", "raw": "*#13**#0*01*50*00*##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2035.519, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2035.567, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2035.617, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2035.647, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2035.704, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2037.506, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2037.553, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2037.593, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2037.674, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2039.522, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2040.158, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2040.487, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2040.489, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2040.792, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2040.883, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2043.229, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2043.271, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2046.153, "direction": "rx", "raw": "*#4*2*60*38##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2048.268, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2048.292, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2048.349, "direction": "rx", "raw": "*2*1000#1*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2048.381, "direction": "rx", "raw": "*2*1*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2054.144, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2055.773, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2055.807, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2055.837, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2055.854, "direction": "rx", "raw": "*2*2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2061.118, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2162.384, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2162.424, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2162.464, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2162.544, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2164.393, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2164.439, "direction": "rx", "raw": "*1*0*06##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2164.487, "direction": "rx", "raw": "*1*0*07##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2164.56, "direction": "rx", "raw": "*1*0*09##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2166.393, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2167.012, "direction": "rx", "raw": "*#4*2*0*0241##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2167.316, "direction": "rx", "raw": "*#4*2*12*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2167.318, "direction": "rx", "raw": "*4*1*2##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2167.62, "direction": "rx", "raw": "*#4*2*14*0235*3##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2167.738, "direction": "rx", "raw": "*#4*2*13*00##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2170.033, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2170.08, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2172.969, "direction": "rx", "raw": "*#4*2*60*38##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2183.097, "direction": "rx", "raw": "*#13**#1*06*24*10*2026##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2183.1, "direction": "rx", "raw": "*#13**#0*02*00*00*##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2204.334, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2204.376, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2204.422, "direction": "rx", "raw": "*2*1000#1*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2204.447, "direction": "rx", "raw": "*2*1*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2209.616, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2214.031, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2214.057, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2214.099, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2214.128, "direction": "rx", "raw": "*2*2*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2219.595, "direction": "rx", "raw": "*2*0*05##", "run": "run6_event_session_ha_fixed_integration", "session": "evt"}, + {"timestamp": 2223.517, "direction": "rx", "raw": "*1*0*06##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2237.964, "direction": "rx", "raw": "*1*1*06##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2239.795, "direction": "rx", "raw": "*1*0*06##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2262.059, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2262.085, "direction": "rx", "raw": "*2*0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2262.126, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2262.156, "direction": "rx", "raw": "*2*2*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2267.7, "direction": "rx", "raw": "*2*0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2288.81, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2288.844, "direction": "rx", "raw": "*2*1000#1*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2288.868, "direction": "rx", "raw": "*2*0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2288.909, "direction": "rx", "raw": "*2*1*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2291.355, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2291.372, "direction": "rx", "raw": "*2*0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2303.965, "direction": "rx", "raw": "*#4*2*12*0220*3##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2303.967, "direction": "rx", "raw": "*4*1*2##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2304.005, "direction": "rx", "raw": "*#4*2*0*0240##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2314.662, "direction": "rx", "raw": "*#4*2*12*0210*3##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2314.664, "direction": "rx", "raw": "*4*1*2##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2314.708, "direction": "rx", "raw": "*#4*2*0*0240##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2327.891, "direction": "rx", "raw": "*1*1*07##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2330.891, "direction": "rx", "raw": "*1*0*07##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2591.682, "direction": "rx", "raw": "*#4*2#1*20*0##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2591.745, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2591.794, "direction": "rx", "raw": "*#4*2#2*20*5##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2600.879, "direction": "rx", "raw": "*2*1000#0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2600.904, "direction": "rx", "raw": "*2*0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2600.937, "direction": "rx", "raw": "*2*1000#2*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2600.976, "direction": "rx", "raw": "*2*2*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2606.704, "direction": "rx", "raw": "*2*0*05##", "run": "run7_localha_bus_monitor", "session": "evt"}, + {"timestamp": 2825.742, "direction": "rx", "raw": "*1*0*07##", "run": "run7_localha_bus_monitor", "session": "evt"} + ], + "rows": [ + { + "run": "run1_oracle_replay_readonly", + "t": 1.043, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.043, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.043, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*07##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.043, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*09##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.043, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.148, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.188, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.228, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 1.299, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 2.301, + "utc": "20:38:07", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0##", + "ack": true, + "reply_time_s": 1.258, + "replies": [ + "*1*0*06##", + "*1*0*07##", + "*1*0*09##" + ], + "events_after": [ + "*1*0*06##", + "*1*0*07##", + "*2*0*05##", + "*1*0*09##" + ], + "note": "area_0_sweep_reports_06_07_and_09" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 3.501, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0*12##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 3.501, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 4.507, + "utc": "20:38:09", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0*12##", + "ack": true, + "reply_time_s": 1.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.707, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*00##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.707, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.707, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*07##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.707, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*09##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.707, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.804, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.851, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.891, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.94, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 5.98, + "step": "oracle_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 6.979, + "utc": "20:38:12", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*00##", + "ack": true, + "reply_time_s": 1.272, + "replies": [ + "*1*0*06##", + "*1*0*07##", + "*1*0*09##" + ], + "events_after": [ + "*2*0*05##", + "*1*0*06##", + "*1*0*07##", + "*2*0*05##", + "*1*0*09##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 8.18, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0001##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 8.18, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 8.185, + "utc": "20:38:13", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0001##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [], + "note": "four_digit_area0_point_refused_locally" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 9.385, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0002##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 9.385, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 9.39, + "utc": "20:38:14", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0002##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [], + "note": "four_digit_area0_point_refused_locally" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 10.592, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0002#4#01##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 10.592, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 10.597, + "utc": "20:38:15", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0002#4#01##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 11.797, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0010##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 11.797, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 13.805, + "utc": "20:38:19", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0010##", + "ack": false, + "reply_time_s": 2.008, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 15.006, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0010#4#01##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 15.006, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 17.013, + "utc": "20:38:22", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0010#4#01##", + "ack": false, + "reply_time_s": 2.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 18.214, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0012*14##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 18.214, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 20.222, + "utc": "20:38:25", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0012*14##", + "ack": false, + "reply_time_s": 2.008, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 21.423, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0015##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 21.423, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 23.43, + "utc": "20:38:28", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*0015##", + "ack": false, + "reply_time_s": 2.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 24.63, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*02##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 24.63, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 26.637, + "utc": "20:38:31", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*02##", + "ack": false, + "reply_time_s": 2.007, + "replies": [], + "events_after": [], + "note": "unpopulated_point_02_nack_after_bus_timeout" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 27.838, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 27.838, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 28.845, + "utc": "20:38:34", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*2##", + "ack": true, + "reply_time_s": 1.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 30.053, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*31##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 30.053, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 32.058, + "utc": "20:38:37", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*31##", + "ack": false, + "reply_time_s": 2.005, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 33.258, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*31*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 33.258, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 35.266, + "utc": "20:38:40", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*31*1##", + "ack": false, + "reply_time_s": 2.008, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 36.476, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*31*4##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 36.476, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 38.484, + "utc": "20:38:43", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*31*4##", + "ack": false, + "reply_time_s": 2.008, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 39.685, + "step": "oracle_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*74##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 39.685, + "t_estimated": true, + "step": "oracle_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 41.691, + "utc": "20:38:47", + "step": "oracle_who1", + "dir": "result", + "frame": "*#1*74##", + "ack": false, + "reply_time_s": 2.006, + "replies": [], + "events_after": [], + "note": "where_74_nack_oracle_divergence" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 42.892, + "step": "oracle_who1001", + "dir": "tx", + "session": "cmd", + "frame": "*#1001*74##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 42.892, + "t_estimated": true, + "step": "oracle_who1001", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 42.898, + "utc": "20:38:48", + "step": "oracle_who1001", + "dir": "result", + "frame": "*#1001*74##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 44.097, + "step": "oracle_who1013", + "dir": "tx", + "session": "cmd", + "frame": "*#1013*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 44.097, + "t_estimated": true, + "step": "oracle_who1013", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 44.104, + "utc": "20:38:49", + "step": "oracle_who1013", + "dir": "result", + "frame": "*#1013*0##", + "ack": false, + "reply_time_s": 0.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 45.305, + "step": "oracle_who1013", + "dir": "tx", + "session": "cmd", + "frame": "*#1013*0*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 45.305, + "t_estimated": true, + "step": "oracle_who1013", + "dir": "rx", + "session": "cmd", + "frame": "*#1013**1*134*15*5*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 45.305, + "t_estimated": true, + "step": "oracle_who1013", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 45.312, + "step": "oracle_who1013", + "dir": "rx", + "session": "evt", + "frame": "*#1013**1*134*15*5*0##", + "ownd_class": "OWNGatewayDiagnosticEvent", + "ownd_log": "Gateway diagnostic object model is: F461 (134)." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 45.315, + "utc": "20:38:50", + "step": "oracle_who1013", + "dir": "result", + "frame": "*#1013*0*1##", + "ack": true, + "reply_time_s": 0.01, + "replies": [ + "*#1013**1*134*15*5*0##" + ], + "events_after": [ + "*#1013**1*134*15*5*0##" + ], + "note": "who1013_object_model_134_15_5_0" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 46.515, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 46.515, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**0*23*38*50*999##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 46.515, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 46.52, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**0*23*38*50*999##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal time is: 23:38:50." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 46.523, + "utc": "20:38:51", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**0##", + "ack": true, + "reply_time_s": 0.008, + "replies": [ + "*#13**0*23*38*50*999##" + ], + "events_after": [ + "*#13**0*23*38*50*999##" + ], + "note": "who13_time_echoed_on_evt" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 47.724, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 47.724, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**1*05*23*10*2026##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 47.724, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 47.73, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**1*05*23*10*2026##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal date is: 2026-10-23." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 47.733, + "utc": "20:38:53", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**1##", + "ack": true, + "reply_time_s": 0.009, + "replies": [ + "*#13**1*05*23*10*2026##" + ], + "events_after": [ + "*#13**1*05*23*10*2026##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 48.933, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**15##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 48.933, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**15*200##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 48.933, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 48.938, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**15*200##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway device type is: F454 / MyHomeServer1 / MH202 / F461 / H4890 / F450 / F459 / F460 / MH201." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 48.944, + "utc": "20:38:54", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**15##", + "ack": true, + "reply_time_s": 0.011, + "replies": [ + "*#13**15*200##" + ], + "events_after": [ + "*#13**15*200##" + ], + "note": "who13_device_type_200" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 50.145, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**16##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 50.145, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**16*2*0*11##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 50.145, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 50.149, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**16*2*0*11##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's firmware version is: 2.0.11." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 50.153, + "utc": "20:38:55", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**16##", + "ack": true, + "reply_time_s": 0.008, + "replies": [ + "*#13**16*2*0*11##" + ], + "events_after": [ + "*#13**16*2*0*11##" + ], + "note": "who13_firmware_2_0_11" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 51.354, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**22##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 51.354, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**22*23*38*55*999*05*23*10*2026##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 51.354, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 51.359, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**22*23*38*55*999*05*23*10*2026##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal datetime is: 2026-10-23 23:38:55." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 51.381, + "utc": "20:38:56", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**22##", + "ack": true, + "reply_time_s": 0.027, + "replies": [ + "*#13**22*23*38*55*999*05*23*10*2026##" + ], + "events_after": [ + "*#13**22*23*38*55*999*05*23*10*2026##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 52.583, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**23##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 52.583, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**23*5*10*35##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 52.583, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 52.588, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**23*5*10*35##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's kernel version is: 5.10.35." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 52.592, + "utc": "20:38:57", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**23##", + "ack": true, + "reply_time_s": 0.009, + "replies": [ + "*#13**23*5*10*35##" + ], + "events_after": [ + "*#13**23*5*10*35##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 53.793, + "step": "oracle_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**24##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 53.793, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**24*2*26*4##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 53.793, + "t_estimated": true, + "step": "oracle_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 53.797, + "step": "oracle_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**24*2*26*4##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's distribution version is: 2.26.4." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 53.825, + "utc": "20:38:59", + "step": "oracle_who13", + "dir": "result", + "frame": "*#13**24##", + "ack": true, + "reply_time_s": 0.032, + "replies": [ + "*#13**24*2*26*4##" + ], + "events_after": [ + "*#13**24*2*26*4##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 55.025, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 55.025, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 55.029, + "utc": "20:39:00", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*0##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 56.23, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*0*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 56.23, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 56.235, + "utc": "20:39:01", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*0*5##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [], + "note": "who16_refused_locally" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 57.436, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*100*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 57.436, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 57.44, + "utc": "20:39:02", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*100*5##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 58.64, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 58.64, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 58.645, + "utc": "20:39:03", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*101##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 59.845, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 59.845, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 59.851, + "utc": "20:39:05", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*101*5##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 61.052, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101*6##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 61.052, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 61.062, + "utc": "20:39:06", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*101*6##", + "ack": false, + "reply_time_s": 0.01, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 62.263, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101*7##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 62.263, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 62.266, + "utc": "20:39:07", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*101*7##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 63.466, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101*8##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 63.466, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 63.47, + "utc": "20:39:08", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*101*8##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 64.671, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101*9##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 64.671, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 64.674, + "utc": "20:39:09", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*101*9##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 65.874, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*102*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 65.874, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 65.877, + "utc": "20:39:11", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*102*5##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 67.078, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*102*6##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 67.078, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 67.081, + "utc": "20:39:12", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*102*6##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 68.283, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*102*7##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 68.283, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 68.286, + "utc": "20:39:13", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*102*7##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 69.487, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*102*8##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 69.487, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 69.491, + "utc": "20:39:14", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*102*8##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 70.692, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*102*9##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 70.692, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 70.695, + "utc": "20:39:16", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*102*9##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 71.896, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*103*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 71.896, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 71.899, + "utc": "20:39:17", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*103*5##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 73.099, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*104*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 73.099, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 73.103, + "utc": "20:39:18", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*104*5##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 74.304, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*21*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 74.304, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 74.308, + "utc": "20:39:19", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*21*1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 75.509, + "step": "oracle_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*21*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 75.509, + "t_estimated": true, + "step": "oracle_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 75.512, + "utc": "20:39:20", + "step": "oracle_who16", + "dir": "result", + "frame": "*#16*21*5##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 76.713, + "step": "oracle_who17", + "dir": "tx", + "session": "cmd", + "frame": "*#17*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 76.713, + "t_estimated": true, + "step": "oracle_who17", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 76.717, + "utc": "20:39:22", + "step": "oracle_who17", + "dir": "result", + "frame": "*#17*0##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 77.917, + "step": "oracle_who17", + "dir": "tx", + "session": "cmd", + "frame": "*#17*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 77.917, + "t_estimated": true, + "step": "oracle_who17", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 77.921, + "utc": "20:39:23", + "step": "oracle_who17", + "dir": "result", + "frame": "*#17*1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 79.121, + "step": "oracle_who17", + "dir": "tx", + "session": "cmd", + "frame": "*#17*1*40##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 79.121, + "t_estimated": true, + "step": "oracle_who17", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 79.126, + "utc": "20:39:24", + "step": "oracle_who17", + "dir": "result", + "frame": "*#17*1*40##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 80.327, + "step": "oracle_who17", + "dir": "tx", + "session": "cmd", + "frame": "*#17*1*41##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 80.327, + "t_estimated": true, + "step": "oracle_who17", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 80.33, + "utc": "20:39:25", + "step": "oracle_who17", + "dir": "result", + "frame": "*#17*1*41##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 81.549, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*11*212##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 81.549, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 81.949, + "utc": "20:39:27", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*11*212##", + "ack": true, + "reply_time_s": 0.4, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 83.149, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*11*250##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 83.149, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 83.934, + "utc": "20:39:29", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*11*250##", + "ack": true, + "reply_time_s": 0.785, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 85.135, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*11*251##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 85.135, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 85.939, + "utc": "20:39:31", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*11*251##", + "ack": true, + "reply_time_s": 0.804, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 87.139, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*11*258##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 87.139, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 87.944, + "utc": "20:39:33", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*11*258##", + "ack": true, + "reply_time_s": 0.805, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 89.145, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*113##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 89.145, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 89.947, + "utc": "20:39:35", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*113##", + "ack": true, + "reply_time_s": 0.802, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 91.149, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*1130##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 91.149, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 91.953, + "utc": "20:39:37", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*1130##", + "ack": true, + "reply_time_s": 0.804, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 93.17, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*1134##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 93.17, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 93.957, + "utc": "20:39:39", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*1134##", + "ack": true, + "reply_time_s": 0.787, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 95.158, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*1200##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 95.158, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 95.164, + "utc": "20:39:40", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*1200##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [], + "note": "dim1200_read_refused_locally" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 96.365, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*51##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 96.365, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 96.963, + "utc": "20:39:42", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*51##", + "ack": true, + "reply_time_s": 0.598, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 98.164, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*511#10#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 98.164, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 101.972, + "utc": "20:39:47", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*511#10#1##", + "ack": true, + "reply_time_s": 3.808, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 103.172, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*511#10#2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 103.172, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 106.979, + "utc": "20:39:52", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*511#10#2##", + "ack": true, + "reply_time_s": 3.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 108.18, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*512#10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 108.18, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 112.482, + "utc": "20:39:57", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*512#10##", + "ack": true, + "reply_time_s": 4.302, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 113.683, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*513#10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 113.683, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 116.485, + "step": "oracle_who18", + "dir": "rx", + "session": "evt", + "frame": "*#13**#1*05*23*10*2026##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal date: 2026-10-23." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 116.486, + "step": "oracle_who18", + "dir": "rx", + "session": "evt", + "frame": "*#13**#0*23*40*00*##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal time: 23:40:00." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 117.49, + "utc": "20:40:02", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*513#10##", + "ack": true, + "reply_time_s": 3.807, + "replies": [], + "events_after": [ + "*#13**#1*05*23*10*2026##", + "*#13**#0*23*40*00*##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 118.69, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*514#10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 118.69, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 122.498, + "utc": "20:40:07", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*514#10##", + "ack": true, + "reply_time_s": 3.808, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 123.699, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*516##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 123.699, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 127.501, + "utc": "20:40:12", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*516##", + "ack": true, + "reply_time_s": 3.802, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 128.701, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*517#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 128.701, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 132.508, + "utc": "20:40:17", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*517#1##", + "ack": true, + "reply_time_s": 3.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 133.71, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*517#2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 133.71, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 137.518, + "utc": "20:40:22", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*517#2##", + "ack": true, + "reply_time_s": 3.808, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 138.719, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*52##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 138.719, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 138.726, + "utc": "20:40:24", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*52##", + "ack": false, + "reply_time_s": 0.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 139.927, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*52#26#9##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 139.927, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 144.531, + "utc": "20:40:29", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*52#26#9##", + "ack": true, + "reply_time_s": 4.604, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 145.732, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*53##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 145.732, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 149.538, + "utc": "20:40:34", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*53##", + "ack": true, + "reply_time_s": 3.806, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 150.741, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*54##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 150.741, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 151.544, + "utc": "20:40:36", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*51*54##", + "ack": true, + "reply_time_s": 0.803, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 152.746, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*71#0*113##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 152.746, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 153.547, + "utc": "20:40:38", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*71#0*113##", + "ack": true, + "reply_time_s": 0.801, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 154.747, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*71#0*51##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 154.747, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 155.552, + "utc": "20:40:40", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*71#0*51##", + "ack": true, + "reply_time_s": 0.805, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 156.754, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*71#0*71##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 156.754, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 158.557, + "utc": "20:40:43", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*71#0*71##", + "ack": true, + "reply_time_s": 1.803, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 159.758, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*71#0*72#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 159.758, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 163.565, + "utc": "20:40:48", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*71#0*72#1##", + "ack": true, + "reply_time_s": 3.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 164.766, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*71#0*72#2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 164.766, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 169.575, + "utc": "20:40:54", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*71#0*72#2##", + "ack": true, + "reply_time_s": 4.809, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 170.777, + "step": "oracle_who18", + "dir": "tx", + "session": "cmd", + "frame": "*#18*71#0*73##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 170.777, + "t_estimated": true, + "step": "oracle_who18", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 173.582, + "utc": "20:40:58", + "step": "oracle_who18", + "dir": "result", + "frame": "*#18*71#0*73##", + "ack": true, + "reply_time_s": 2.805, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 174.783, + "step": "oracle_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 174.783, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*2*0*05##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 174.783, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 174.88, + "step": "oracle_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 174.928, + "step": "oracle_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 174.97, + "step": "oracle_who2", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 175.049, + "step": "oracle_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 176.051, + "utc": "20:41:01", + "step": "oracle_who2", + "dir": "result", + "frame": "*#2*0##", + "ack": true, + "reply_time_s": 1.268, + "replies": [ + "*2*0*05##" + ], + "events_after": [ + "*1*0*06##", + "*1*0*07##", + "*2*0*05##", + "*1*0*09##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 177.252, + "step": "oracle_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*0#4#02##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 177.252, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 178.33, + "utc": "20:41:03", + "step": "oracle_who2", + "dir": "result", + "frame": "*#2*0#4#02##", + "ack": true, + "reply_time_s": 1.078, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 179.53, + "step": "oracle_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*11#4#02##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 179.53, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 180.634, + "utc": "20:41:05", + "step": "oracle_who2", + "dir": "result", + "frame": "*#2*11#4#02##", + "ack": true, + "reply_time_s": 1.104, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 181.835, + "step": "oracle_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*11#4#02*10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 181.835, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 182.913, + "utc": "20:41:08", + "step": "oracle_who2", + "dir": "result", + "frame": "*#2*11#4#02*10##", + "ack": true, + "reply_time_s": 1.078, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 184.114, + "step": "oracle_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*31##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 184.114, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 184.393, + "utc": "20:41:09", + "step": "oracle_who2", + "dir": "result", + "frame": "*#2*31##", + "ack": false, + "reply_time_s": 0.279, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 185.594, + "step": "oracle_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*31*10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 185.594, + "t_estimated": true, + "step": "oracle_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 186.682, + "utc": "20:41:11", + "step": "oracle_who2", + "dir": "result", + "frame": "*#2*31*10##", + "ack": true, + "reply_time_s": 1.088, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 187.884, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*2#1*10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 187.884, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 190.594, + "utc": "20:41:15", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*2#1*10##", + "ack": false, + "reply_time_s": 2.71, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 191.795, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*2#1*13##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 191.795, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 194.602, + "utc": "20:41:19", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*2#1*13##", + "ack": false, + "reply_time_s": 2.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 195.803, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*2#1*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 195.803, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 198.613, + "utc": "20:41:23", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*2#1*5##", + "ack": false, + "reply_time_s": 2.81, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 199.825, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*2#1*6##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 199.825, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 202.631, + "utc": "20:41:27", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*2#1*6##", + "ack": false, + "reply_time_s": 2.806, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 203.832, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 203.832, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 206.627, + "utc": "20:41:31", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*1##", + "ack": false, + "reply_time_s": 2.795, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 207.829, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*12##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 207.829, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 210.635, + "utc": "20:41:35", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*12##", + "ack": false, + "reply_time_s": 2.806, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 211.84, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*17##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 211.84, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 214.647, + "utc": "20:41:39", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*17##", + "ack": false, + "reply_time_s": 2.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 215.848, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*19##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 215.848, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 218.651, + "utc": "20:41:43", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*19##", + "ack": false, + "reply_time_s": 2.803, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 219.852, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 219.852, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 222.661, + "utc": "20:41:47", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*2##", + "ack": false, + "reply_time_s": 2.809, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 223.862, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*20##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 223.862, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 226.669, + "utc": "20:41:51", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*20##", + "ack": false, + "reply_time_s": 2.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 227.87, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*4##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 227.87, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 230.677, + "utc": "20:41:55", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#1#1*4##", + "ack": false, + "reply_time_s": 2.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 231.879, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#2#0*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 231.879, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 234.686, + "utc": "20:41:59", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*3#2#0*1##", + "ack": false, + "reply_time_s": 2.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 235.886, + "step": "oracle_who22", + "dir": "tx", + "session": "cmd", + "frame": "*#22*5#2#1*5##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 235.886, + "t_estimated": true, + "step": "oracle_who22", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 238.693, + "utc": "20:42:04", + "step": "oracle_who22", + "dir": "result", + "frame": "*#22*5#2#1*5##", + "ack": false, + "reply_time_s": 2.807, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 239.893, + "step": "oracle_who25", + "dir": "tx", + "session": "cmd", + "frame": "*#25*21##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 239.893, + "t_estimated": true, + "step": "oracle_who25", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 240.843, + "utc": "20:42:06", + "step": "oracle_who25", + "dir": "result", + "frame": "*#25*21##", + "ack": false, + "reply_time_s": 0.95, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 242.045, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 242.045, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 242.049, + "utc": "20:42:07", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*#1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 242.983, + "step": "oracle_who3", + "dir": "rx", + "session": "evt", + "frame": "*1*1*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched on." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 243.086, + "step": "oracle_who3", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 243.19, + "step": "oracle_who3", + "dir": "rx", + "session": "evt", + "frame": "*1*1*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched on." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 243.25, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*#2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 243.25, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 243.253, + "utc": "20:42:08", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*#2##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 243.295, + "step": "oracle_who3", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 244.454, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 244.454, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 244.458, + "utc": "20:42:09", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*0##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 245.66, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*10*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 245.66, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 245.666, + "utc": "20:42:10", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*10*0##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 246.866, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*10*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 246.866, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 246.87, + "utc": "20:42:12", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*10*1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 248.073, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*10*2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 248.073, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 248.077, + "utc": "20:42:13", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*10*2##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 249.279, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*10*3##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 249.279, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 249.287, + "utc": "20:42:14", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*10*3##", + "ack": false, + "reply_time_s": 0.008, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 250.487, + "step": "oracle_who3", + "dir": "tx", + "session": "cmd", + "frame": "*#3*10*4##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 250.487, + "t_estimated": true, + "step": "oracle_who3", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 250.491, + "utc": "20:42:15", + "step": "oracle_who3", + "dir": "result", + "frame": "*#3*10*4##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 251.692, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 251.692, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 253.91, + "utc": "20:42:19", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*#0##", + "ack": false, + "reply_time_s": 2.218, + "replies": [], + "events_after": [], + "note": "central_status_nack_no_central_unit" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 255.111, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0*14##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 255.111, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 257.177, + "utc": "20:42:22", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*#0*14##", + "ack": false, + "reply_time_s": 2.066, + "replies": [], + "events_after": [], + "note": "central_setpoint_nack_no_central_unit" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 258.377, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0*20##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 258.377, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2#1*20*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 258.377, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2#2*20*5##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 258.377, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 258.456, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 258.512, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 260.514, + "utc": "20:42:25", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*#0*20##", + "ack": true, + "reply_time_s": 2.137, + "replies": [ + "*#4*2#1*20*0##", + "*#4*2#2*20*5##" + ], + "events_after": [ + "*#4*2#1*20*0##", + "*#4*2#2*20*5##" + ], + "note": "all_zone_actuators_answer_for_zone_2" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 260.944, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*39##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 39.0%." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 261.715, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 261.715, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 261.722, + "utc": "20:42:27", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*0##", + "ack": false, + "reply_time_s": 0.007, + "replies": [], + "events_after": [], + "note": "general_zone_status_refused_locally" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 262.922, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 262.922, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 266.2, + "utc": "20:42:31", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1##", + "ack": false, + "reply_time_s": 3.278, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 267.401, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1#1*20##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 267.401, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 269.472, + "utc": "20:42:34", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1#1*20##", + "ack": false, + "reply_time_s": 2.071, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 270.674, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 270.674, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 272.745, + "utc": "20:42:38", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*0##", + "ack": false, + "reply_time_s": 2.071, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 273.946, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*11##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 273.946, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 276.019, + "utc": "20:42:41", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*11##", + "ack": false, + "reply_time_s": 2.073, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 277.219, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*12##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 277.219, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 279.288, + "utc": "20:42:44", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*12##", + "ack": false, + "reply_time_s": 2.069, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 280.489, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*13##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 280.489, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 282.559, + "utc": "20:42:47", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*13##", + "ack": false, + "reply_time_s": 2.07, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 283.76, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*14##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 283.76, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 285.823, + "utc": "20:42:51", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*14##", + "ack": false, + "reply_time_s": 2.063, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 287.024, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*15#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 287.024, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 289.112, + "utc": "20:42:54", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*15#1##", + "ack": false, + "reply_time_s": 2.088, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 290.313, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*15#2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 290.313, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 292.39, + "utc": "20:42:57", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*15#2##", + "ack": false, + "reply_time_s": 2.077, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 293.591, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*19##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 293.591, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 295.664, + "utc": "20:43:00", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*19##", + "ack": false, + "reply_time_s": 2.073, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 296.865, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*1*20##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 296.865, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 298.935, + "utc": "20:43:04", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*1*20##", + "ack": false, + "reply_time_s": 2.07, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 300.137, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*105*15##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 300.137, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 302.232, + "utc": "20:43:07", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*105*15##", + "ack": false, + "reply_time_s": 2.095, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 303.433, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*23#1*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 303.433, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 303.439, + "utc": "20:43:08", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*23#1*0##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 304.641, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*23#1*15#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 304.641, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 306.737, + "utc": "20:43:12", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*23#1*15#1##", + "ack": false, + "reply_time_s": 2.096, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 307.938, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*23*11##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 307.938, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 310.015, + "utc": "20:43:15", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*23*11##", + "ack": false, + "reply_time_s": 2.077, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 311.216, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*40*19##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 311.216, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 313.303, + "utc": "20:43:18", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*40*19##", + "ack": false, + "reply_time_s": 2.087, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 314.507, + "step": "oracle_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*41*19##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 314.507, + "t_estimated": true, + "step": "oracle_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 316.173, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 316.212, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 316.253, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 316.325, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 318.157, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 318.205, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 318.253, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 318.325, + "step": "oracle_who4", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 320.332, + "utc": "20:43:25", + "step": "oracle_who4", + "dir": "result", + "frame": "*#4*41*19##", + "ack": false, + "reply_time_s": 5.825, + "replies": [], + "events_after": [ + "*1*0*06##", + "*1*0*07##", + "*2*0*05##", + "*1*0*09##", + "*2*0*05##", + "*1*0*06##", + "*1*0*07##", + "*1*0*09##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 321.532, + "step": "oracle_who5", + "dir": "tx", + "session": "cmd", + "frame": "*#5*#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 321.532, + "t_estimated": true, + "step": "oracle_who5", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 321.545, + "utc": "20:43:26", + "step": "oracle_who5", + "dir": "result", + "frame": "*#5*#1##", + "ack": false, + "reply_time_s": 0.013, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 322.747, + "step": "oracle_who5", + "dir": "tx", + "session": "cmd", + "frame": "*#5*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 322.747, + "t_estimated": true, + "step": "oracle_who5", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 322.75, + "utc": "20:43:28", + "step": "oracle_who5", + "dir": "result", + "frame": "*#5*0##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [], + "note": "who5_refused_locally" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 323.952, + "step": "oracle_who8", + "dir": "tx", + "session": "cmd", + "frame": "*#8*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 323.952, + "t_estimated": true, + "step": "oracle_who8", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 323.956, + "utc": "20:43:29", + "step": "oracle_who8", + "dir": "result", + "frame": "*#8*0##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 324.613, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.157, + "step": "oracle_who8", + "dir": "tx", + "session": "cmd", + "frame": "*#8*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.157, + "t_estimated": true, + "step": "oracle_who8", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.161, + "utc": "20:43:30", + "step": "oracle_who8", + "dir": "result", + "frame": "*#8*1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.229, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0239##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 23.9°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.545, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.547, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.849, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0210*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 21.0°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 325.96, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 326.362, + "step": "oracle_who8", + "dir": "tx", + "session": "cmd", + "frame": "*#8*11##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 326.362, + "t_estimated": true, + "step": "oracle_who8", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 326.366, + "utc": "20:43:31", + "step": "oracle_who8", + "dir": "result", + "frame": "*#8*11##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 327.567, + "step": "oracle_who8", + "dir": "tx", + "session": "cmd", + "frame": "*#8*11*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 327.567, + "t_estimated": true, + "step": "oracle_who8", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 327.573, + "utc": "20:43:32", + "step": "oracle_who8", + "dir": "result", + "frame": "*#8*11*0##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 328.246, + "step": "oracle_who8", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*39##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 39.0%." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 328.774, + "step": "oracle_who8", + "dir": "tx", + "session": "cmd", + "frame": "*#8*20##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 328.774, + "t_estimated": true, + "step": "oracle_who8", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 328.778, + "utc": "20:43:34", + "step": "oracle_who8", + "dir": "result", + "frame": "*#8*20##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 329.979, + "step": "oracle_who8", + "dir": "tx", + "session": "cmd", + "frame": "*#8*20*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 329.979, + "t_estimated": true, + "step": "oracle_who8", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 329.983, + "utc": "20:43:35", + "step": "oracle_who8", + "dir": "result", + "frame": "*#8*20*0##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 331.184, + "step": "oracle_who9", + "dir": "tx", + "session": "cmd", + "frame": "*#9*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 331.184, + "t_estimated": true, + "step": "oracle_who9", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 331.191, + "utc": "20:43:36", + "step": "oracle_who9", + "dir": "result", + "frame": "*#9*0##", + "ack": false, + "reply_time_s": 0.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 332.391, + "step": "oracle_who9", + "dir": "tx", + "session": "cmd", + "frame": "*#9*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 332.391, + "t_estimated": true, + "step": "oracle_who9", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 332.399, + "utc": "20:43:37", + "step": "oracle_who9", + "dir": "result", + "frame": "*#9*1##", + "ack": false, + "reply_time_s": 0.008, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 333.6, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*06##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 333.6, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 333.6, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 333.676, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 333.679, + "utc": "20:43:38", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*06##", + "ack": true, + "reply_time_s": 0.079, + "replies": [ + "*1*0*06##" + ], + "events_after": [ + "*1*0*06##" + ], + "note": "poll_light_06" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 334.88, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*07##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 334.88, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*07##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 334.88, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 334.961, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 334.965, + "utc": "20:43:40", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*07##", + "ack": true, + "reply_time_s": 0.085, + "replies": [ + "*1*0*07##" + ], + "events_after": [ + "*1*0*07##" + ], + "note": "poll_light_07" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 336.167, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*09##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 336.167, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 338.174, + "utc": "20:43:43", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*09##", + "ack": false, + "reply_time_s": 2.007, + "replies": [], + "events_after": [], + "note": "poll_light_09_behind_f422_nack" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 339.375, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*#1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 339.375, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 340.382, + "utc": "20:43:45", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*#1##", + "ack": true, + "reply_time_s": 1.007, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 341.583, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*06*1##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 341.583, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 341.583, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 341.7, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 341.702, + "utc": "20:43:47", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*06*1##", + "ack": true, + "reply_time_s": 0.119, + "replies": [ + "*1*0*06##" + ], + "events_after": [ + "*1*0*06##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 342.902, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*06*4##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 342.902, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 342.902, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 343.028, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 343.03, + "utc": "20:43:48", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*06*4##", + "ack": true, + "reply_time_s": 0.128, + "replies": [ + "*1*0*06##" + ], + "events_after": [ + "*1*0*06##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 344.231, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*06*15##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 344.231, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 344.236, + "utc": "20:43:49", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*06*15##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [], + "note": "dim15_is_group_only" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 345.437, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*#1*15##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 345.437, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 345.524, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#1*#1*15##", + "ownd_class": "OWNLightingCommand", + "ownd_log": "*#1*#1*15##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 345.526, + "utc": "20:43:50", + "step": "plant_reads", + "dir": "result", + "frame": "*#1*#1*15##", + "ack": true, + "reply_time_s": 0.089, + "replies": [], + "events_after": [ + "*#1*#1*15##" + ], + "note": "group_1_dim15_echoed_on_evt" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 346.727, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#2*05##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 346.727, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*2*0*05##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 346.727, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 346.805, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 346.809, + "utc": "20:43:52", + "step": "plant_reads", + "dir": "result", + "frame": "*#2*05##", + "ack": true, + "reply_time_s": 0.082, + "replies": [ + "*2*0*05##" + ], + "events_after": [ + "*2*0*05##" + ], + "note": "poll_cover_05" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 348.01, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#2*05*10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 348.01, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 349.102, + "utc": "20:43:54", + "step": "plant_reads", + "dir": "result", + "frame": "*#2*05*10##", + "ack": true, + "reply_time_s": 1.092, + "replies": [], + "events_after": [], + "note": "cover_05_dim10_ack_no_data" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 350.306, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#2*05*11##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 350.306, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 350.312, + "utc": "20:43:55", + "step": "plant_reads", + "dir": "result", + "frame": "*#2*05*11##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [], + "note": "cover_05_dim11_nack" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*0*0239##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*12*0235*3##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*2##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*14*0210*3##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*13*00##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 351.513, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 352.097, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0239##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 23.9°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 352.403, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 352.405, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 352.722, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0210*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 21.0°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 352.815, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 352.818, + "utc": "20:43:58", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2##", + "ack": true, + "reply_time_s": 1.305, + "replies": [ + "*#4*2*0*0239##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0210*3##", + "*#4*2*13*00##" + ], + "events_after": [ + "*#4*2*0*0239##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0210*3##", + "*#4*2*13*00##" + ], + "note": "zone_2_status_dim12_differs_from_dim14" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 354.019, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*0##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 354.019, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*0*0239##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 354.019, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 354.135, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0239##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 23.9°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 354.138, + "utc": "20:43:59", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*0##", + "ack": true, + "reply_time_s": 0.119, + "replies": [ + "*#4*2*0*0239##" + ], + "events_after": [ + "*#4*2*0*0239##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.339, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*12##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.339, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*12*0235*3##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.339, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*2##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.339, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.447, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.45, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 355.45, + "utc": "20:44:00", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*12##", + "ack": true, + "reply_time_s": 0.111, + "replies": [ + "*#4*2*12*0235*3##", + "*4*1*2##" + ], + "events_after": [ + "*#4*2*12*0235*3##", + "*4*1*2##" + ], + "note": "zone_2_dim12_carries_season" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 356.651, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*13##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 356.651, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*13*00##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 356.651, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 356.769, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 356.771, + "utc": "20:44:02", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*13##", + "ack": true, + "reply_time_s": 0.12, + "replies": [ + "*#4*2*13*00##" + ], + "events_after": [ + "*#4*2*13*00##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 357.973, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*14##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 357.973, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*14*0210*3##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 357.973, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 358.062, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0210*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 21.0°C." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 358.066, + "utc": "20:44:03", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*14##", + "ack": true, + "reply_time_s": 0.093, + "replies": [ + "*#4*2*14*0210*3##" + ], + "events_after": [ + "*#4*2*14*0210*3##" + ], + "note": "zone_2_dim14_commanded_value" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 359.268, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*19##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 359.268, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*19*5*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 359.268, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 359.375, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*19*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's cooling fan is off; heating valve is off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 359.378, + "utc": "20:44:04", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*19##", + "ack": true, + "reply_time_s": 0.11, + "replies": [ + "*#4*2*19*5*0##" + ], + "events_after": [ + "*#4*2*19*5*0##" + ], + "note": "zone_2_valves_status" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 360.579, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*20##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 360.579, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2#1*20*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 360.579, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 360.686, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 360.69, + "utc": "20:44:06", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*20##", + "ack": true, + "reply_time_s": 0.111, + "replies": [ + "*#4*2#1*20*0##" + ], + "events_after": [ + "*#4*2#1*20*0##" + ], + "note": "zone_2_actuators_two_frames" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 360.749, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 361.894, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*11##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 361.894, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 363.977, + "utc": "20:44:09", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*2*11##", + "ack": false, + "reply_time_s": 2.083, + "replies": [], + "events_after": [], + "note": "fan_speed_nack_in_heating_season" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 365.179, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 365.179, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 367.262, + "utc": "20:44:12", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*#2##", + "ack": false, + "reply_time_s": 2.083, + "replies": [], + "events_after": [], + "note": "central_zone_form_nack_no_central_unit" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 368.462, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#2*14##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 368.462, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 370.533, + "utc": "20:44:15", + "step": "plant_reads", + "dir": "result", + "frame": "*#4*#2*14##", + "ack": false, + "reply_time_s": 2.071, + "replies": [], + "events_after": [], + "note": "central_setpoint_zone_2_nack_no_central_unit" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 371.735, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#14*06##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 371.735, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 371.74, + "utc": "20:44:17", + "step": "plant_reads", + "dir": "result", + "frame": "*#14*06##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [], + "note": "who14_has_no_status_query" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 372.941, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**10##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 372.941, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#13**10*192*0*2*92##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 372.941, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 372.948, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#13**10*192*0*2*92##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's IP address is: 192.0.2.92." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 372.952, + "utc": "20:44:18", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**10##", + "ack": true, + "reply_time_s": 0.011, + "replies": [ + "*#13**10*192*0*2*92##" + ], + "events_after": [ + "*#13**10*192*0*2*92##" + ], + "note": "who13_ip_answered_on_f461" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 374.153, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**11##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 374.153, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#13**11*255*255*255*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 374.153, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 374.159, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#13**11*255*255*255*0##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's netmask is: 255.255.255.0." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 374.163, + "utc": "20:44:19", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**11##", + "ack": true, + "reply_time_s": 0.01, + "replies": [ + "*#13**11*255*255*255*0##" + ], + "events_after": [ + "*#13**11*255*255*255*0##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 375.363, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**12##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 375.363, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#13**12*0*3*80*0*16*35##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 375.363, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 375.369, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#13**12*0*3*80*0*16*35##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's MAC address is: 00:03:50:00:10:23." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 375.373, + "utc": "20:44:20", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**12##", + "ack": true, + "reply_time_s": 0.01, + "replies": [ + "*#13**12*0*3*80*0*16*35##" + ], + "events_after": [ + "*#13**12*0*3*80*0*16*35##" + ], + "note": "who13_mac_answered_on_f461" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 376.574, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**25##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 376.574, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 376.579, + "utc": "20:44:21", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**25##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 377.78, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**26##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 377.78, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 377.786, + "utc": "20:44:23", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**26##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 378.987, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**27##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 378.987, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#13**27*70#52#54#49##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 378.987, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 378.994, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#13**27*70#52#54#49##", + "ownd_class": "str", + "ownd_log": "" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 378.998, + "utc": "20:44:24", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**27##", + "ack": true, + "reply_time_s": 0.011, + "replies": [ + "*#13**27*70#52#54#49##" + ], + "events_after": [ + "*#13**27*70#52#54#49##" + ], + "note": "who13_dim27_model_name_F461_no_ownd_decoder" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 380.199, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**19##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 380.199, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#13**19*0*0*38*54##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 380.199, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 380.204, + "step": "plant_reads", + "dir": "rx", + "session": "evt", + "frame": "*#13**19*0*0*38*54##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's uptime is: 0:38:54." + }, + { + "run": "run1_oracle_replay_readonly", + "t": 380.208, + "utc": "20:44:25", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**19##", + "ack": true, + "reply_time_s": 0.009, + "replies": [ + "*#13**19*0*0*38*54##" + ], + "events_after": [ + "*#13**19*0*0*38*54##" + ] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 381.409, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**2##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 381.409, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 381.415, + "utc": "20:44:26", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**2##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run1_oracle_replay_readonly", + "t": 382.617, + "step": "plant_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**3##", + "is_status_request": true + }, + { + "run": "run1_oracle_replay_readonly", + "t": 382.617, + "t_estimated": true, + "step": "plant_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run1_oracle_replay_readonly", + "t": 382.623, + "utc": "20:44:27", + "step": "plant_reads", + "dir": "result", + "frame": "*#13**3##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [] + }, + { + "run": "run2_reviewer_reads", + "t": 384.663, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0007##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 384.663, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reviewer_reads", + "t": 384.67, + "utc": "21:02:20", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#1*0007##", + "ack": false, + "reply_time_s": 0.007, + "replies": [], + "events_after": [], + "note": "four_digit_0007_nack" + }, + { + "run": "run2_reviewer_reads", + "t": 385.871, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*07##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 385.871, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*07##" + }, + { + "run": "run2_reviewer_reads", + "t": 385.871, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reviewer_reads", + "t": 385.956, + "step": "reviewer_reads", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run2_reviewer_reads", + "t": 385.959, + "utc": "21:02:21", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#1*07##", + "ack": true, + "reply_time_s": 0.088, + "replies": [ + "*1*0*07##" + ], + "events_after": [ + "*1*0*07##" + ], + "note": "two_digit_07_ack" + }, + { + "run": "run2_reviewer_reads", + "t": 387.161, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#1*7##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 387.161, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reviewer_reads", + "t": 388.167, + "utc": "21:02:23", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#1*7##", + "ack": true, + "reply_time_s": 1.006, + "replies": [], + "events_after": [], + "note": "one_digit_7_is_area_7_ack_empty" + }, + { + "run": "run2_reviewer_reads", + "t": 389.368, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*0*60##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 389.368, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*60*39##" + }, + { + "run": "run2_reviewer_reads", + "t": 389.368, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reviewer_reads", + "t": 389.492, + "step": "reviewer_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*39##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 39.0%." + }, + { + "run": "run2_reviewer_reads", + "t": 391.496, + "utc": "21:02:26", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#4*0*60##", + "ack": true, + "reply_time_s": 2.128, + "replies": [ + "*#4*2*60*39##" + ], + "events_after": [ + "*#4*2*60*39##" + ], + "note": "general_humidity_sweep_answered_by_zone_2" + }, + { + "run": "run2_reviewer_reads", + "t": 392.697, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*60##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 392.697, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*60*39##" + }, + { + "run": "run2_reviewer_reads", + "t": 392.697, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reviewer_reads", + "t": 392.837, + "step": "reviewer_reads", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*39##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 39.0%." + }, + { + "run": "run2_reviewer_reads", + "t": 392.84, + "utc": "21:02:28", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#4*2*60##", + "ack": true, + "reply_time_s": 0.143, + "replies": [ + "*#4*2*60*39##" + ], + "events_after": [ + "*#4*2*60*39##" + ], + "note": "zone_2_humidity" + }, + { + "run": "run2_reviewer_reads", + "t": 394.041, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*1##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 394.041, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reviewer_reads", + "t": 396.049, + "utc": "21:02:31", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#22*3#1#1*1##", + "ack": false, + "reply_time_s": 2.008, + "replies": [], + "events_after": [], + "note": "who22_nack_after_bus_timeout" + }, + { + "run": "run2_reviewer_reads", + "t": 397.25, + "step": "reviewer_reads", + "dir": "tx", + "session": "cmd", + "frame": "*#13**0##", + "is_status_request": true + }, + { + "run": "run2_reviewer_reads", + "t": 397.25, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#13**0*00*02*31*999##" + }, + { + "run": "run2_reviewer_reads", + "t": 397.25, + "t_estimated": true, + "step": "reviewer_reads", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reviewer_reads", + "t": 397.255, + "step": "reviewer_reads", + "dir": "rx", + "session": "evt", + "frame": "*#13**0*00*02*31*999##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal time is: 00:02:31." + }, + { + "run": "run2_reviewer_reads", + "t": 397.258, + "utc": "21:02:32", + "step": "reviewer_reads", + "dir": "result", + "frame": "*#13**0##", + "ack": true, + "reply_time_s": 0.008, + "replies": [ + "*#13**0*00*02*31*999##" + ], + "events_after": [ + "*#13**0*00*02*31*999##" + ], + "note": "who13_time_echoed_on_evt" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 399.301, + "step": "setpoint_restore", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2*#14*0235*3##", + "is_status_request": false + }, + { + "run": "run3_climate_setpoint_restore", + "t": 399.301, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 399.379, + "utc": "21:13:35", + "step": "setpoint_restore", + "dir": "result", + "frame": "*#4*2*#14*0235*3##", + "ack": true, + "reply_time_s": 0.078, + "replies": [], + "events_after": [], + "note": "setpoint_write_mode_3_keeps_season" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 399.49, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 399.493, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 399.525, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0239##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 23.9°C." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "step": "setpoint_restore", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2##", + "is_status_request": true + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*0*0239##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*12*0235*3##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*2##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*14*0235*3##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*13*00##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.379, + "t_estimated": true, + "step": "setpoint_restore", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_climate_setpoint_restore", + "t": 401.962, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0239##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 23.9°C." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 402.265, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 402.267, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 402.57, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 402.654, + "step": "setpoint_restore", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run3_climate_setpoint_restore", + "t": 402.657, + "utc": "21:13:39", + "step": "setpoint_restore", + "dir": "result", + "frame": "*#4*2##", + "ack": true, + "reply_time_s": 1.278, + "replies": [ + "*#4*2*0*0239##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0235*3##", + "*#4*2*13*00##" + ], + "events_after": [ + "*#4*2*0*0239##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0235*3##", + "*#4*2*13*00##" + ], + "note": "zone_2_status_reply_order_0_12_season_14_13" + }, + { + "run": "run4_final_state", + "t": 404.699, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#1*06##", + "is_status_request": true + }, + { + "run": "run4_final_state", + "t": 404.699, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run4_final_state", + "t": 404.699, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4_final_state", + "t": 404.8, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run4_final_state", + "t": 404.802, + "utc": "21:13:18", + "step": "final_state", + "dir": "result", + "frame": "*#1*06##", + "ack": true, + "reply_time_s": 0.103, + "replies": [ + "*1*0*06##" + ], + "events_after": [ + "*1*0*06##" + ] + }, + { + "run": "run4_final_state", + "t": 405.303, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#1*07##", + "is_status_request": true + }, + { + "run": "run4_final_state", + "t": 405.303, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*07##" + }, + { + "run": "run4_final_state", + "t": 405.303, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4_final_state", + "t": 405.392, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run4_final_state", + "t": 405.394, + "utc": "21:13:18", + "step": "final_state", + "dir": "result", + "frame": "*#1*07##", + "ack": true, + "reply_time_s": 0.091, + "replies": [ + "*1*0*07##" + ], + "events_after": [ + "*1*0*07##" + ] + }, + { + "run": "run4_final_state", + "t": 405.895, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#2*05##", + "is_status_request": true + }, + { + "run": "run4_final_state", + "t": 405.895, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*2*0*05##" + }, + { + "run": "run4_final_state", + "t": 405.895, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4_final_state", + "t": 406.001, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run4_final_state", + "t": 406.003, + "utc": "21:13:19", + "step": "final_state", + "dir": "result", + "frame": "*#2*05##", + "ack": true, + "reply_time_s": 0.108, + "replies": [ + "*2*0*05##" + ], + "events_after": [ + "*2*0*05##" + ] + }, + { + "run": "run4_final_state", + "t": 406.504, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2##", + "is_status_request": true + }, + { + "run": "run4_final_state", + "t": 406.504, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*0*0239##" + }, + { + "run": "run4_final_state", + "t": 406.504, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*12*0210*3##" + }, + { + "run": "run4_final_state", + "t": 406.504, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*2##" + }, + { + "run": "run4_final_state", + "t": 406.504, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*14*0210*3##" + }, + { + "run": "run4_final_state", + "t": 406.504, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*13*00##" + }, + { + "run": "run4_final_state", + "t": 406.504, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4_final_state", + "t": 407.084, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0239##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 23.9°C." + }, + { + "run": "run4_final_state", + "t": 407.392, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0210*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 21.0°C." + }, + { + "run": "run4_final_state", + "t": 407.396, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run4_final_state", + "t": 407.692, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0210*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 21.0°C." + }, + { + "run": "run4_final_state", + "t": 407.769, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run4_final_state", + "t": 407.771, + "utc": "21:13:21", + "step": "final_state", + "dir": "result", + "frame": "*#4*2##", + "ack": true, + "reply_time_s": 1.267, + "replies": [ + "*#4*2*0*0239##", + "*#4*2*12*0210*3##", + "*4*1*2##", + "*#4*2*14*0210*3##", + "*#4*2*13*00##" + ], + "events_after": [ + "*#4*2*0*0239##", + "*#4*2*12*0210*3##", + "*4*1*2##", + "*#4*2*14*0210*3##", + "*#4*2*13*00##" + ], + "note": "zone_2_status_dim12_equals_dim14_21_0" + }, + { + "run": "run4b_final_state_after_restore", + "t": 409.824, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#1*06##", + "is_status_request": true + }, + { + "run": "run4b_final_state_after_restore", + "t": 409.824, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*06##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 409.824, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 409.92, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run4b_final_state_after_restore", + "t": 409.924, + "utc": "23:03:04", + "step": "final_state", + "dir": "result", + "frame": "*#1*06##", + "ack": true, + "reply_time_s": 0.1, + "replies": [ + "*1*0*06##" + ], + "events_after": [ + "*1*0*06##" + ] + }, + { + "run": "run4b_final_state_after_restore", + "t": 410.425, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#1*07##", + "is_status_request": true + }, + { + "run": "run4b_final_state_after_restore", + "t": 410.425, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*07##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 410.425, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 410.512, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run4b_final_state_after_restore", + "t": 410.516, + "utc": "23:03:04", + "step": "final_state", + "dir": "result", + "frame": "*#1*07##", + "ack": true, + "reply_time_s": 0.091, + "replies": [ + "*1*0*07##" + ], + "events_after": [ + "*1*0*07##" + ] + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.017, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#2*05##", + "is_status_request": true + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.017, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*2*0*05##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.017, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.097, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.099, + "utc": "23:03:05", + "step": "final_state", + "dir": "result", + "frame": "*#2*05##", + "ack": true, + "reply_time_s": 0.082, + "replies": [ + "*2*0*05##" + ], + "events_after": [ + "*2*0*05##" + ] + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "step": "final_state", + "dir": "tx", + "session": "cmd", + "frame": "*#4*2##", + "is_status_request": true + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*0*0241##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*12*0235*3##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*2##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*14*0235*3##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#4*2*13*00##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 411.602, + "t_estimated": true, + "step": "final_state", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run4b_final_state_after_restore", + "t": 412.223, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run4b_final_state_after_restore", + "t": 412.495, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run4b_final_state_after_restore", + "t": 412.498, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run4b_final_state_after_restore", + "t": 412.805, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run4b_final_state_after_restore", + "t": 412.905, + "step": "final_state", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run4b_final_state_after_restore", + "t": 412.911, + "utc": "23:03:07", + "step": "final_state", + "dir": "result", + "frame": "*#4*2##", + "ack": true, + "reply_time_s": 1.309, + "replies": [ + "*#4*2*0*0241##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0235*3##", + "*#4*2*13*00##" + ], + "events_after": [ + "*#4*2*0*0241##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0235*3##", + "*#4*2*13*00##" + ], + "note": "zone_2_status_dim12_equals_dim14_23_5" + }, + { + "run": "run5_injection_flags", + "t": 414.998, + "step": "injection_flags", + "dir": "tx", + "session": "cmd", + "frame": "*#18*51*113*100##", + "is_status_request": false + }, + { + "run": "run5_injection_flags", + "t": 414.998, + "t_estimated": true, + "step": "injection_flags", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run5_injection_flags", + "t": 416.407, + "utc": "21:10:36", + "step": "injection_flags", + "dir": "result", + "frame": "*#18*51*113*100##", + "ack": true, + "reply_time_s": 1.409, + "replies": [], + "events_after": [], + "note": "who18_report_form_ack_not_echoed" + }, + { + "run": "run5_injection_flags", + "t": 418.409, + "step": "injection_flags", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0*0*0215##", + "is_status_request": false + }, + { + "run": "run5_injection_flags", + "t": 418.409, + "t_estimated": true, + "step": "injection_flags", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run5_injection_flags", + "t": 422.534, + "utc": "21:10:42", + "step": "injection_flags", + "dir": "result", + "frame": "*#4*#0*0*0215##", + "ack": false, + "reply_time_s": 4.125, + "replies": [], + "events_after": [], + "note": "who4_central_report_form_nack_bus_timeout" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 449.499, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**12*0*3*80*0*16*35##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's MAC address is: 00:03:50:00:10:23." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 449.508, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#1013**1*134*15*5*0##", + "ownd_class": "OWNGatewayDiagnosticEvent", + "ownd_log": "Gateway diagnostic object model is: F461 (134)." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 449.698, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 449.744, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 449.784, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 449.856, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 451.705, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 451.746, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 451.793, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 451.866, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 453.682, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 454.302, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 454.631, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 454.633, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 454.941, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 455.045, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 455.194, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 455.249, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 494.831, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 494.867, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 494.907, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 494.927, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 500.04, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 509.464, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*1*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched on." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 511.783, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 586.968, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*0##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 0 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 625.496, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 625.536, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 625.584, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 625.655, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 627.592, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 627.641, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 627.68, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 627.754, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 629.57, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 630.212, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 630.525, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 630.528, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 630.828, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 630.921, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 633.201, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 633.257, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 637.736, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 637.783, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 637.816, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 637.887, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 639.735, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 639.783, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 639.841, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 639.872, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 641.69, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 642.418, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 642.658, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 642.666, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 642.932, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 643.074, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 645.425, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 645.472, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 884.116, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 884.168, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 884.205, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 884.285, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 886.213, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 886.26, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 886.309, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 886.381, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 888.318, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 888.938, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 889.257, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 889.261, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 889.555, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 889.638, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 891.92, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 891.963, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 892.007, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 983.792, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**#1*06*24*10*2026##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal date: 2026-10-24." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 983.796, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**#0*01*40*00*##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal time: 01:40:00." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1231.565, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1231.608, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1231.645, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1231.686, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1233.485, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1233.529, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1233.574, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1233.646, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1235.494, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1236.122, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1236.434, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1236.437, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1236.753, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1236.83, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1239.11, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1239.154, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1242.916, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1242.941, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1242.982, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#1*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1243.013, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is opening." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1248.702, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1252.597, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1252.613, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1252.662, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1252.686, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1256.34, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1256.365, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1258.692, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1258.725, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1258.757, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1258.797, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1264.645, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1304.918, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*38##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 38.0%." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1577.037, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*#20*0##", + "ownd_class": "OWNHeatingCommand", + "ownd_log": "*#4*2#1*#20*0##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1577.069, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1583.651, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**#1*06*24*10*2026##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal date: 2026-10-24." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 1583.652, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**#0*01*50*00*##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal time: 01:50:00." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2035.519, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2035.567, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2035.617, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2035.647, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2035.704, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2037.506, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2037.553, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2037.593, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2037.674, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2039.522, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2040.158, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2040.487, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2040.489, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2040.792, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2040.883, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2043.229, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2043.271, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2046.153, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*38##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 38.0%." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2048.268, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2048.292, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2048.349, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#1*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2048.381, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is opening." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2054.144, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2055.773, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2055.807, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2055.837, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2055.854, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2061.118, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2162.384, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2162.424, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2162.464, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2162.544, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2164.393, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2164.439, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2164.487, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2164.56, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*09##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 09 is switched off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2166.393, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2167.012, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2167.316, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2167.318, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2167.62, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*14*0235*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's target temperature is set to 23.5°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2167.738, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local offset is set to 0°C." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2170.033, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2170.08, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2172.969, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*60*38##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a humidity of 38.0%." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2183.097, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**#1*06*24*10*2026##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal date: 2026-10-24." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2183.1, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#13**#0*02*00*00*##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal time: 02:00:00." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2204.334, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2204.376, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2204.422, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#1*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2204.447, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is opening." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2209.616, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2214.031, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2214.057, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2214.099, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2214.128, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run6_event_session_ha_fixed_integration", + "t": 2219.595, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2223.517, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2237.964, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*1*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched on." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2239.795, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*06##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 06 is switched off." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2262.059, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2262.085, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2262.126, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2262.156, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2267.7, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2288.81, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2288.844, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#1*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2288.868, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2288.909, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is opening." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2291.355, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2291.372, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2303.965, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0220*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 22.0°C." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2303.967, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2304.005, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0240##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.0°C." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2314.662, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*12*0210*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's local target temperature is set to 21.0°C." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2314.664, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*4*1*2##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's season is heating." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2314.708, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2*0*0240##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's main sensor is reporting a temperature of 24.0°C." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2327.891, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*1*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched on." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2330.891, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2591.682, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's actuator 1 is off." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2591.745, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2591.794, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*2#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 2's fan is off." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2600.879, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#0*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2600.904, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2600.937, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*1000#2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "*2*1000#2*05##" + }, + { + "run": "run7_localha_bus_monitor", + "t": 2600.976, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*2*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 is closing." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2606.704, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*2*0*05##", + "ownd_class": "OWNAutomationEvent", + "ownd_log": "Cover 05 stopped." + }, + { + "run": "run7_localha_bus_monitor", + "t": 2825.742, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*1*0*07##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 07 is switched off." + }, + { + "run": "run8_flicker_repro", + "t": 2827.788, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#25*21##", + "is_status_request": true + }, + { + "run": "run8_flicker_repro", + "t": 2827.788, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8_flicker_repro", + "t": 2827.794, + "utc": "20:49:37", + "step": "flicker_repro", + "dir": "result", + "frame": "*#25*21##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [], + "note": "who25_refused_locally" + }, + { + "run": "run8_flicker_repro", + "t": 2833.794, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#3*#1##", + "is_status_request": true + }, + { + "run": "run8_flicker_repro", + "t": 2833.794, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8_flicker_repro", + "t": 2833.798, + "utc": "20:49:43", + "step": "flicker_repro", + "dir": "result", + "frame": "*#3*#1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [], + "note": "who3_refused_locally" + }, + { + "run": "run8_flicker_repro", + "t": 2839.799, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#25*21##", + "is_status_request": true + }, + { + "run": "run8_flicker_repro", + "t": 2839.799, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8_flicker_repro", + "t": 2839.805, + "utc": "20:49:49", + "step": "flicker_repro", + "dir": "result", + "frame": "*#25*21##", + "ack": false, + "reply_time_s": 0.006, + "replies": [], + "events_after": [], + "note": "who25_refused_locally" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2841.845, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#1#1*4##", + "is_status_request": true + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2841.845, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2843.695, + "utc": "20:50:05", + "step": "flicker_repro", + "dir": "result", + "frame": "*#22*3#1#1*4##", + "ack": false, + "reply_time_s": 1.85, + "replies": [], + "events_after": [], + "note": "who22_nack_after_bus_timeout" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2844.896, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#22*3#2#0*1##", + "is_status_request": true + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2844.896, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2846.705, + "utc": "20:50:08", + "step": "flicker_repro", + "dir": "result", + "frame": "*#22*3#2#0*1##", + "ack": false, + "reply_time_s": 1.809, + "replies": [], + "events_after": [] + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2847.906, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#22*5#2#1*5##", + "is_status_request": true + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2847.906, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2849.711, + "utc": "20:50:11", + "step": "flicker_repro", + "dir": "result", + "frame": "*#22*5#2#1*5##", + "ack": false, + "reply_time_s": 1.805, + "replies": [], + "events_after": [] + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2850.912, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#25*21##", + "is_status_request": true + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2850.912, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2850.917, + "utc": "20:50:12", + "step": "flicker_repro", + "dir": "result", + "frame": "*#25*21##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [] + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2852.118, + "step": "flicker_repro", + "dir": "tx", + "session": "cmd", + "frame": "*#3*#1##", + "is_status_request": true + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2852.118, + "t_estimated": true, + "step": "flicker_repro", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run8b_flicker_repro_who22", + "t": 2852.122, + "utc": "20:50:14", + "step": "flicker_repro", + "dir": "result", + "frame": "*#3*#1##", + "ack": false, + "reply_time_s": 0.004, + "replies": [], + "events_after": [] + } + ] +} diff --git a/tests/fixtures/traces/myhomeserver1_live_2026-10-24/README.md b/tests/fixtures/traces/myhomeserver1_live_2026-10-24/README.md new file mode 100644 index 000000000..85fff124a --- /dev/null +++ b/tests/fixtures/traces/myhomeserver1_live_2026-10-24/README.md @@ -0,0 +1,82 @@ +# Live capture: Legrand / BTicino MyHomeServer1 (firmware 3.87.13), 2026-10-24 + +Status reads only (no command was sent) against a physical MyHomeServer1 in a large home plant, +2026-10-24 13:19 to 13:22 UTC, recorded with OWNd master (`OWNCommandSession` + `OWNEventSession`, +`tools/probe.py` as for the F461 captures). The purpose: the facts established on the F461 2.0.11 +plant on 2026-10-23 (`tests/fixtures/traces/f461_live_2026-10-23/`) checked on a second gateway +family for OWnd #137, #139, #140, #141, #142 and MyHOME #791-#794, #798. + +Two caveats that apply to every row: the firmware oracle (`own-firmware-oracle`) emulates +MyHomeServer1 **2.82.06**, this unit runs **3.87.13**; and `*#13**12##` returns a real MAC address +here (synthetic in the fixture), where the emulated 2.82.06 returns zeros (oracle PR #59). + +## Plant + +| Item | Value | +|---|---| +| Gateway | MyHomeServer1, firmware 3.87.13 (`*#13**16*3*87*13##`), WHO 13 device type `200`, WHO 13 dimension 27 model name `77#121#72#111#109#101#83#101#114#118#101#114#49` = "MyHomeServer1", WHO 1013 object model `67.15.5.0` (`*#1013**1*67*15*5*0##`), clock time zone `999` | +| Thermoregulation | WHO 4 zones 35-70 (34 zones report a temperature); the plant broadcasts setpoints as dimension 7 (`*#4*Z*7*1*1*T##`), temperatures (`*#4*Z*0*T##`), dimension 5 and humidity on 17 zones; every zone has actuator `Z#1`, five have a fan coil `Z#2`, and zone 0 has actuators `0#1`-`0#4`; `*#4*#0##` is unanswered (no central unit answers) | +| Lighting | about 100 WHO 1 points in 74 addresses: two-digit `11`-`69`, four-digit area-0 `0010`-`0015` and four-digit `0110`-`0515` | +| Automation | `*#2*0##` is ACKed without data | +| Not present | WHO 16 sound diffusion, WHO 5 alarm (both refused locally) | + +## File format: `myhome_trace_MyHomeServer1_live_2026-10-24.json` + +Standard `MyHOME` derived trace archive, the same layout as `f461_live_2026-10-23` (see its README for the +field table): `capture` (with `runs`), `gateway` (synthetic MAC `00:03:50:00:20:24`, also as the WHO 13 dimension 12 +reply `*#13**12*0*3*80*0*32*36##`; documentation IP `192.0.2.9`; an `oracle_note`), `frames` (376 event-session +`rx` frames) and `rows` (613 `tx` / `rx` / `result` entries; `result.replies` are the frames collected on the +command session, `result.events_after` only the event-session frames that arrived while the request was pending). +As there, command-session `rx` rows carry `t_estimated: true` and sit at their request's `t` (the session hands the +replies over as a batch with the ACK / NACK), and `t` is one monotonic axis over the three runs +(`capture.runs[].t_offset` gives each run's start). + +## The runs + +| `run` | UTC | What it was | +|---|---|---| +| `run1_identify` | 13:19-13:20 | `*#13**15##`, `16`, `0`, `1`, `22`, `27`, `12`, `*#1013**1##`; 106 WHO 4 frames of the plant's own traffic meanwhile | +| `run2_reads_thermo_sound_alarm_lights` | 13:20-13:21 | `*#4*#0##`, `*#4*#0*14##`, `*#4*35##`, `*#4*35*12##`, `*#4*35*14##`, `*#4*35*20##`, `*#4*#0*20##`, `*#4*35*60##`, `*#4*0*60##`, `*#16*0*5##`, `*#16*101*5##`, `*#5*0##`, `*#1*0##`, `*#2*0##` | +| `run3_reads_lights_addresses_humidity` | 13:22 | `*#4*0##`, `*#4*39*60##`, `*#1*0014##` / `*#1*14##`, `*#1*0010##` / `*#1*10##`, `*#1*0001##` / `*#1*01##`, `*#1*0004##` / `*#1*04##`, `*#13**0##` | + +## What the plant established (each row has its frames in the archive) + +* `*#4*0##` is refused in 51 ms (NACK, nothing on the event session). `*#4*#0##` and `*#4*#0*14##` are forwarded + and unanswered: NACK after 4.2 s (OWNd retried the command once). +* `*#4*35##` is answered in 1.3 s with `*#4*35*0*0231##`, `*#4*35*12*0200*3##`, `*4*1*35##`, `*#4*35*14*0200*3##`, + `*#4*35*13*00##`: the same order as the F461 (dimension 12 before dimension 14). +* `*#4*35*20##` -> `*#4*35#1*20*0##` (189 ms). `*#4*#0*20##` is ACKed in 0.39 s; the command session collected + 8 of the frames, the event session all 43 distinct actuator frames (34 `Z#1`, 5 `Z#2` fan coils, `0#1`-`0#4`): + 44 actuator frames in the run counting the zone 35 reply. +* `*#4*35*60##` NACKs after 2.1 s (no humidity probe in zone 35); `*#4*0*60##` is ACKed in 0.5 s and answered by the + 17 zones that have one (`*#4*39*60*51##` ... `*#4*70*60*69##`); `*#4*39*60##` -> `*#4*39*60*51##` in 0.2 s. +* `*#16*0*5##` and `*#16*101*5##` NACK in 3 ms, `*#5*0##` in 5 ms: refused by the gateway itself. +* `*#1*0##` is ACKed after 4.7 s with 100 point statuses (74 distinct addresses, a few reported twice): four-digit + area-0 points `0010`-`0015`, four-digit `0110`-`0515` and two-digit `11`-`69`. `*#2*0##` is ACKed after 4.3 s + with no data. +* `*#1*0014##` -> `*1*0*0014##` and `*#1*14##` -> `*1*0*14##`: two different devices. `*#1*0010##` -> `*1*0*0010##` + while `*#1*10##` NACKs after 2.0 s (no device). `*#1*0001##` NACKs in 8 ms and `*#1*0004##` in 14 ms (the + four-digit `000N` spelling is refused at once), whereas `*#1*01##` and `*#1*04##` NACK after 2.0 s (forwarded, + no device): on this firmware a four-digit `00PL` with PL 10-15 is a real address, `000N` is not. +* `*#13**0##` is answered on the command session and the reply is also delivered on the event session + (`*#13**0*16*19*49*999##`, `*#13**0*16*22*38*999##`). Every WHO 13 / 1013 reply of run 1 was echoed on the event + session. `*#13**22##` reports time zone `999`. +* `*#13**27##` -> the model name "MyHomeServer1" as ASCII codes; `OWNMessage.parse` returns `None` for it in the pinned + OWNd (OWNd #139 adds the decoder). + +## What this capture backs + +| Pull request | Frames in this archive | +|---|---| +| OWNd #137 (`set_central_mode` requires a central-unit address) | `*#4*#0*14##`, `*#4*#0##` forwarded and unanswered (run 2) | +| OWNd #139 (WHO 13 dimension 27 model name) | `*#13**27##` -> "MyHomeServer1" (run 1) | +| OWNd #140 (`actuators_status` builder) | `*#4*35*20##`, `*#4*#0*20##` with the `Z#1` / `Z#2` / `0#N` reply forms (run 2) | +| OWNd #141, MyHOME #798 (area-0 four-digit addresses) | `*#1*0001##` / `*#1*0004##` refused at once; `0010`-`0015` real devices distinct from `10`-`15` (run 3, run 2) | +| OWNd #142, MyHOME #794 (WHO 16 / startup requests the firmware refuses) | `*#16*0*5##`, `*#16*101*5##`, `*#4*0##` refused locally (run 2, run 3) | +| MyHOME #791 (setpoint in force = dimension 12) | `*#4*35##` reply order (run 2) | +| MyHOME #792 (request dimension 20 on add and after reconnect) | the actuator status is answered on a MyHomeServer1, per zone and for all zones (run 2) | +| MyHOME #793 (humidity poll gate) | per-zone humidity answered only where a probe exists, the general sweep answered (run 2, run 3) | +| alarm gate (misc PR) | `*#5*0##` refused in 5 ms (run 2) | +| event-session liveness probe (misc PR) | `*#13**0##` echoed on the event session (run 1, run 3) | + +Tests: `tests/test_myhomeserver1_live_2026_10_24_trace.py`. diff --git a/tests/fixtures/traces/myhomeserver1_live_2026-10-24/myhome_trace_MyHomeServer1_live_2026-10-24.json b/tests/fixtures/traces/myhomeserver1_live_2026-10-24/myhome_trace_MyHomeServer1_live_2026-10-24.json new file mode 100644 index 000000000..0600ad642 --- /dev/null +++ b/tests/fixtures/traces/myhomeserver1_live_2026-10-24/myhome_trace_MyHomeServer1_live_2026-10-24.json @@ -0,0 +1,6840 @@ +{ + "capture": { + "kind": "derived_trace_archive", + "started_at": "2026-10-24T13:19:43+00:00", + "notes": "Live Legrand/BTicino MyHomeServer1 (firmware 3.87.13 / WHO 13 device type 200 / WHO 1013 67.15.5.0) multi-session capture of 2026-10-24 recorded with OWNd master on a large home plant: WHO 4 zones 35-70 (setpoints as dimension 7, temperatures, humidity on 17 zones, actuators Z#1 / Z#2 and zone-0 actuators 0#1..0#4), about 100 WHO 1 points including four-digit area-0 points 0010-0015 and four-digit 0111-0515, WHO 2 general status. Status reads only, no commands. Purpose: the same facts as the F461 capture of 2026-10-23 on a second gateway family (OWNd 137, 139, 140, 141, 142; MyHOME 791-794, 798). The firmware oracle emulates MyHomeServer1 2.82.06; this unit runs 3.87.13, and *#13**12## returns a real MAC here (scrubbed) where the emulated 2.82.06 returns zeros (oracle PR 59). Timing: t is one monotonic axis over all runs (capture.runs[].t_offset is each run's start; t - t_offset is the time since that run's first frame); command-session rx rows carry t_estimated = true because the session hands the replies over as a batch with the ACK / NACK, so they are placed at their request's t; result.events_after holds only the event-session frames that arrived while the request was pending (tx.t <= t <= result.t).", + "window": { + "first": "2026-10-24T13:19:43+00:00", + "last": "2026-10-24T13:22:39+00:00", + "frames": 376, + "rows": 613 + }, + "runs": [ + {"run": "run1_identify", "source": "identify.jsonl", "utc": "13:19:45-13:20:00", "t_offset": 0.0, "rows": 148, "frames": 116, "purpose": "WHO 13 dimensions 15, 16, 0, 1, 22, 27, 12 and WHO 1013 dimension 1 on the home MyHomeServer1 (firmware 3.87.13); the event session shows the plant's own traffic meanwhile"}, + {"run": "run2_reads_thermo_sound_alarm_lights", "source": "reads1.jsonl", "utc": "13:20:30-13:21:19", "t_offset": 15.563, "rows": 422, "frames": 255, "purpose": "status reads only: central-unit forms *#4*#0## / *#4*#0*14##, zone 35 status and dimensions 12 / 14 / 20, all-zone actuators *#4*#0*20##, humidity *#4*35*60## / *#4*0*60##, WHO 16 / WHO 5 forms, *#1*0## and *#2*0## general status"}, + {"run": "run3_reads_lights_addresses_humidity", "source": "reads2.jsonl", "utc": "13:22:09-13:22:39", "t_offset": 70.971, "rows": 43, "frames": 5, "purpose": "*#4*0## (refused), *#4*39*60##, the WHO 1 address spellings 0014 / 14, 0010 / 10, 0001 / 01, 0004 / 04, and *#13**0## echoed on the event session"} + ] + }, + "gateway": { + "model": "MyHomeServer1", + "manufacturer": "Legrand / BTicino", + "firmware": "3.87.13", + "ip": "192.0.2.9", + "mac": "00:03:50:00:20:24", + "identification": { + "model": "MyHomeServer1", + "who13_code": "200", + "who13_model_name": "MyHomeServer1", + "who1013_code": "67" + }, + "oracle_note": "own-firmware-oracle emulates MyHomeServer1 2.82.06; this unit runs 3.87.13" + }, + "frames": [ + {"timestamp": 0.291, "direction": "rx", "raw": "*#4*53*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 0.381, "direction": "rx", "raw": "*#4*55*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 0.552, "direction": "rx", "raw": "*#4*58*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 0.648, "direction": "rx", "raw": "*#4*57*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 0.821, "direction": "rx", "raw": "*#4*60*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 0.911, "direction": "rx", "raw": "*#4*61*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 1.001, "direction": "rx", "raw": "*#4*59*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 1.087, "direction": "rx", "raw": "*#13**15*200##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 1.141, "direction": "rx", "raw": "*#1013**1*67*15*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 1.43, "direction": "rx", "raw": "*#4*68*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 1.5, "direction": "rx", "raw": "*#4*69*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 1.628, "direction": "rx", "raw": "*#4*70*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.111, "direction": "rx", "raw": "*#13**16*3*87*13##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.912, "direction": "rx", "raw": "*#4*35*7*1*1*0200##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.913, "direction": "rx", "raw": "*#4*35*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.914, "direction": "rx", "raw": "*#4*36*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.963, "direction": "rx", "raw": "*#4*36*0*0235##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.966, "direction": "rx", "raw": "*#4*37*7*1*1*0130##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 2.966, "direction": "rx", "raw": "*#4*37*0*0206##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.033, "direction": "rx", "raw": "*#4*38*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.061, "direction": "rx", "raw": "*#4*38*0*0245##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.094, "direction": "rx", "raw": "*#4*39*7*1*1*0220##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.116, "direction": "rx", "raw": "*#4*39*0*0226##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.2, "direction": "rx", "raw": "*#13**0*16*19*49*999##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.265, "direction": "rx", "raw": "*#4*40*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.291, "direction": "rx", "raw": "*#4*41*7*1*1*0130##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.383, "direction": "rx", "raw": "*#4*41*0*0216##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.479, "direction": "rx", "raw": "*#4*40*0*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.559, "direction": "rx", "raw": "*#4*44*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.671, "direction": "rx", "raw": "*#4*45*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.764, "direction": "rx", "raw": "*#4*44*0*0243##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.8, "direction": "rx", "raw": "*#4*42*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.902, "direction": "rx", "raw": "*#4*42*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 3.98, "direction": "rx", "raw": "*#4*46*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.082, "direction": "rx", "raw": "*#4*48*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.181, "direction": "rx", "raw": "*#4*46*0*0235##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.268, "direction": "rx", "raw": "*#13**1*06*24*10*2026##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.289, "direction": "rx", "raw": "*#4*48*0*0233##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.361, "direction": "rx", "raw": "*#4*47*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.461, "direction": "rx", "raw": "*#4*45*0*0242##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.558, "direction": "rx", "raw": "*#4*47*0*0236##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.771, "direction": "rx", "raw": "*#4*51*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.883, "direction": "rx", "raw": "*#4*59*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 4.972, "direction": "rx", "raw": "*#4*50*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.07, "direction": "rx", "raw": "*#4*55*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.16, "direction": "rx", "raw": "*#4*49*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.401, "direction": "rx", "raw": "*#13**22*16*19*51*999*06*24*10*2026##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.436, "direction": "rx", "raw": "*#4*61*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.472, "direction": "rx", "raw": "*#4*62*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.473, "direction": "rx", "raw": "*#4*61*0*0237##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.473, "direction": "rx", "raw": "*#4*63*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.474, "direction": "rx", "raw": "*#4*62*0*0241##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.57, "direction": "rx", "raw": "*#4*53*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.608, "direction": "rx", "raw": "*#4*60*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.641, "direction": "rx", "raw": "*#4*55*0*0238##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.682, "direction": "rx", "raw": "*#4*53*0*0229##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.79, "direction": "rx", "raw": "*#4*57*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.88, "direction": "rx", "raw": "*#4*65*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 5.981, "direction": "rx", "raw": "*#4*63*0*0232##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.012, "direction": "rx", "raw": "*#4*69*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.102, "direction": "rx", "raw": "*#4*57*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.138, "direction": "rx", "raw": "*#4*69*0*0237##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.164, "direction": "rx", "raw": "*#4*49*0*0254##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.27, "direction": "rx", "raw": "*#4*66*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.29, "direction": "rx", "raw": "*#4*66*0*0248##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.37, "direction": "rx", "raw": "*#4*65*0*0235##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.41, "direction": "rx", "raw": "*#4*59*0*0236##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.454, "direction": "rx", "raw": "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.52, "direction": "rx", "raw": "*#4*70*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.541, "direction": "rx", "raw": "*#4*50*0*0233##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.621, "direction": "rx", "raw": "*#4*57*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.721, "direction": "rx", "raw": "*#4*53*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.809, "direction": "rx", "raw": "*#4*70*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.902, "direction": "rx", "raw": "*#4*67*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 6.99, "direction": "rx", "raw": "*#4*64*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.081, "direction": "rx", "raw": "*#4*62*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.178, "direction": "rx", "raw": "*#4*51*0*0243##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.255, "direction": "rx", "raw": "*#4*67*0*0245##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.352, "direction": "rx", "raw": "*#4*53*0*0229##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.421, "direction": "rx", "raw": "*#4*57*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.52, "direction": "rx", "raw": "*#13**12*0*3*80*0*32*36##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.53, "direction": "rx", "raw": "*#4*68*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.6, "direction": "rx", "raw": "*#4*69*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.655, "direction": "rx", "raw": "*#4*66*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.691, "direction": "rx", "raw": "*#4*68*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.737, "direction": "rx", "raw": "*#4*68*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.78, "direction": "rx", "raw": "*#4*62*0*0241##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.823, "direction": "rx", "raw": "*#4*58*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.88, "direction": "rx", "raw": "*#4*52*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.909, "direction": "rx", "raw": "*#4*58*0*0234##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 7.951, "direction": "rx", "raw": "*#4*60*0*0240##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.001, "direction": "rx", "raw": "*#4*61*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.06, "direction": "rx", "raw": "*#4*65*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.09, "direction": "rx", "raw": "*#4*66*0*0248##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.132, "direction": "rx", "raw": "*#4*70*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.17, "direction": "rx", "raw": "*#4*61*0*0237##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.203, "direction": "rx", "raw": "*#4*69*0*0237##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.243, "direction": "rx", "raw": "*#4*60*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.281, "direction": "rx", "raw": "*#4*64*0*0233##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.314, "direction": "rx", "raw": "*#4*52*0*0236##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.349, "direction": "rx", "raw": "*#4*60*0*0240##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.396, "direction": "rx", "raw": "*#4*64*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.447, "direction": "rx", "raw": "*#4*58*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.5, "direction": "rx", "raw": "*#4*70*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.531, "direction": "rx", "raw": "*#4*64*0*0233##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.559, "direction": "rx", "raw": "*#1013**1*67*15*5*0##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.58, "direction": "rx", "raw": "*#4*67*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.616, "direction": "rx", "raw": "*#4*58*0*0234##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.664, "direction": "rx", "raw": "*#4*52*7*1*1*0225##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.702, "direction": "rx", "raw": "*#4*65*0*0235##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.759, "direction": "rx", "raw": "*#4*63*7*1*1*0230##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.797, "direction": "rx", "raw": "*#4*63*0*0232##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.84, "direction": "rx", "raw": "*#4*68*0*0231##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.885, "direction": "rx", "raw": "*#4*67*0*0245##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 8.937, "direction": "rx", "raw": "*#4*52*0*0236##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 14.563, "direction": "rx", "raw": "*#13**#1*06*24*10*2026##", "run": "run1_identify", "session": "evt"}, + {"timestamp": 29.636, "direction": "rx", "raw": "*#4*35*0*0231##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 29.941, "direction": "rx", "raw": "*#4*35*12*0200*3##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 29.942, "direction": "rx", "raw": "*4*1*35##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 30.214, "direction": "rx", "raw": "*#4*35*14*0200*3##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 30.316, "direction": "rx", "raw": "*#4*35*13*00##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 34.5, "direction": "rx", "raw": "*#4*35*12*0200*3##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 34.515, "direction": "rx", "raw": "*4*1*35##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 36.681, "direction": "rx", "raw": "*#4*35*14*0200*3##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 38.888, "direction": "rx", "raw": "*#4*35#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.006, "direction": "rx", "raw": "*#4*39#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.039, "direction": "rx", "raw": "*#4*48#2*20*5##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.071, "direction": "rx", "raw": "*#4*35#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.112, "direction": "rx", "raw": "*#4*64#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.137, "direction": "rx", "raw": "*#4*40#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.177, "direction": "rx", "raw": "*#4*47#2*20*5##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.21, "direction": "rx", "raw": "*#4*53#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.254, "direction": "rx", "raw": "*#4*43#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.292, "direction": "rx", "raw": "*#4*60#2*20*5##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.318, "direction": "rx", "raw": "*#4*36#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.353, "direction": "rx", "raw": "*#4*65#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.388, "direction": "rx", "raw": "*#4*47#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.422, "direction": "rx", "raw": "*#4*66#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.474, "direction": "rx", "raw": "*#4*48#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.495, "direction": "rx", "raw": "*#4*67#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.544, "direction": "rx", "raw": "*#4*41#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.569, "direction": "rx", "raw": "*#4*70#2*20*5##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.614, "direction": "rx", "raw": "*#4*0#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.639, "direction": "rx", "raw": "*#4*57#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.675, "direction": "rx", "raw": "*#4*37#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.709, "direction": "rx", "raw": "*#4*58#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.747, "direction": "rx", "raw": "*#4*0#3*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.779, "direction": "rx", "raw": "*#4*60#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.817, "direction": "rx", "raw": "*#4*38#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.852, "direction": "rx", "raw": "*#4*68#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.889, "direction": "rx", "raw": "*#4*42#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.922, "direction": "rx", "raw": "*#4*49#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.965, "direction": "rx", "raw": "*#4*44#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 41.992, "direction": "rx", "raw": "*#4*51#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.032, "direction": "rx", "raw": "*#4*0#4*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.066, "direction": "rx", "raw": "*#4*61#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.107, "direction": "rx", "raw": "*#4*59#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.142, "direction": "rx", "raw": "*#4*70#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.194, "direction": "rx", "raw": "*#4*52#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.224, "direction": "rx", "raw": "*#4*62#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.261, "direction": "rx", "raw": "*#4*50#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.298, "direction": "rx", "raw": "*#4*0#2*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.331, "direction": "rx", "raw": "*#4*57#2*20*5##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.389, "direction": "rx", "raw": "*#4*63#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.421, "direction": "rx", "raw": "*#4*55#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.484, "direction": "rx", "raw": "*#4*45#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.511, "direction": "rx", "raw": "*#4*69#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 42.574, "direction": "rx", "raw": "*#4*46#1*20*0##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.574, "direction": "rx", "raw": "*#4*39*60*51##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.604, "direction": "rx", "raw": "*#4*53*60*60##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.653, "direction": "rx", "raw": "*#4*48*60*54##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.689, "direction": "rx", "raw": "*#4*69*60*52##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.753, "direction": "rx", "raw": "*#4*40*60*47##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.788, "direction": "rx", "raw": "*#4*42*60*52##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.839, "direction": "rx", "raw": "*#4*43*60*54##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.889, "direction": "rx", "raw": "*#4*60*60*54##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.934, "direction": "rx", "raw": "*#4*47*60*54##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 47.988, "direction": "rx", "raw": "*#4*57*60*59##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.037, "direction": "rx", "raw": "*#4*41*60*49##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.124, "direction": "rx", "raw": "*#4*61*60*53##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.163, "direction": "rx", "raw": "*#4*55*60*51##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.211, "direction": "rx", "raw": "*#4*70*60*69##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.266, "direction": "rx", "raw": "*#4*58*60*55##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.317, "direction": "rx", "raw": "*#4*68*60*59##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 48.386, "direction": "rx", "raw": "*#4*59*60*66##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.025, "direction": "rx", "raw": "*1*0*14##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.243, "direction": "rx", "raw": "*1*0*0514##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.243, "direction": "rx", "raw": "*1*0*0014##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.243, "direction": "rx", "raw": "*1*0*0415##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.243, "direction": "rx", "raw": "*1*0*0015##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.243, "direction": "rx", "raw": "*1*0*14##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.243, "direction": "rx", "raw": "*1*0*0315##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.274, "direction": "rx", "raw": "*1*0*0115##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.312, "direction": "rx", "raw": "*1*0*45##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.351, "direction": "rx", "raw": "*1*0*0513##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.384, "direction": "rx", "raw": "*1*0*33##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.421, "direction": "rx", "raw": "*1*0*0010##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.454, "direction": "rx", "raw": "*1*0*0314##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.492, "direction": "rx", "raw": "*1*0*17##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.524, "direction": "rx", "raw": "*1*0*34##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.569, "direction": "rx", "raw": "*1*0*21##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.602, "direction": "rx", "raw": "*1*0*0215##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.64, "direction": "rx", "raw": "*1*0*11##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.672, "direction": "rx", "raw": "*1*0*36##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.709, "direction": "rx", "raw": "*1*0*37##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.746, "direction": "rx", "raw": "*1*0*43##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.783, "direction": "rx", "raw": "*1*0*38##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.816, "direction": "rx", "raw": "*1*0*0012##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.85, "direction": "rx", "raw": "*1*0*0211##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.892, "direction": "rx", "raw": "*1*0*0515##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.93, "direction": "rx", "raw": "*1*0*0013##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 56.963, "direction": "rx", "raw": "*1*0*0512##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.004, "direction": "rx", "raw": "*1*0*0311##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.042, "direction": "rx", "raw": "*1*0*0312##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.074, "direction": "rx", "raw": "*1*0*21##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.11, "direction": "rx", "raw": "*1*0*0313##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.146, "direction": "rx", "raw": "*1*0*0111##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.18, "direction": "rx", "raw": "*1*0*0212##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.217, "direction": "rx", "raw": "*1*0*61##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.25, "direction": "rx", "raw": "*1*0*49##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.286, "direction": "rx", "raw": "*1*0*12##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.323, "direction": "rx", "raw": "*1*0*29##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.354, "direction": "rx", "raw": "*1*0*18##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.39, "direction": "rx", "raw": "*1*0*0310##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.423, "direction": "rx", "raw": "*1*0*0011##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.454, "direction": "rx", "raw": "*1*0*46##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.494, "direction": "rx", "raw": "*1*0*0510##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.524, "direction": "rx", "raw": "*1*0*0213##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.568, "direction": "rx", "raw": "*1*0*41##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.602, "direction": "rx", "raw": "*1*0*0511##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.635, "direction": "rx", "raw": "*1*0*44##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.674, "direction": "rx", "raw": "*1*0*47##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.711, "direction": "rx", "raw": "*1*0*42##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.748, "direction": "rx", "raw": "*1*0*0214##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.784, "direction": "rx", "raw": "*1*0*48##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.819, "direction": "rx", "raw": "*1*0*24##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.854, "direction": "rx", "raw": "*1*0*13##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.889, "direction": "rx", "raw": "*1*0*0210##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.924, "direction": "rx", "raw": "*1*0*64##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 57.959, "direction": "rx", "raw": "*1*0*0211##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.004, "direction": "rx", "raw": "*1*0*0315##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.044, "direction": "rx", "raw": "*1*0*0112##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.074, "direction": "rx", "raw": "*1*0*39##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.114, "direction": "rx", "raw": "*1*0*25##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.149, "direction": "rx", "raw": "*1*0*0212##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.187, "direction": "rx", "raw": "*1*0*65##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.221, "direction": "rx", "raw": "*1*0*45##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.254, "direction": "rx", "raw": "*1*0*16##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.29, "direction": "rx", "raw": "*1*0*46##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.33, "direction": "rx", "raw": "*1*0*0113##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.359, "direction": "rx", "raw": "*1*0*0213##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.396, "direction": "rx", "raw": "*1*0*62##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.43, "direction": "rx", "raw": "*1*0*0410##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.465, "direction": "rx", "raw": "*1*0*0514##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.498, "direction": "rx", "raw": "*1*0*0214##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.535, "direction": "rx", "raw": "*1*0*19##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.57, "direction": "rx", "raw": "*1*0*47##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.633, "direction": "rx", "raw": "*1*0*0413##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.659, "direction": "rx", "raw": "*1*0*31##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.698, "direction": "rx", "raw": "*1*0*26##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.733, "direction": "rx", "raw": "*1*0*0114##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.77, "direction": "rx", "raw": "*1*0*0515##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.803, "direction": "rx", "raw": "*1*0*0110##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.84, "direction": "rx", "raw": "*1*0*48##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.882, "direction": "rx", "raw": "*1*0*32##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.922, "direction": "rx", "raw": "*1*0*41##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.96, "direction": "rx", "raw": "*1*0*42##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 58.987, "direction": "rx", "raw": "*1*0*0411##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.024, "direction": "rx", "raw": "*1*0*63##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.068, "direction": "rx", "raw": "*1*0*27##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.112, "direction": "rx", "raw": "*1*0*11##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.149, "direction": "rx", "raw": "*1*0*66##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.192, "direction": "rx", "raw": "*1*0*0215##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.239, "direction": "rx", "raw": "*1*0*0512##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.282, "direction": "rx", "raw": "*1*0*28##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.33, "direction": "rx", "raw": "*1*0*31##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.371, "direction": "rx", "raw": "*1*0*32##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.4, "direction": "rx", "raw": "*1*0*12##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.433, "direction": "rx", "raw": "*1*0*25##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.471, "direction": "rx", "raw": "*1*0*13##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.504, "direction": "rx", "raw": "*1*0*26##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.566, "direction": "rx", "raw": "*1*0*68##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.595, "direction": "rx", "raw": "*1*0*27##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.657, "direction": "rx", "raw": "*1*0*69##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 59.683, "direction": "rx", "raw": "*1*0*28##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.774, "direction": "rx", "raw": "*1*0*17##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.805, "direction": "rx", "raw": "*1*0*0312##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.832, "direction": "rx", "raw": "*1*0*0514##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.875, "direction": "rx", "raw": "*1*0*0310##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.903, "direction": "rx", "raw": "*1*0*0010##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.932, "direction": "rx", "raw": "*1*0*0313##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 65.97, "direction": "rx", "raw": "*1*0*21##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.001, "direction": "rx", "raw": "*1*0*37##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.042, "direction": "rx", "raw": "*1*0*0014##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.084, "direction": "rx", "raw": "*1*0*0115##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.117, "direction": "rx", "raw": "*1*0*45##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.152, "direction": "rx", "raw": "*1*0*0513##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.185, "direction": "rx", "raw": "*1*0*46##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.222, "direction": "rx", "raw": "*1*0*0111##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.253, "direction": "rx", "raw": "*1*0*24##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.294, "direction": "rx", "raw": "*1*0*11##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.329, "direction": "rx", "raw": "*1*0*33##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.363, "direction": "rx", "raw": "*1*0*0415##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.398, "direction": "rx", "raw": "*1*0*38##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.434, "direction": "rx", "raw": "*1*0*61##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.468, "direction": "rx", "raw": "*1*0*0315##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.508, "direction": "rx", "raw": "*1*0*0015##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.542, "direction": "rx", "raw": "*1*0*34##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.578, "direction": "rx", "raw": "*1*0*12##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.614, "direction": "rx", "raw": "*1*0*43##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.658, "direction": "rx", "raw": "*1*0*13##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.689, "direction": "rx", "raw": "*1*0*39##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.724, "direction": "rx", "raw": "*1*0*18##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.763, "direction": "rx", "raw": "*1*0*0215##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.802, "direction": "rx", "raw": "*1*0*0012##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.838, "direction": "rx", "raw": "*1*0*29##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.873, "direction": "rx", "raw": "*1*0*19##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.908, "direction": "rx", "raw": "*1*0*0211##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.943, "direction": "rx", "raw": "*1*0*0212##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 66.981, "direction": "rx", "raw": "*1*0*47##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.018, "direction": "rx", "raw": "*1*0*0512##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.052, "direction": "rx", "raw": "*1*0*0011##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.083, "direction": "rx", "raw": "*1*0*0213##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.129, "direction": "rx", "raw": "*1*0*48##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.165, "direction": "rx", "raw": "*1*0*0110##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.198, "direction": "rx", "raw": "*1*0*0214##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.233, "direction": "rx", "raw": "*1*0*64##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.273, "direction": "rx", "raw": "*1*0*49##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.303, "direction": "rx", "raw": "*1*0*0510##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.338, "direction": "rx", "raw": "*1*0*0210##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.376, "direction": "rx", "raw": "*1*0*16##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.403, "direction": "rx", "raw": "*1*0*31##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.444, "direction": "rx", "raw": "*1*0*17##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.479, "direction": "rx", "raw": "*1*0*44##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.521, "direction": "rx", "raw": "*1*0*65##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.554, "direction": "rx", "raw": "*1*0*32##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.596, "direction": "rx", "raw": "*1*0*18##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.631, "direction": "rx", "raw": "*1*0*0314##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.663, "direction": "rx", "raw": "*1*0*14##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.699, "direction": "rx", "raw": "*1*0*0515##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.739, "direction": "rx", "raw": "*1*0*0014##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.771, "direction": "rx", "raw": "*1*0*0311##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.81, "direction": "rx", "raw": "*1*0*19##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.844, "direction": "rx", "raw": "*1*0*36##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.902, "direction": "rx", "raw": "*1*0*0013##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.933, "direction": "rx", "raw": "*1*0*41##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 67.963, "direction": "rx", "raw": "*1*0*42##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.003, "direction": "rx", "raw": "*1*0*0112##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.043, "direction": "rx", "raw": "*1*0*25##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.081, "direction": "rx", "raw": "*1*0*0511##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.115, "direction": "rx", "raw": "*1*0*66##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.154, "direction": "rx", "raw": "*1*0*0110##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.188, "direction": "rx", "raw": "*1*0*26##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.224, "direction": "rx", "raw": "*1*0*62##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.257, "direction": "rx", "raw": "*1*0*27##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.303, "direction": "rx", "raw": "*1*0*0015##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.334, "direction": "rx", "raw": "*1*0*0410##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.373, "direction": "rx", "raw": "*1*0*63##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.431, "direction": "rx", "raw": "*1*0*0113##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.456, "direction": "rx", "raw": "*1*0*28##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.505, "direction": "rx", "raw": "*1*0*64##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.533, "direction": "rx", "raw": "*1*0*0411##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.577, "direction": "rx", "raw": "*1*0*0114##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.632, "direction": "rx", "raw": "*1*0*0011##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.684, "direction": "rx", "raw": "*1*0*65##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.73, "direction": "rx", "raw": "*1*0*62##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.771, "direction": "rx", "raw": "*1*0*63##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.823, "direction": "rx", "raw": "*1*0*16##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.879, "direction": "rx", "raw": "*1*0*0413##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.933, "direction": "rx", "raw": "*1*0*68##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 68.992, "direction": "rx", "raw": "*1*0*69##", "run": "run2_reads_thermo_sound_alarm_lights", "session": "evt"}, + {"timestamp": 78.235, "direction": "rx", "raw": "*#4*39*60*51##", "run": "run3_reads_lights_addresses_humidity", "session": "evt"}, + {"timestamp": 80.354, "direction": "rx", "raw": "*1*0*0014##", "run": "run3_reads_lights_addresses_humidity", "session": "evt"}, + {"timestamp": 82.454, "direction": "rx", "raw": "*1*0*14##", "run": "run3_reads_lights_addresses_humidity", "session": "evt"}, + {"timestamp": 84.544, "direction": "rx", "raw": "*1*0*0010##", "run": "run3_reads_lights_addresses_humidity", "session": "evt"}, + {"timestamp": 102.636, "direction": "rx", "raw": "*#13**0*16*22*38*999##", "run": "run3_reads_lights_addresses_humidity", "session": "evt"} + ], + "rows": [ + { + "run": "run1_identify", + "t": 0.291, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*53*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 0.381, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*55*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 55's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 0.552, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*58*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 0.648, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*57*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 0.821, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*60*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 0.911, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*61*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 1.001, + "step": "listen", + "dir": "rx", + "session": "evt", + "frame": "*#4*59*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 59's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 1.046, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**15##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 1.046, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**15*200##" + }, + { + "run": "run1_identify", + "t": 1.046, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 1.087, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**15*200##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway device type is: F454 / MyHomeServer1 / MH202 / F461 / H4890 / F450 / F459 / F460 / MH201." + }, + { + "run": "run1_identify", + "t": 1.089, + "utc": "13:19:47", + "step": "identify", + "dir": "result", + "frame": "*#13**15##", + "ack": true, + "reply_time_s": 0.043, + "replies": [ + "*#13**15*200##" + ], + "events_after": [ + "*#13**15*200##" + ], + "note": "who13_device_type_200" + }, + { + "run": "run1_identify", + "t": 1.141, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#1013**1*67*15*5*0##", + "ownd_class": "OWNGatewayDiagnosticEvent", + "ownd_log": "Gateway diagnostic object model is: MyHomeServer1 (67)." + }, + { + "run": "run1_identify", + "t": 1.43, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*68*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 1.5, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*69*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 1.628, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*70*5*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70's local control (dimension 5) is 0." + }, + { + "run": "run1_identify", + "t": 2.091, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**16##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 2.091, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**16*3*87*13##" + }, + { + "run": "run1_identify", + "t": 2.091, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 2.111, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**16*3*87*13##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's firmware version is: 3.87.13." + }, + { + "run": "run1_identify", + "t": 2.121, + "utc": "13:19:48", + "step": "identify", + "dir": "result", + "frame": "*#13**16##", + "ack": true, + "reply_time_s": 0.03, + "replies": [ + "*#13**16*3*87*13##" + ], + "events_after": [ + "*#13**16*3*87*13##" + ], + "note": "who13_firmware_3_87_13" + }, + { + "run": "run1_identify", + "t": 2.912, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*7*1*1*0200##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35 is in heating setpoint at 20.0°C." + }, + { + "run": "run1_identify", + "t": 2.913, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 2.914, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*36*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 36 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 2.963, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*36*0*0235##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 36's main sensor is reporting a temperature of 23.5°C." + }, + { + "run": "run1_identify", + "t": 2.966, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*37*7*1*1*0130##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 37 is in heating setpoint at 13.0°C." + }, + { + "run": "run1_identify", + "t": 2.966, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*37*0*0206##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 37's main sensor is reporting a temperature of 20.6°C." + }, + { + "run": "run1_identify", + "t": 3.033, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*38*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 38 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 3.061, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*38*0*0245##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 38's main sensor is reporting a temperature of 24.5°C." + }, + { + "run": "run1_identify", + "t": 3.094, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*39*7*1*1*0220##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 39 is in heating setpoint at 22.0°C." + }, + { + "run": "run1_identify", + "t": 3.116, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*39*0*0226##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 39's main sensor is reporting a temperature of 22.6°C." + }, + { + "run": "run1_identify", + "t": 3.121, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**0##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 3.121, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**0*16*19*49*999##" + }, + { + "run": "run1_identify", + "t": 3.121, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 3.2, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**0*16*19*49*999##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal time is: 16:19:49." + }, + { + "run": "run1_identify", + "t": 3.215, + "utc": "13:19:49", + "step": "identify", + "dir": "result", + "frame": "*#13**0##", + "ack": true, + "reply_time_s": 0.094, + "replies": [ + "*#13**0*16*19*49*999##" + ], + "events_after": [ + "*#13**0*16*19*49*999##" + ], + "note": "who13_time_echoed_on_evt" + }, + { + "run": "run1_identify", + "t": 3.265, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*40*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 40 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 3.291, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*41*7*1*1*0130##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 41 is in heating setpoint at 13.0°C." + }, + { + "run": "run1_identify", + "t": 3.383, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*41*0*0216##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 41's main sensor is reporting a temperature of 21.6°C." + }, + { + "run": "run1_identify", + "t": 3.479, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*40*0*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 40's main sensor is reporting a temperature of 23.0°C." + }, + { + "run": "run1_identify", + "t": 3.559, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*44*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 44 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 3.671, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*45*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 45 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 3.764, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*44*0*0243##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 44's main sensor is reporting a temperature of 24.3°C." + }, + { + "run": "run1_identify", + "t": 3.8, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*42*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 42 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 3.902, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*42*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 42's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 3.98, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*46*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 46 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 4.082, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*48*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 48 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 4.181, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*46*0*0235##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 46's main sensor is reporting a temperature of 23.5°C." + }, + { + "run": "run1_identify", + "t": 4.216, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**1##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 4.216, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**1*06*24*10*2026##" + }, + { + "run": "run1_identify", + "t": 4.216, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 4.268, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**1*06*24*10*2026##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal date is: 2026-10-24." + }, + { + "run": "run1_identify", + "t": 4.283, + "utc": "13:19:50", + "step": "identify", + "dir": "result", + "frame": "*#13**1##", + "ack": true, + "reply_time_s": 0.067, + "replies": [ + "*#13**1*06*24*10*2026##" + ], + "events_after": [ + "*#13**1*06*24*10*2026##" + ] + }, + { + "run": "run1_identify", + "t": 4.289, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*48*0*0233##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 48's main sensor is reporting a temperature of 23.3°C." + }, + { + "run": "run1_identify", + "t": 4.361, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*47*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 47 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 4.461, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*45*0*0242##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 45's main sensor is reporting a temperature of 24.2°C." + }, + { + "run": "run1_identify", + "t": 4.558, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*47*0*0236##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 47's main sensor is reporting a temperature of 23.6°C." + }, + { + "run": "run1_identify", + "t": 4.771, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*51*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 51 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 4.883, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*59*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 59 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 4.972, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*50*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 50 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 5.07, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*55*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 55 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 5.16, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*49*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 49 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 5.284, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**22##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 5.284, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**22*16*19*51*999*06*24*10*2026##" + }, + { + "run": "run1_identify", + "t": 5.284, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 5.401, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**22*16*19*51*999*06*24*10*2026##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal datetime is: 2026-10-24 16:19:51." + }, + { + "run": "run1_identify", + "t": 5.432, + "utc": "13:19:52", + "step": "identify", + "dir": "result", + "frame": "*#13**22##", + "ack": true, + "reply_time_s": 0.148, + "replies": [ + "*#13**22*16*19*51*999*06*24*10*2026##" + ], + "events_after": [ + "*#13**22*16*19*51*999*06*24*10*2026##" + ], + "note": "who13_datetime_timezone_999" + }, + { + "run": "run1_identify", + "t": 5.436, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*61*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 5.472, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*62*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 62 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 5.473, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*61*0*0237##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61's main sensor is reporting a temperature of 23.7°C." + }, + { + "run": "run1_identify", + "t": 5.473, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*63*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 63 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 5.474, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*62*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 62's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run1_identify", + "t": 5.57, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*53*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 5.608, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*60*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 5.641, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*55*0*0238##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 55's main sensor is reporting a temperature of 23.8°C." + }, + { + "run": "run1_identify", + "t": 5.682, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*53*0*0229##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53's main sensor is reporting a temperature of 22.9°C." + }, + { + "run": "run1_identify", + "t": 5.79, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*57*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 5.88, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*65*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 65 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 5.981, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*63*0*0232##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 63's main sensor is reporting a temperature of 23.2°C." + }, + { + "run": "run1_identify", + "t": 6.012, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*69*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 6.102, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*57*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 6.138, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*69*0*0237##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69's main sensor is reporting a temperature of 23.7°C." + }, + { + "run": "run1_identify", + "t": 6.164, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*49*0*0254##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 49's main sensor is reporting a temperature of 25.4°C." + }, + { + "run": "run1_identify", + "t": 6.27, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*66*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 66 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 6.29, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*66*0*0248##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 66's main sensor is reporting a temperature of 24.8°C." + }, + { + "run": "run1_identify", + "t": 6.37, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*65*0*0235##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 65's main sensor is reporting a temperature of 23.5°C." + }, + { + "run": "run1_identify", + "t": 6.41, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*59*0*0236##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 59's main sensor is reporting a temperature of 23.6°C." + }, + { + "run": "run1_identify", + "t": 6.433, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**27##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 6.433, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##" + }, + { + "run": "run1_identify", + "t": 6.433, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 6.454, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##", + "ownd_class": "str", + "ownd_log": "" + }, + { + "run": "run1_identify", + "t": 6.484, + "utc": "13:19:53", + "step": "identify", + "dir": "result", + "frame": "*#13**27##", + "ack": true, + "reply_time_s": 0.051, + "replies": [ + "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##" + ], + "events_after": [ + "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##" + ], + "note": "who13_dim27_model_name_MyHomeServer1_no_ownd_decoder" + }, + { + "run": "run1_identify", + "t": 6.52, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*70*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 6.541, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*50*0*0233##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 50's main sensor is reporting a temperature of 23.3°C." + }, + { + "run": "run1_identify", + "t": 6.621, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*57*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 6.721, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*53*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 6.809, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*70*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 6.902, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*67*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 67 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 6.99, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*64*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 64 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 7.081, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*62*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 62 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 7.178, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*51*0*0243##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 51's main sensor is reporting a temperature of 24.3°C." + }, + { + "run": "run1_identify", + "t": 7.255, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*67*0*0245##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 67's main sensor is reporting a temperature of 24.5°C." + }, + { + "run": "run1_identify", + "t": 7.352, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*53*0*0229##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53's main sensor is reporting a temperature of 22.9°C." + }, + { + "run": "run1_identify", + "t": 7.421, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*57*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 7.486, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#13**12##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 7.486, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#13**12*0*3*80*0*32*36##" + }, + { + "run": "run1_identify", + "t": 7.486, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 7.52, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**12*0*3*80*0*32*36##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's MAC address is: 00:03:50:00:20:24." + }, + { + "run": "run1_identify", + "t": 7.524, + "utc": "13:19:54", + "step": "identify", + "dir": "result", + "frame": "*#13**12##", + "ack": true, + "reply_time_s": 0.038, + "replies": [ + "*#13**12*0*3*80*0*32*36##" + ], + "events_after": [ + "*#13**12*0*3*80*0*32*36##" + ], + "note": "who13_mac_answered_real_value_scrubbed" + }, + { + "run": "run1_identify", + "t": 7.53, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*68*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 7.6, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*69*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 7.655, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*66*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 66 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 7.691, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*68*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 7.737, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*68*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 7.78, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*62*0*0241##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 62's main sensor is reporting a temperature of 24.1°C." + }, + { + "run": "run1_identify", + "t": 7.823, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*58*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 7.88, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*52*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 52 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 7.909, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*58*0*0234##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58's main sensor is reporting a temperature of 23.4°C." + }, + { + "run": "run1_identify", + "t": 7.951, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*60*0*0240##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60's main sensor is reporting a temperature of 24.0°C." + }, + { + "run": "run1_identify", + "t": 8.001, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*61*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 8.06, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*65*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 65 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.09, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*66*0*0248##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 66's main sensor is reporting a temperature of 24.8°C." + }, + { + "run": "run1_identify", + "t": 8.132, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*70*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.17, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*61*0*0237##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61's main sensor is reporting a temperature of 23.7°C." + }, + { + "run": "run1_identify", + "t": 8.203, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*69*0*0237##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69's main sensor is reporting a temperature of 23.7°C." + }, + { + "run": "run1_identify", + "t": 8.243, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*60*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.281, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*64*0*0233##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 64's main sensor is reporting a temperature of 23.3°C." + }, + { + "run": "run1_identify", + "t": 8.314, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*52*0*0236##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 52's main sensor is reporting a temperature of 23.6°C." + }, + { + "run": "run1_identify", + "t": 8.349, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*60*0*0240##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60's main sensor is reporting a temperature of 24.0°C." + }, + { + "run": "run1_identify", + "t": 8.396, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*64*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 64 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.447, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*58*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.5, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*70*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 8.524, + "step": "identify", + "dir": "tx", + "session": "cmd", + "frame": "*#1013**1##", + "is_status_request": true + }, + { + "run": "run1_identify", + "t": 8.524, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#1013**1*67*15*5*0##" + }, + { + "run": "run1_identify", + "t": 8.524, + "t_estimated": true, + "step": "identify", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run1_identify", + "t": 8.531, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*64*0*0233##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 64's main sensor is reporting a temperature of 23.3°C." + }, + { + "run": "run1_identify", + "t": 8.559, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#1013**1*67*15*5*0##", + "ownd_class": "OWNGatewayDiagnosticEvent", + "ownd_log": "Gateway diagnostic object model is: MyHomeServer1 (67)." + }, + { + "run": "run1_identify", + "t": 8.562, + "utc": "13:19:55", + "step": "identify", + "dir": "result", + "frame": "*#1013**1##", + "ack": true, + "reply_time_s": 0.038, + "replies": [ + "*#1013**1*67*15*5*0##" + ], + "events_after": [ + "*#4*64*0*0233##", + "*#1013**1*67*15*5*0##" + ], + "note": "who1013_object_model_67_15_5_0" + }, + { + "run": "run1_identify", + "t": 8.58, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*67*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 67 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.616, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*58*0*0234##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58's main sensor is reporting a temperature of 23.4°C." + }, + { + "run": "run1_identify", + "t": 8.664, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*52*7*1*1*0225##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 52 is in heating setpoint at 22.5°C." + }, + { + "run": "run1_identify", + "t": 8.702, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*65*0*0235##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 65's main sensor is reporting a temperature of 23.5°C." + }, + { + "run": "run1_identify", + "t": 8.759, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*63*7*1*1*0230##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 63 is in heating setpoint at 23.0°C." + }, + { + "run": "run1_identify", + "t": 8.797, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*63*0*0232##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 63's main sensor is reporting a temperature of 23.2°C." + }, + { + "run": "run1_identify", + "t": 8.84, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*68*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run1_identify", + "t": 8.885, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*67*0*0245##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 67's main sensor is reporting a temperature of 24.5°C." + }, + { + "run": "run1_identify", + "t": 8.937, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#4*52*0*0236##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 52's main sensor is reporting a temperature of 23.6°C." + }, + { + "run": "run1_identify", + "t": 14.563, + "step": "identify", + "dir": "rx", + "session": "evt", + "frame": "*#13**#1*06*24*10*2026##", + "ownd_class": "OWNGatewayCommand", + "ownd_log": "Gateway broadcasting internal date: 2026-10-24." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 16.605, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0##", + "is_status_request": false + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 16.605, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 20.806, + "utc": "13:20:30", + "step": "read_who4", + "dir": "result", + "frame": "*#4*#0##", + "ack": false, + "reply_time_s": 4.201, + "replies": [], + "events_after": [], + "note": "central_status_nack_after_retry_no_central_unit" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 22.807, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0*14##", + "is_status_request": false + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 22.807, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 27.026, + "utc": "13:20:36", + "step": "read_who4", + "dir": "result", + "frame": "*#4*#0*14##", + "ack": false, + "reply_time_s": 4.219, + "replies": [], + "events_after": [], + "note": "central_setpoint_nack_after_retry_no_central_unit" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*35##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35*0*0231##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35*12*0200*3##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*35##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35*14*0200*3##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35*13*00##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.028, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.636, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*0*0231##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's main sensor is reporting a temperature of 23.1°C." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.941, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*12*0200*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's local target temperature is set to 20.0°C." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 29.942, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*4*1*35##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's season is heating." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 30.214, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*14*0200*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's target temperature is set to 20.0°C." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 30.316, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*13*00##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's local offset is set to 0°C." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 30.335, + "utc": "13:20:40", + "step": "read_who4", + "dir": "result", + "frame": "*#4*35##", + "ack": true, + "reply_time_s": 1.307, + "replies": [ + "*#4*35*0*0231##", + "*#4*35*12*0200*3##", + "*4*1*35##", + "*#4*35*14*0200*3##", + "*#4*35*13*00##" + ], + "events_after": [ + "*#4*35*0*0231##", + "*#4*35*12*0200*3##", + "*4*1*35##", + "*#4*35*14*0200*3##", + "*#4*35*13*00##" + ], + "note": "zone_35_status_reply_order_0_12_season_14_13" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.336, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*35*12##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.336, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35*12*0200*3##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.336, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*4*1*35##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.336, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.5, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*12*0200*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's local target temperature is set to 20.0°C." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.515, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*4*1*35##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's season is heating." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 34.537, + "utc": "13:20:44", + "step": "read_who4", + "dir": "result", + "frame": "*#4*35*12##", + "ack": true, + "reply_time_s": 0.201, + "replies": [ + "*#4*35*12*0200*3##", + "*4*1*35##" + ], + "events_after": [ + "*#4*35*12*0200*3##", + "*4*1*35##" + ], + "note": "zone_35_dim12_carries_season" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 36.538, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*35*14##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 36.538, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35*14*0200*3##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 36.538, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 36.681, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35*14*0200*3##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's target temperature is set to 20.0°C." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 36.702, + "utc": "13:20:46", + "step": "read_who4", + "dir": "result", + "frame": "*#4*35*14##", + "ack": true, + "reply_time_s": 0.164, + "replies": [ + "*#4*35*14*0200*3##" + ], + "events_after": [ + "*#4*35*14*0200*3##" + ], + "note": "zone_35_dim14" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 38.702, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*35*20##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 38.702, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 38.702, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 38.888, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 38.891, + "utc": "13:20:48", + "step": "read_who4", + "dir": "result", + "frame": "*#4*35*20##", + "ack": true, + "reply_time_s": 0.189, + "replies": [ + "*#4*35#1*20*0##" + ], + "events_after": [ + "*#4*35#1*20*0##" + ], + "note": "zone_35_actuator_1" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*#0*20##", + "is_status_request": false + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*39#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*48#2*20*5##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*35#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*64#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*40#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*47#2*20*5##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*53#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*43#1*20*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 40.892, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.006, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*39#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 39's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.039, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*48#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 48's fan is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.071, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*35#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 35's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.112, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*64#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 64's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.137, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*40#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 40's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.177, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*47#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 47's fan is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.21, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*53#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.254, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*43#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 43's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.286, + "utc": "13:20:51", + "step": "read_who4", + "dir": "result", + "frame": "*#4*#0*20##", + "ack": true, + "reply_time_s": 0.394, + "replies": [ + "*#4*39#1*20*0##", + "*#4*48#2*20*5##", + "*#4*35#1*20*0##", + "*#4*64#1*20*0##", + "*#4*40#1*20*0##", + "*#4*47#2*20*5##", + "*#4*53#1*20*0##", + "*#4*43#1*20*0##" + ], + "events_after": [ + "*#4*39#1*20*0##", + "*#4*48#2*20*5##", + "*#4*35#1*20*0##", + "*#4*64#1*20*0##", + "*#4*40#1*20*0##", + "*#4*47#2*20*5##", + "*#4*53#1*20*0##", + "*#4*43#1*20*0##" + ], + "note": "all_zone_actuators_44_frames_including_zone_0" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.292, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*60#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60's fan is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.318, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*36#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 36's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.353, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*65#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 65's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.388, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*47#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 47's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.422, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*66#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 66's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.474, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*48#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 48's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.495, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*67#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 67's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.544, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*41#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 41's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.569, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*70#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70's fan is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.614, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*0#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 0's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.639, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*57#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.675, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*37#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 37's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.709, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*58#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.747, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*0#3*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 0's actuator 3 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.779, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*60#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.817, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*38#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 38's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.852, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*68#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.889, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*42#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 42's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.922, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*49#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 49's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.965, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*44#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 44's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 41.992, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*51#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 51's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.032, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*0#4*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 0's actuator 4 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.066, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*61#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.107, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*59#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 59's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.142, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*70#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.194, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*52#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 52's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.224, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*62#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 62's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.261, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*50#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 50's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.298, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*0#2*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 0's actuator 2 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.331, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*57#2*20*5##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57's fan is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.389, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*63#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 63's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.421, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*55#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 55's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.484, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*45#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 45's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.511, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*69#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 42.574, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*46#1*20*0##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 46's actuator 1 is off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 43.286, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*35*60##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 43.286, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 45.414, + "utc": "13:20:55", + "step": "read_who4", + "dir": "result", + "frame": "*#4*35*60##", + "ack": false, + "reply_time_s": 2.128, + "replies": [], + "events_after": [], + "note": "zone_35_humidity_nack_no_probe" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*0*60##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*39*60*51##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*53*60*60##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*48*60*54##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*69*60*52##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*40*60*47##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*42*60*52##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*43*60*54##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*60*60*54##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.415, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.574, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*39*60*51##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 39's main sensor is reporting a humidity of 51.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.604, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*53*60*60##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 53's main sensor is reporting a humidity of 60.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.653, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*48*60*54##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 48's main sensor is reporting a humidity of 54.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.689, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*69*60*52##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 69's main sensor is reporting a humidity of 52.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.753, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*40*60*47##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 40's main sensor is reporting a humidity of 47.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.788, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*42*60*52##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 42's main sensor is reporting a humidity of 52.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.839, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*43*60*54##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 43's main sensor is reporting a humidity of 54.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.889, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*60*60*54##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 60's main sensor is reporting a humidity of 54.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.914, + "utc": "13:20:57", + "step": "read_who4", + "dir": "result", + "frame": "*#4*0*60##", + "ack": true, + "reply_time_s": 0.499, + "replies": [ + "*#4*39*60*51##", + "*#4*53*60*60##", + "*#4*48*60*54##", + "*#4*69*60*52##", + "*#4*40*60*47##", + "*#4*42*60*52##", + "*#4*43*60*54##", + "*#4*60*60*54##" + ], + "events_after": [ + "*#4*39*60*51##", + "*#4*53*60*60##", + "*#4*48*60*54##", + "*#4*69*60*52##", + "*#4*40*60*47##", + "*#4*42*60*52##", + "*#4*43*60*54##", + "*#4*60*60*54##" + ], + "note": "general_humidity_17_zones" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.934, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*47*60*54##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 47's main sensor is reporting a humidity of 54.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 47.988, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*57*60*59##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 57's main sensor is reporting a humidity of 59.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.037, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*41*60*49##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 41's main sensor is reporting a humidity of 49.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.124, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*61*60*53##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 61's main sensor is reporting a humidity of 53.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.163, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*55*60*51##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 55's main sensor is reporting a humidity of 51.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.211, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*70*60*69##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 70's main sensor is reporting a humidity of 69.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.266, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*58*60*55##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 58's main sensor is reporting a humidity of 55.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.317, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*68*60*59##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 68's main sensor is reporting a humidity of 59.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 48.386, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*59*60*66##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 59's main sensor is reporting a humidity of 66.0%." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 49.916, + "step": "read_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*0*5##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 49.916, + "t_estimated": true, + "step": "read_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 49.919, + "utc": "13:20:59", + "step": "read_who16", + "dir": "result", + "frame": "*#16*0*5##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [], + "note": "who16_refused_locally" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 51.919, + "step": "read_who16", + "dir": "tx", + "session": "cmd", + "frame": "*#16*101*5##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 51.919, + "t_estimated": true, + "step": "read_who16", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 51.922, + "utc": "13:21:01", + "step": "read_who16", + "dir": "result", + "frame": "*#16*101*5##", + "ack": false, + "reply_time_s": 0.003, + "replies": [], + "events_after": [], + "note": "who16_refused_locally" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 53.924, + "step": "read_who5", + "dir": "tx", + "session": "cmd", + "frame": "*#5*0##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 53.924, + "t_estimated": true, + "step": "read_who5", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 53.929, + "utc": "13:21:03", + "step": "read_who5", + "dir": "result", + "frame": "*#5*0##", + "ack": false, + "reply_time_s": 0.005, + "replies": [], + "events_after": [], + "note": "who5_refused_locally" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*14##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0514##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0014##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0415##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0015##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*14##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0315##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0115##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*45##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0513##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*33##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0010##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0314##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*17##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*34##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*21##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0215##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*11##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*36##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*37##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*43##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*38##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0012##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0211##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0515##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0013##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0512##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0311##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0312##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*21##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0313##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0111##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0212##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*61##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*49##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*12##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*29##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*18##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0310##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0011##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*46##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0510##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0213##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*41##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0511##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*44##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*47##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*42##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0214##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*48##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*24##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*13##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0210##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*64##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0211##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0315##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0112##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*39##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*25##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0212##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*65##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*45##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*16##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*46##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0113##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0213##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*62##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0410##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0514##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0214##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*19##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*47##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0413##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*31##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*26##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0114##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0515##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0110##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*48##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*32##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*41##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*42##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0411##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*63##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*27##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*11##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*66##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0215##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0512##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*28##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*31##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*32##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*12##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*25##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*13##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*26##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*68##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*27##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*69##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*28##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 55.931, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.025, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*14##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 14 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.243, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0514##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0514 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.243, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0014##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0014 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.243, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0415##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0415 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.243, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0015##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0015 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.243, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*14##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 14 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.243, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0315##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0315 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.274, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0115##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0115 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.312, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*45##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 45 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.351, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0513##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0513 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.384, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*33##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 33 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.421, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0010##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0010 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.454, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0314##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0314 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.492, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*17##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 17 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.524, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*34##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 34 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.569, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*21##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 21 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.602, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0215##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0215 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.64, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*11##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 11 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.672, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*36##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 36 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.709, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*37##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 37 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.746, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*43##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 43 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.783, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*38##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 38 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.816, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0012##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0012 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.85, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0211##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0211 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.892, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0515##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0515 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.93, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0013##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0013 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 56.963, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0512##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0512 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.004, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0311##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0311 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.042, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0312##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0312 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.074, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*21##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 21 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.11, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0313##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0313 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.146, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0111##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0111 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.18, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0212##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0212 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.217, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*61##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 61 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.25, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*49##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 49 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.286, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*12##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 12 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.323, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*29##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 29 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.354, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*18##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 18 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.39, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0310##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0310 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.423, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0011##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0011 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.454, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*46##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 46 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.494, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0510##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0510 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.524, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0213##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0213 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.568, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*41##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 41 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.602, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0511##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0511 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.635, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*44##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 44 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.674, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*47##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 47 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.711, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*42##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 42 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.748, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0214##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0214 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.784, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*48##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 48 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.819, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*24##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 24 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.854, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*13##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 13 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.889, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0210##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0210 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.924, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*64##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 64 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 57.959, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0211##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0211 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.004, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0315##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0315 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.044, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0112##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0112 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.074, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*39##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 39 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.114, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*25##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 25 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.149, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0212##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0212 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.187, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*65##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 65 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.221, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*45##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 45 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.254, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*16##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 16 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.29, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*46##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 46 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.33, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0113##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0113 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.359, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0213##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0213 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.396, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*62##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 62 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.43, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0410##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0410 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.465, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0514##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0514 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.498, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0214##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0214 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.535, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*19##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 19 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.57, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*47##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 47 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.633, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0413##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0413 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.659, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*31##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 31 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.698, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*26##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 26 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.733, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0114##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0114 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.77, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0515##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0515 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.803, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0110##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0110 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.84, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*48##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 48 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.882, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*32##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 32 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.922, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*41##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 41 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.96, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*42##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 42 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 58.987, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0411##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0411 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.024, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*63##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 63 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.068, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*27##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 27 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.112, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*11##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 11 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.149, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*66##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 66 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.192, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0215##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0215 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.239, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0512##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0512 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.282, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*28##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 28 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.33, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*31##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 31 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.371, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*32##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 32 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.4, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*12##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 12 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.433, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*25##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 25 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.471, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*13##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 13 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.504, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*26##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 26 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.566, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*68##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 68 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.595, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*27##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 27 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.657, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*69##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 69 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 59.683, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*28##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 28 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 60.669, + "utc": "13:21:10", + "step": "read_who1", + "dir": "result", + "frame": "*#1*0##", + "ack": true, + "reply_time_s": 4.738, + "replies": [ + "*1*0*14##", + "*1*0*0514##", + "*1*0*0014##", + "*1*0*0415##", + "*1*0*0015##", + "*1*0*14##", + "*1*0*0315##", + "*1*0*0115##", + "*1*0*45##", + "*1*0*0513##", + "*1*0*33##", + "*1*0*0010##", + "*1*0*0314##", + "*1*0*17##", + "*1*0*34##", + "*1*0*21##", + "*1*0*0215##", + "*1*0*11##", + "*1*0*36##", + "*1*0*37##", + "*1*0*43##", + "*1*0*38##", + "*1*0*0012##", + "*1*0*0211##", + "*1*0*0515##", + "*1*0*0013##", + "*1*0*0512##", + "*1*0*0311##", + "*1*0*0312##", + "*1*0*21##", + "*1*0*0313##", + "*1*0*0111##", + "*1*0*0212##", + "*1*0*61##", + "*1*0*49##", + "*1*0*12##", + "*1*0*29##", + "*1*0*18##", + "*1*0*0310##", + "*1*0*0011##", + "*1*0*46##", + "*1*0*0510##", + "*1*0*0213##", + "*1*0*41##", + "*1*0*0511##", + "*1*0*44##", + "*1*0*47##", + "*1*0*42##", + "*1*0*0214##", + "*1*0*48##", + "*1*0*24##", + "*1*0*13##", + "*1*0*0210##", + "*1*0*64##", + "*1*0*0211##", + "*1*0*0315##", + "*1*0*0112##", + "*1*0*39##", + "*1*0*25##", + "*1*0*0212##", + "*1*0*65##", + "*1*0*45##", + "*1*0*16##", + "*1*0*46##", + "*1*0*0113##", + "*1*0*0213##", + "*1*0*62##", + "*1*0*0410##", + "*1*0*0514##", + "*1*0*0214##", + "*1*0*19##", + "*1*0*47##", + "*1*0*0413##", + "*1*0*31##", + "*1*0*26##", + "*1*0*0114##", + "*1*0*0515##", + "*1*0*0110##", + "*1*0*48##", + "*1*0*32##", + "*1*0*41##", + "*1*0*42##", + "*1*0*0411##", + "*1*0*63##", + "*1*0*27##", + "*1*0*11##", + "*1*0*66##", + "*1*0*0215##", + "*1*0*0512##", + "*1*0*28##", + "*1*0*31##", + "*1*0*32##", + "*1*0*12##", + "*1*0*25##", + "*1*0*13##", + "*1*0*26##", + "*1*0*68##", + "*1*0*27##", + "*1*0*69##", + "*1*0*28##" + ], + "events_after": [ + "*1*0*14##", + "*1*0*0514##", + "*1*0*0014##", + "*1*0*0415##", + "*1*0*0015##", + "*1*0*14##", + "*1*0*0315##", + "*1*0*0115##", + "*1*0*45##", + "*1*0*0513##", + "*1*0*33##", + "*1*0*0010##", + "*1*0*0314##", + "*1*0*17##", + "*1*0*34##", + "*1*0*21##", + "*1*0*0215##", + "*1*0*11##", + "*1*0*36##", + "*1*0*37##", + "*1*0*43##", + "*1*0*38##", + "*1*0*0012##", + "*1*0*0211##", + "*1*0*0515##", + "*1*0*0013##", + "*1*0*0512##", + "*1*0*0311##", + "*1*0*0312##", + "*1*0*21##", + "*1*0*0313##", + "*1*0*0111##", + "*1*0*0212##", + "*1*0*61##", + "*1*0*49##", + "*1*0*12##", + "*1*0*29##", + "*1*0*18##", + "*1*0*0310##", + "*1*0*0011##", + "*1*0*46##", + "*1*0*0510##", + "*1*0*0213##", + "*1*0*41##", + "*1*0*0511##", + "*1*0*44##", + "*1*0*47##", + "*1*0*42##", + "*1*0*0214##", + "*1*0*48##", + "*1*0*24##", + "*1*0*13##", + "*1*0*0210##", + "*1*0*64##", + "*1*0*0211##", + "*1*0*0315##", + "*1*0*0112##", + "*1*0*39##", + "*1*0*25##", + "*1*0*0212##", + "*1*0*65##", + "*1*0*45##", + "*1*0*16##", + "*1*0*46##", + "*1*0*0113##", + "*1*0*0213##", + "*1*0*62##", + "*1*0*0410##", + "*1*0*0514##", + "*1*0*0214##", + "*1*0*19##", + "*1*0*47##", + "*1*0*0413##", + "*1*0*31##", + "*1*0*26##", + "*1*0*0114##", + "*1*0*0515##", + "*1*0*0110##", + "*1*0*48##", + "*1*0*32##", + "*1*0*41##", + "*1*0*42##", + "*1*0*0411##", + "*1*0*63##", + "*1*0*27##", + "*1*0*11##", + "*1*0*66##", + "*1*0*0215##", + "*1*0*0512##", + "*1*0*28##", + "*1*0*31##", + "*1*0*32##", + "*1*0*12##", + "*1*0*25##", + "*1*0*13##", + "*1*0*26##", + "*1*0*68##", + "*1*0*27##", + "*1*0*69##", + "*1*0*28##" + ], + "note": "general_light_status_100_replies" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.67, + "step": "read_who2", + "dir": "tx", + "session": "cmd", + "frame": "*#2*0##", + "is_status_request": true + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.67, + "t_estimated": true, + "step": "read_who2", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.774, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*17##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 17 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.805, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0312##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0312 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.832, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0514##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0514 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.875, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0310##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0310 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.903, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0010##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0010 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.932, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0313##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0313 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 65.97, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*21##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 21 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.001, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*37##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 37 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.042, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0014##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0014 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.084, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0115##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0115 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.117, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*45##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 45 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.152, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0513##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0513 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.185, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*46##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 46 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.222, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0111##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0111 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.253, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*24##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 24 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.294, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*11##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 11 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.329, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*33##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 33 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.363, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0415##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0415 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.398, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*38##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 38 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.434, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*61##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 61 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.468, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0315##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0315 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.508, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0015##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0015 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.542, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*34##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 34 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.578, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*12##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 12 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.614, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*43##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 43 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.658, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*13##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 13 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.689, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*39##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 39 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.724, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*18##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 18 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.763, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0215##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0215 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.802, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0012##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0012 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.838, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*29##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 29 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.873, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*19##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 19 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.908, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0211##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0211 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.943, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0212##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0212 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 66.981, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*47##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 47 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.018, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0512##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0512 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.052, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0011##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0011 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.083, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0213##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0213 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.129, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*48##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 48 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.165, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0110##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0110 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.198, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0214##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0214 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.233, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*64##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 64 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.273, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*49##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 49 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.303, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0510##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0510 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.338, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0210##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0210 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.376, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*16##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 16 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.403, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*31##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 31 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.444, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*17##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 17 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.479, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*44##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 44 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.521, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*65##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 65 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.554, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*32##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 32 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.596, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*18##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 18 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.631, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0314##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0314 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.663, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*14##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 14 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.699, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0515##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0515 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.739, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0014##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0014 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.771, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0311##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0311 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.81, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*19##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 19 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.844, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*36##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 36 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.902, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0013##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0013 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.933, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*41##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 41 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 67.963, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*42##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 42 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.003, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0112##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0112 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.043, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*25##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 25 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.081, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0511##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0511 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.115, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*66##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 66 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.154, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0110##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0110 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.188, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*26##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 26 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.224, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*62##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 62 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.257, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*27##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 27 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.303, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0015##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0015 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.334, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0410##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0410 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.373, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*63##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 63 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.431, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0113##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0113 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.456, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*28##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 28 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.505, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*64##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 64 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.533, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0411##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0411 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.577, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0114##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0114 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.632, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0011##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0011 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.684, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*65##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 65 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.73, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*62##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 62 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.771, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*63##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 63 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.823, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*16##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 16 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.879, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0413##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0413 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.933, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*68##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 68 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 68.992, + "step": "read_who2", + "dir": "rx", + "session": "evt", + "frame": "*1*0*69##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 69 is switched off." + }, + { + "run": "run2_reads_thermo_sound_alarm_lights", + "t": 69.971, + "utc": "13:21:19", + "step": "read_who2", + "dir": "result", + "frame": "*#2*0##", + "ack": true, + "reply_time_s": 4.301, + "replies": [], + "events_after": [ + "*1*0*17##", + "*1*0*0312##", + "*1*0*0514##", + "*1*0*0310##", + "*1*0*0010##", + "*1*0*0313##", + "*1*0*21##", + "*1*0*37##", + "*1*0*0014##", + "*1*0*0115##", + "*1*0*45##", + "*1*0*0513##", + "*1*0*46##", + "*1*0*0111##", + "*1*0*24##", + "*1*0*11##", + "*1*0*33##", + "*1*0*0415##", + "*1*0*38##", + "*1*0*61##", + "*1*0*0315##", + "*1*0*0015##", + "*1*0*34##", + "*1*0*12##", + "*1*0*43##", + "*1*0*13##", + "*1*0*39##", + "*1*0*18##", + "*1*0*0215##", + "*1*0*0012##", + "*1*0*29##", + "*1*0*19##", + "*1*0*0211##", + "*1*0*0212##", + "*1*0*47##", + "*1*0*0512##", + "*1*0*0011##", + "*1*0*0213##", + "*1*0*48##", + "*1*0*0110##", + "*1*0*0214##", + "*1*0*64##", + "*1*0*49##", + "*1*0*0510##", + "*1*0*0210##", + "*1*0*16##", + "*1*0*31##", + "*1*0*17##", + "*1*0*44##", + "*1*0*65##", + "*1*0*32##", + "*1*0*18##", + "*1*0*0314##", + "*1*0*14##", + "*1*0*0515##", + "*1*0*0014##", + "*1*0*0311##", + "*1*0*19##", + "*1*0*36##", + "*1*0*0013##", + "*1*0*41##", + "*1*0*42##", + "*1*0*0112##", + "*1*0*25##", + "*1*0*0511##", + "*1*0*66##", + "*1*0*0110##", + "*1*0*26##", + "*1*0*62##", + "*1*0*27##", + "*1*0*0015##", + "*1*0*0410##", + "*1*0*63##", + "*1*0*0113##", + "*1*0*28##", + "*1*0*64##", + "*1*0*0411##", + "*1*0*0114##", + "*1*0*0011##", + "*1*0*65##", + "*1*0*62##", + "*1*0*63##", + "*1*0*16##", + "*1*0*0413##", + "*1*0*68##", + "*1*0*69##" + ], + "note": "general_cover_status_ack_no_cmd_replies" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 72.008, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*0##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 72.008, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 72.059, + "utc": "13:22:09", + "step": "read_who4", + "dir": "result", + "frame": "*#4*0##", + "ack": false, + "reply_time_s": 0.051, + "replies": [], + "events_after": [], + "note": "general_zone_status_refused_locally" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 78.061, + "step": "read_who4", + "dir": "tx", + "session": "cmd", + "frame": "*#4*39*60##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 78.061, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#4*39*60*51##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 78.061, + "t_estimated": true, + "step": "read_who4", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 78.235, + "step": "read_who4", + "dir": "rx", + "session": "evt", + "frame": "*#4*39*60*51##", + "ownd_class": "OWNHeatingEvent", + "ownd_log": "Zone 39's main sensor is reporting a humidity of 51.0%." + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 78.265, + "utc": "13:22:15", + "step": "read_who4", + "dir": "result", + "frame": "*#4*39*60##", + "ack": true, + "reply_time_s": 0.204, + "replies": [ + "*#4*39*60*51##" + ], + "events_after": [ + "*#4*39*60*51##" + ], + "note": "zone_39_humidity" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 80.267, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0014##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 80.267, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0014##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 80.267, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 80.354, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0014##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0014 is switched off." + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 80.357, + "utc": "13:22:17", + "step": "read_who1", + "dir": "result", + "frame": "*#1*0014##", + "ack": true, + "reply_time_s": 0.09, + "replies": [ + "*1*0*0014##" + ], + "events_after": [ + "*1*0*0014##" + ], + "note": "four_digit_0014_is_a_device" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 82.357, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*14##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 82.357, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*14##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 82.357, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 82.454, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*14##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 14 is switched off." + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 82.456, + "utc": "13:22:19", + "step": "read_who1", + "dir": "result", + "frame": "*#1*14##", + "ack": true, + "reply_time_s": 0.099, + "replies": [ + "*1*0*14##" + ], + "events_after": [ + "*1*0*14##" + ], + "note": "two_digit_14_is_another_device" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 84.458, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0010##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 84.458, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*1*0*0010##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 84.458, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 84.544, + "step": "read_who1", + "dir": "rx", + "session": "evt", + "frame": "*1*0*0010##", + "ownd_class": "OWNLightingEvent", + "ownd_log": "Light 0010 is switched off." + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 84.547, + "utc": "13:22:21", + "step": "read_who1", + "dir": "result", + "frame": "*#1*0010##", + "ack": true, + "reply_time_s": 0.089, + "replies": [ + "*1*0*0010##" + ], + "events_after": [ + "*1*0*0010##" + ], + "note": "four_digit_0010_is_a_device" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 86.548, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*10##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 86.548, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 88.557, + "utc": "13:22:25", + "step": "read_who1", + "dir": "result", + "frame": "*#1*10##", + "ack": false, + "reply_time_s": 2.009, + "replies": [], + "events_after": [], + "note": "two_digit_10_nack_after_bus_timeout" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 90.558, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0001##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 90.558, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 90.566, + "utc": "13:22:27", + "step": "read_who1", + "dir": "result", + "frame": "*#1*0001##", + "ack": false, + "reply_time_s": 0.008, + "replies": [], + "events_after": [], + "note": "four_digit_area0_point_refused_locally" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 92.567, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*01##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 92.567, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 94.577, + "utc": "13:22:31", + "step": "read_who1", + "dir": "result", + "frame": "*#1*01##", + "ack": false, + "reply_time_s": 2.01, + "replies": [], + "events_after": [], + "note": "two_digit_01_nack_after_bus_timeout" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 96.577, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*0004##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 96.577, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 96.591, + "utc": "13:22:33", + "step": "read_who1", + "dir": "result", + "frame": "*#1*0004##", + "ack": false, + "reply_time_s": 0.014, + "replies": [], + "events_after": [], + "note": "four_digit_area0_point_refused_locally" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 98.593, + "step": "read_who1", + "dir": "tx", + "session": "cmd", + "frame": "*#1*04##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 98.593, + "t_estimated": true, + "step": "read_who1", + "dir": "rx", + "session": "cmd", + "frame": "*#*0##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 100.615, + "utc": "13:22:37", + "step": "read_who1", + "dir": "result", + "frame": "*#1*04##", + "ack": false, + "reply_time_s": 2.022, + "replies": [], + "events_after": [], + "note": "two_digit_04_nack_after_bus_timeout" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 102.617, + "step": "read_who13", + "dir": "tx", + "session": "cmd", + "frame": "*#13**0##", + "is_status_request": true + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 102.617, + "t_estimated": true, + "step": "read_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#13**0*16*22*38*999##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 102.617, + "t_estimated": true, + "step": "read_who13", + "dir": "rx", + "session": "cmd", + "frame": "*#*1##" + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 102.636, + "step": "read_who13", + "dir": "rx", + "session": "evt", + "frame": "*#13**0*16*22*38*999##", + "ownd_class": "OWNGatewayEvent", + "ownd_log": "Gateway's internal time is: 16:22:38." + }, + { + "run": "run3_reads_lights_addresses_humidity", + "t": 102.64, + "utc": "13:22:39", + "step": "read_who13", + "dir": "result", + "frame": "*#13**0##", + "ack": true, + "reply_time_s": 0.023, + "replies": [ + "*#13**0*16*22*38*999##" + ], + "events_after": [ + "*#13**0*16*22*38*999##" + ], + "note": "who13_time_echoed_on_evt" + } + ] +} diff --git a/tests/test_f461_live_2026_10_23_trace.py b/tests/test_f461_live_2026_10_23_trace.py new file mode 100644 index 000000000..cc5504e4b --- /dev/null +++ b/tests/test_f461_live_2026_10_23_trace.py @@ -0,0 +1,644 @@ +"""Replay and verification tests for the 2026-10-23 live BTicino F461 capture. + +Fixture: + tests/fixtures/traces/f461_live_2026-10-23/myhome_trace_F461_live_2026-10-23.json + +The capture is the physical evidence behind OWNd #136-#142 and MyHOME #791-#798. Every +test here pins a fact of the trace itself (a frame present, an ACK / NACK, a reply order, +a timing) or replays event-session frames through entities whose behaviour does not depend +on those pull requests, so the module passes on the base branch with the pinned OWNd. + +What the plant said (F461 2.0.11, WHO 13 device type 200, WHO 1013 134.15.5.0, no central +unit, no WHO 16 / 22 devices): + +- ``*#4*2##`` answers dimension 0, 12, the season, 14, 13 in that order and dimension 12 + (23.5, the setpoint in force) differs from dimension 14 (21.0, the last commanded value). +- ``*#4*2*20##`` is followed by two actuator frames on the event session; ``*#4*#0*20##`` + returns both on the command session in 2.1 s. +- ``*#1*0007##`` is refused in 7 ms, ``*#1*07##`` is answered, ``*#1*7##`` is area 7 (empty). +- ``*#13**0##`` sent on the command session is also delivered on the event session. +- all 18 WHO 16 requests, ``*#4*0##``, ``*#5*0##`` are refused locally (under 10 ms); + ``*#4*#2##``, ``*#4*#2*14##``, ``*#4*#0*14##`` are refused after the bus timeout. +- ``*#13**27##`` answers ``*#13**27*70#52#54#49##`` ("F461" as ASCII codes). +- ``*2*0*0##`` was seen exactly once (one general stop from Home Assistant). +- the F411/2 shutter at 05 stops itself 5.1-5.9 s after a run starts. +""" + +from __future__ import annotations + +import asyncio +import json +import re +from pathlib import Path +from types import SimpleNamespace +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest +from homeassistant.components.climate import HVACMode +from homeassistant.const import CONF_NAME +from homeassistant.core import HomeAssistant +from OWNd.message import OWNCommand, OWNMessage +from OWNd.profiles import F461Profile + +from custom_components.myhome.const import CONF_ENTITY, CONF_PLATFORMS, CONF_WHERE, DOMAIN +from tests.conftest import attach_platform, attach_runtime + +MAC = "00:03:50:00:10:23" +MAC_FRAME = "*#13**12*0*3*80*0*16*35##" +MODEL_NAME_FRAME = "*#13**27*70#52#54#49##" +FIXTURE = ( + Path(__file__).resolve().parent + / "fixtures" + / "traces" + / "f461_live_2026-10-23" + / "myhome_trace_F461_live_2026-10-23.json" +) + +RUN1 = "run1_oracle_replay_readonly" +RUN2 = "run2_reviewer_reads" +RUN3 = "run3_climate_setpoint_restore" +RUN4 = "run4_final_state" +RUN4B = "run4b_final_state_after_restore" +RUN5 = "run5_injection_flags" +RUN6 = "run6_event_session_ha_fixed_integration" +RUN7 = "run7_localha_bus_monitor" +RUN8 = "run8_flicker_repro" +RUN8B = "run8b_flicker_repro_who22" +ALL_RUNS = (RUN1, RUN2, RUN3, RUN4, RUN4B, RUN5, RUN6, RUN7, RUN8, RUN8B) + + +@pytest.fixture(scope="module") +def trace_payload() -> dict: + """Load the 2026-10-23 F461 live trace archive.""" + assert FIXTURE.is_file(), FIXTURE + return json.loads(FIXTURE.read_text(encoding="utf-8")) + + +@pytest.fixture(scope="module") +def rows(trace_payload: dict) -> list[dict]: + """Return the chronological session log rows.""" + return trace_payload["rows"] + + +@pytest.fixture(scope="module") +def frames(trace_payload: dict) -> list[dict]: + """Return the event-session frames.""" + return trace_payload["frames"] + + +def _results(rows: list[dict], run: str | None = None, frame: str | None = None) -> list[dict]: + return [ + r + for r in rows + if r["dir"] == "result" + and (run is None or r["run"] == run) + and (frame is None or r["frame"] == frame) + ] + + +def _result(rows: list[dict], run: str, frame: str) -> dict: + found = _results(rows, run, frame) + assert len(found) == 1, (run, frame, len(found)) + return found[0] + + +def _evt(rows: list[dict], run: str) -> list[dict]: + return [r for r in rows if r["run"] == run and r["dir"] == "rx" and r["session"] == "evt"] + + +def _evt_between(rows: list[dict], run: str, frame: str) -> list[str]: + """Event-session frames from the request ``frame`` of ``run`` until the next request of that run.""" + run_rows = [r for r in rows if r["run"] == run] + start = next(i for i, r in enumerate(run_rows) if r["dir"] == "tx" and r["frame"] == frame) + out: list[str] = [] + for r in run_rows[start + 1 :]: + if r["dir"] == "tx": + break + if r["dir"] == "rx" and r["session"] == "evt": + out.append(r["frame"]) + return out + + +def _gateway() -> MagicMock: + gw = MagicMock() + gw.mac = MAC + gw.unique_id = MAC + gw.bus_group = MAC + gw.primary_gateway_mac = None + gw.delegated_whos = set() + gw.delegated_away_whos = set() + gw.log_id = "[F461 live 2026-10-23]" + gw.model = "F461" + gw.has_central_unit = False + gw.supports_zone_status = True + gw.initial_discovery_pending = False + gw.is_connected = True + gw.profile = F461Profile() + gw._gateway = SimpleNamespace(profile=gw.profile) + gw.sent: list[str] = [] + + async def _send(cmd, *a, **k): + gw.sent.append(str(cmd)) + fut: asyncio.Future[bool] = asyncio.get_running_loop().create_future() + fut.set_result(True) + return fut + + gw.send = AsyncMock(side_effect=_send) + gw.send_status_request = AsyncMock(side_effect=_send) + return gw + + +async def _setup_plant(hass: HomeAssistant, gw: MagicMock) -> dict[str, object]: + from custom_components.myhome.climate import async_setup_entry as climate_setup + from custom_components.myhome.cover import async_setup_entry as cover_setup + from custom_components.myhome.light import async_setup_entry as light_setup + + platforms_cfg = { + "light": { + "light_06": {CONF_WHERE: "06", CONF_NAME: "Light 06", "model": "F411"}, + "light_07": {CONF_WHERE: "07", CONF_NAME: "Light 07", "model": "F411"}, + "light_09": {CONF_WHERE: "09", CONF_NAME: "Light 09", "model": "F411"}, + }, + "cover": { + "cover_05": { + CONF_WHERE: "05", + CONF_NAME: "Cover 05", + "advanced": False, + "open_Best_Time": 6, + "close_Best_Time": 6, + }, + }, + "climate": { + "climate_zone_2": { + "who": "4", + "zone": "2", + "name": "Climate Zone 2", + "heat": True, + "cool": True, + "standalone": True, + "central": False, + "manufacturer": "BTicino", + "model": "F461", + } + }, + } + hass.data = {DOMAIN: {MAC: {CONF_ENTITY: gw, CONF_PLATFORMS: platforms_cfg}}} + entry = MagicMock() + entry.data = {"mac": MAC} + entry.entry_id = "f461_live_2026_10_23" + entry.options = {} + attach_runtime(hass, entry, MAC, gw) + + lights: list = [] + covers: list = [] + climates: list = [] + with ( + patch( + "custom_components.myhome.discovery.er.async_entries_for_config_entry", + return_value=[], + ), + patch("custom_components.myhome.discovery.er.async_get", return_value=MagicMock()), + ): + await light_setup(hass, entry, lights.extend) + await cover_setup(hass, entry, covers.extend) + await climate_setup(hass, entry, climates.extend) + + for ent in lights + covers + climates: + ent.hass = hass + domain = "climate" if ent in climates else ("cover" if ent in covers else "light") + ent.entity_id = f"{domain}.{ent._device_id}" + ent.async_write_ha_state = MagicMock() + ent.async_schedule_update_ha_state = MagicMock() + attach_platform(ent, entry) + + return {ent._where: ent for ent in lights + covers + climates} + + +# --------------------------------------------------------------- schema, privacy, parsing + + +def test_schema_runs_and_synthetic_identity(trace_payload: dict, rows: list[dict], frames: list[dict]) -> None: + """Fixture metadata, RFC 5737 / synthetic identity, run names and counts.""" + gw = trace_payload["gateway"] + assert gw["model"] == "F461" + assert gw["firmware"] == "2.0.11" + assert gw["ip"] == "192.0.2.92" + assert gw["mac"] == MAC + assert gw["identification"] == { + "model": "F461", + "who13_code": "200", + "who13_model_name": "F461", + "who1013_code": "134", + } + assert trace_payload["capture"]["kind"] == "derived_trace_archive" + assert [r["run"] for r in trace_payload["capture"]["runs"]] == list(ALL_RUNS) + assert [r["t_offset"] for r in trace_payload["capture"]["runs"]][0] == 0.0 + ts = [f["timestamp"] for f in frames] + assert ts == sorted(ts), "one monotonic time axis across the runs" + assert all(a["t"] <= b["t"] for a, b in zip(rows, rows[1:], strict=False)) + assert trace_payload["capture"]["window"] == { + "first": "2026-10-23T20:38:04+00:00", + "last": "2026-10-23T23:03:07+00:00", + "frames": 299, + "rows": 939, + } + assert len(frames) == 299 + assert len(rows) == 939 + assert {r["run"] for r in rows} == set(ALL_RUNS) + assert all(f["direction"] == "rx" and f["session"] == "evt" for f in frames) + # the event rows of the log are the frames array, in the same order + assert [r["frame"] for r in rows if r["dir"] == "rx" and r["session"] == "evt"] == [f["raw"] for f in frames] + # the real MAC and LAN address were rewritten in both their text and their WHO 13 byte forms + text = json.dumps(trace_payload) + # every MAC-like string and every WHO 13 dimension 12 frame in the archive is the synthetic one + assert set(re.findall(r"(?:[0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}", text)) == {MAC} + assert {f["raw"] for f in frames if f["raw"].startswith("*#13**12*")} <= {MAC_FRAME} + assert "192*168" not in text and "192.168" not in text + assert MAC_FRAME in text and "*#13**10*192*0*2*92##" in text + assert "00:03:50:00:04:97" not in text, "a different synthetic MAC than the 2026-10-15 / 10-18 fixtures" + + +def test_every_frame_parses_in_ownd_except_the_pending_model_name_decoder(rows: list[dict], frames: list[dict]) -> None: + """Every rx frame parses in the pinned OWNd; the WHO 13 dimension 27 reply is the one exception.""" + for item in frames: + parsed = OWNMessage.parse(item["raw"]) + if item["raw"] == MODEL_NAME_FRAME: + continue # no decoder in the pinned OWNd (OWNd#139); it must not raise + assert parsed is not None, f"Failed to parse evt frame: {item['raw']}" + for r in rows: + if r["dir"] == "tx": + assert OWNCommand.parse(r["frame"]) is not None or OWNMessage.parse(r["frame"]) is not None, r + elif r["dir"] == "rx" and r["frame"] not in ("*#*1##", "*#*0##", MODEL_NAME_FRAME): + assert OWNMessage.parse(r["frame"]) is not None, r + + +def test_result_rows_are_consistent_with_their_tx_and_cmd_rx_rows(rows: list[dict]) -> None: + """Each result row follows its tx row, its replies are on the command session, ACK / NACK is logged.""" + for run in ALL_RUNS: + run_rows = [r for r in rows if r["run"] == run] + for i, r in enumerate(run_rows): + if r["dir"] != "result": + continue + tx_i = next(j for j in range(i - 1, -1, -1) if run_rows[j]["dir"] == "tx") + tx = run_rows[tx_i] + assert tx["frame"] == r["frame"] + assert tx["t"] <= r["t"] + assert abs((r["t"] - tx["t"]) - r["reply_time_s"]) < 0.002 + # the command-session replies sit right after their request, at its t, flagged as estimated + cmd_rx = [x for x in run_rows[tx_i + 1 : i] if x["dir"] == "rx" and x["session"] == "cmd"] + assert [x["frame"] for x in cmd_rx] == [*r["replies"], "*#*1##" if r["ack"] else "*#*0##"] + assert all(x["t"] == tx["t"] and x["t_estimated"] is True for x in cmd_rx) + assert run_rows[tx_i + 1 : tx_i + 1 + len(cmd_rx)] == cmd_rx + # events_after holds exactly the event-session frames that arrived while the request was pending + pending = [x["frame"] for x in run_rows[tx_i + 1 : i] if x["dir"] == "rx" and x["session"] == "evt" and x["t"] <= r["t"]] + assert r["events_after"] == pending + assert all(r["ack"] is False and r["replies"] == [] for r in _results(rows) if not r["ack"]) + + +# --------------------------------------------------------------- WHO 13 / 1013 identification + + +def test_gateway_identification_and_model_name_dimension_27(rows: list[dict], frames: list[dict]) -> None: + """WHO 13 device type 200, firmware 2.0.11, WHO 1013 object model 134.15.5.0, dimension 27 model name.""" + assert _result(rows, RUN1, "*#13**15##")["replies"] == ["*#13**15*200##"] + assert _result(rows, RUN1, "*#13**16##")["replies"] == ["*#13**16*2*0*11##"] + assert _result(rows, RUN1, "*#13**23##")["replies"] == ["*#13**23*5*10*35##"] + assert _result(rows, RUN1, "*#13**24##")["replies"] == ["*#13**24*2*26*4##"] + assert _result(rows, RUN1, "*#1013*0*1##")["replies"] == ["*#1013**1*134*15*5*0##"] + assert _result(rows, RUN1, "*#1013*0##")["ack"] is False + # the F461 answers its MAC and IP (synthetic values in the fixture) + assert _result(rows, RUN1, "*#13**12##")["replies"] == [MAC_FRAME] + assert _result(rows, RUN1, "*#13**10##")["replies"] == ["*#13**10*192*0*2*92##"] + # dimension 27: the model name as ASCII codes, also delivered on the event session + res = _result(rows, RUN1, "*#13**27##") + assert res["ack"] is True + assert res["replies"] == [MODEL_NAME_FRAME] + assert res["events_after"] == [MODEL_NAME_FRAME] + assert [f["raw"] for f in frames if f["raw"].startswith("*#13**27*")] == [MODEL_NAME_FRAME] + codes = MODEL_NAME_FRAME[len("*#13**27*") : -2].split("#") + assert "".join(chr(int(c)) for c in codes) == "F461" + # dimensions 2, 3, 25, 26 are refused locally + for dim in ("2", "3", "25", "26"): + res = _result(rows, RUN1, f"*#13**{dim}##") + assert res["ack"] is False and res["reply_time_s"] < 0.05, dim + # WHO 1001 is not answered on this plant (no WHO 1 fault / diagnostic device) + assert _result(rows, RUN1, "*#1001*74##")["ack"] is False + + +def test_who13_time_request_is_echoed_on_the_event_session(rows: list[dict]) -> None: + """*#13**0## sent on the command session is delivered on the event session too (liveness probe).""" + for run in (RUN1, RUN2): + res = _result(rows, run, "*#13**0##") + assert res["ack"] is True + assert len(res["replies"]) == 1 and res["replies"][0].startswith("*#13**0*") + assert res["events_after"] == res["replies"] + echo = [r for r in _evt(rows, run) if r["frame"] == res["replies"][0]] + assert len(echo) == 1 and echo[0]["ownd_class"] == "OWNGatewayEvent" + # the spontaneous MAC and object-model frames open the event session (first two event rows of run6) + first_two = [r["frame"] for r in _evt(rows, RUN6)[:2]] + assert first_two == [MAC_FRAME, "*#1013**1*134*15*5*0##"] + # every WHO 13 clock echo on the event session carries an empty time-zone field on this F461 + clock_echoes = [r["frame"] for r in _evt(rows, RUN6) if r["frame"].startswith("*#13**#0*")] + assert clock_echoes == ["*#13**#0*01*40*00*##", "*#13**#0*01*50*00*##", "*#13**#0*02*00*00*##"] + assert all(OWNMessage.parse(f) is not None for f in clock_echoes) + + +# --------------------------------------------------------------- WHO 1 address spellings + + +def test_area0_point_spellings_0007_nack_07_ack_7_is_area_7(rows: list[dict]) -> None: + """Four-digit area-0 points are refused locally; two digits answer; one digit is an area.""" + four = _result(rows, RUN2, "*#1*0007##") + assert four["ack"] is False and four["reply_time_s"] < 0.05 and four["replies"] == [] + two = _result(rows, RUN2, "*#1*07##") + assert two["ack"] is True and two["replies"] == ["*1*0*07##"] and two["reply_time_s"] < 0.2 + one = _result(rows, RUN2, "*#1*7##") + assert one["ack"] is True and one["replies"] == [] and 0.9 < one["reply_time_s"] < 1.2 + for frame in ("*#1*0001##", "*#1*0002##", "*#1*0002#4#01##"): + res = _result(rows, RUN1, frame) + assert res["ack"] is False and res["reply_time_s"] < 0.05, frame + # 0010 / 0015 (area 1) are forwarded to the bus and time out there instead + for frame in ("*#1*0010##", "*#1*0015##", "*#1*02##", "*#1*31##"): + res = _result(rows, RUN1, frame) + assert res["ack"] is False and 1.8 < res["reply_time_s"] < 2.5, frame + # the plant's own points answer with the two-digit WHERE + assert _result(rows, RUN1, "*#1*06##")["replies"] == ["*1*0*06##"] + assert _result(rows, RUN1, "*#1*07##")["replies"] == ["*1*0*07##"] + + +def test_area0_sweep_reports_09_but_the_point_behind_the_f422_does_not_answer(rows: list[dict]) -> None: + """*#1*0## lists 06, 07 and 09; *#1*09## times out on the bus (actuator without configurator 2).""" + for frame in ("*#1*0##", "*#1*00##"): + res = _result(rows, RUN1, frame) + assert res["ack"] is True + assert res["replies"] == ["*1*0*06##", "*1*0*07##", "*1*0*09##"], frame + nine = _result(rows, RUN1, "*#1*09##") + assert nine["ack"] is False and 1.8 < nine["reply_time_s"] < 2.5 + # dimension 15 is group-only: refused on a point, answered (and echoed) on group 1 + assert _result(rows, RUN1, "*#1*06*15##")["ack"] is False + group = _result(rows, RUN1, "*#1*#1*15##") + assert group["ack"] is True and group["events_after"] == ["*#1*#1*15##"] + + +# --------------------------------------------------------------- WHO 4 climate + + +def test_zone_status_reply_order_and_dimension_12_differs_from_14(rows: list[dict]) -> None: + """*#4*2## answers 0, 12, season, 14, 13; dimension 12 (in force) is not dimension 14 (commanded).""" + res = _result(rows, RUN1, "*#4*2##") + assert res["ack"] is True + assert res["replies"] == [ + "*#4*2*0*0239##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0210*3##", + "*#4*2*13*00##", + ] + assert res["events_after"] == res["replies"] + assert 1.2 < res["reply_time_s"] < 1.5 + assert _result(rows, RUN1, "*#4*2*12##")["replies"] == ["*#4*2*12*0235*3##", "*4*1*2##"] + assert _result(rows, RUN1, "*#4*2*14##")["replies"] == ["*#4*2*14*0210*3##"] + assert _result(rows, RUN1, "*#4*2*0##")["replies"] == ["*#4*2*0*0239##"] + assert _result(rows, RUN1, "*#4*2*13##")["replies"] == ["*#4*2*13*00##"] + assert _result(rows, RUN1, "*#4*2*19##")["replies"] == ["*#4*2*19*5*0##"] + # the fan-speed read is refused on the valve side in heating season (after the bus timeout) + fan = _result(rows, RUN1, "*#4*2*11##") + assert fan["ack"] is False and fan["reply_time_s"] > 1.8 + # run4: Home Assistant had written 21.0, so both dimensions read 21.0 + assert _result(rows, RUN4, "*#4*2##")["replies"][1] == "*#4*2*12*0210*3##" + assert _result(rows, RUN4, "*#4*2##")["replies"][3] == "*#4*2*14*0210*3##" + + +def test_setpoint_write_mode_3_restores_the_setpoint_in_force(rows: list[dict]) -> None: + """*#4*2*#14*0235*3## is ACKed, dimension 12 follows at once, dimension 14 catches up, the season stays.""" + write = _result(rows, RUN3, "*#4*2*#14*0235*3##") + assert write["ack"] is True and write["reply_time_s"] < 0.2 + assert write["events_after"] == [], "the ACK comes before the thermostat reports" + assert _evt_between(rows, RUN3, "*#4*2*#14*0235*3##") == ["*#4*2*12*0235*3##", "*4*1*2##", "*#4*2*0*0239##"] + evt = [r["frame"] for r in _evt(rows, RUN3)] + assert evt.index("*#4*2*12*0235*3##") < evt.index("*#4*2*14*0235*3##") + after = _result(rows, RUN3, "*#4*2##") + assert after["replies"] == [ + "*#4*2*0*0239##", + "*#4*2*12*0235*3##", + "*4*1*2##", + "*#4*2*14*0235*3##", + "*#4*2*13*00##", + ] + # two hours later the plant still reports 23.5 on both dimensions + later = _result(rows, RUN4B, "*#4*2##") + assert later["replies"][1] == "*#4*2*12*0235*3##" and later["replies"][3] == "*#4*2*14*0235*3##" + + +def test_actuator_status_dimension_20_per_zone_and_all_zones(rows: list[dict]) -> None: + """*#4*2*20## is followed by two actuator frames on evt; *#4*#0*20## returns both on cmd in 2.1 s.""" + zone = _result(rows, RUN1, "*#4*2*20##") + assert zone["ack"] is True and zone["reply_time_s"] < 0.2 + assert zone["replies"] == ["*#4*2#1*20*0##"] + assert zone["events_after"] == ["*#4*2#1*20*0##"], "actuator 1 arrives before the ACK" + assert _evt_between(rows, RUN1, "*#4*2*20##") == ["*#4*2#1*20*0##", "*#4*2#2*20*5##"], "actuator 2 right after it" + all_zones = _result(rows, RUN1, "*#4*#0*20##") + assert all_zones["ack"] is True and 2.0 < all_zones["reply_time_s"] < 2.3 + assert all_zones["replies"] == ["*#4*2#1*20*0##", "*#4*2#2*20*5##"] + for raw, log in (("*#4*2#1*20*0##", "Zone 2's actuator 1 is off."), ("*#4*2#2*20*5##", "Zone 2's fan is off.")): + msg = OWNMessage.parse(raw) + assert msg is not None and msg.who == 4 and msg.zone == 2 + assert msg.is_active() is False and msg.human_readable_log == log + # the per-zone 1 / 23 / 40 / 41 forms are forwarded to the bus and time out (no such zones) + for frame in ("*#4*1*20##", "*#4*1#1*20##", "*#4*1*0##", "*#4*40*19##"): + res = _result(rows, RUN1, frame) + assert res["ack"] is False and res["reply_time_s"] > 1.8, frame + + +def test_actuator_frames_follow_every_zone_poll_while_the_fixed_integration_ran(rows: list[dict]) -> None: + """run6: after each *#4*2## reply burst the two actuator frames arrive within 3 s (one *#4*#0*20##).""" + evt = _evt(rows, RUN6) + polls = [r["t"] for r in evt if r["frame"] == "*#4*2*13*00##"] + assert len(polls) == 7 + for t in polls: + following = [r["frame"] for r in evt if t < r["t"] <= t + 3.5] + assert {"*#4*2#1*20*0##", "*#4*2#2*20*5##"} <= set(following), t + # the manual *#4*2*20## of the local Home Assistant session (run7) + manual = [r["frame"] for r in _evt(rows, RUN7) if r["frame"].startswith("*#4*2#")] + assert manual == ["*#4*2#1*20*0##", "*#4*2#2*20*5##", "*#4*2#2*20*5##"] + # a '#'-prefixed dimension 20 write echo was seen once in run6 and parses as a command + hashed = [r["frame"] for r in evt if r["frame"] == "*#4*2#1*#20*0##"] + assert len(hashed) == 1 and OWNMessage.parse(hashed[0]) is not None + + +def test_humidity_general_sweep_and_per_zone(rows: list[dict]) -> None: + """*#4*0*60## is answered by zone 2 after 2.1 s; *#4*2*60## in 0.14 s; the thermostat pushes it too.""" + sweep = _result(rows, RUN2, "*#4*0*60##") + assert sweep["ack"] is True and 2.0 < sweep["reply_time_s"] < 2.3 + assert sweep["replies"] == ["*#4*2*60*39##"] + zone = _result(rows, RUN2, "*#4*2*60##") + assert zone["ack"] is True and zone["reply_time_s"] < 0.2 + assert zone["replies"] == ["*#4*2*60*39##"] + spontaneous = [r for r in _evt(rows, RUN6) if r["frame"].startswith("*#4*2*60*")] + assert len(spontaneous) == 3 and all(r["frame"] == "*#4*2*60*38##" for r in spontaneous) + msg = OWNMessage.parse("*#4*2*60*39##") + assert msg is not None and msg.zone == 2 and msg.main_humidity == 39.0 + + +def test_central_unit_forms_are_refused_on_a_plant_without_one(rows: list[dict]) -> None: + """*#4*#2##, *#4*#2*14##, *#4*#0##, *#4*#0*14## time out on the bus; *#4*0## is refused locally.""" + for frame in ("*#4*#2##", "*#4*#2*14##", "*#4*#0##", "*#4*#0*14##"): + res = _result(rows, RUN1, frame) + assert res["ack"] is False and res["replies"] == [] and 2.0 < res["reply_time_s"] < 2.3, frame + general = _result(rows, RUN1, "*#4*0##") + assert general["ack"] is False and general["reply_time_s"] < 0.05 + report = _result(rows, RUN5, "*#4*#0*0*0215##") + assert report["ack"] is False and report["reply_time_s"] > 2.0 and report["events_after"] == [] + + +# --------------------------------------------------------------- refused WHOs and WHO 18 + + +def test_every_who16_request_is_refused_locally(rows: list[dict]) -> None: + """All 18 WHO 16 forms NACK in under 10 ms: the F461 has no sound-diffusion handler.""" + who16 = [r for r in _results(rows, RUN1) if r["frame"].startswith("*#16*")] + assert len(who16) == 18 + assert {r["frame"] for r in who16} >= {"*#16*0##", "*#16*0*5##", "*#16*101##", "*#16*101*5##", "*#16*21*1##"} + assert all(r["ack"] is False and r["replies"] == [] and r["reply_time_s"] <= 0.01 for r in who16) + for frame in ("*#5*0##", "*#5*#1##", "*#9*0##", "*#9*1##", "*#17*0##", "*#17*1##", "*#14*06##", "*#8*0##", "*#3*0##"): + res = _result(rows, RUN1, frame) + assert res["ack"] is False and res["reply_time_s"] < 0.05, frame + # WHO 22 is forwarded to the bus and times out (no sound devices): 1.8-2.9 s + who22 = [r for r in _results(rows, RUN1) if r["frame"].startswith("*#22*")] + assert len(who22) == 13 and all(not r["ack"] and 1.8 < r["reply_time_s"] < 2.9 for r in who22) + assert 1.9 < _result(rows, RUN2, "*#22*3#1#1*1##")["reply_time_s"] < 2.1 + + +def test_who18_energy_requests_on_a_plant_without_a_meter(rows: list[dict]) -> None: + """Meter reads are ACKed with no data after the bus timeout; the dimension 1200 read is refused.""" + for frame, lo, hi in (("*#18*51*51##", 0.5, 0.7), ("*#18*51*113##", 0.7, 0.9), ("*#18*51*54##", 0.7, 0.9)): + res = _result(rows, RUN1, frame) + assert res["ack"] is True and res["replies"] == [] and lo < res["reply_time_s"] < hi, frame + stream = _result(rows, RUN1, "*#18*51*1200##") + assert stream["ack"] is False and stream["reply_time_s"] < 0.05 + report = _result(rows, RUN5, "*#18*51*113*100##") + assert report["ack"] is True and report["events_after"] == [], "the report form is accepted but not echoed" + + +# --------------------------------------------------------------- WHO 2 cover 05 and the general stop + + +def test_general_stop_was_seen_exactly_once(frames: list[dict]) -> None: + """*2*0*0## (one Home Assistant general stop) is the only general WHO 2 frame of the capture.""" + general = [f for f in frames if f["raw"] == "*2*0*0##"] + assert len(general) == 1 and general[0]["run"] == RUN6 + msg = OWNMessage.parse("*2*0*0##") + assert msg is not None and msg.who == 2 and msg.where == "0" + assert not any(f["raw"].startswith("*2*") and f["raw"].endswith("*0##") and f["raw"] != "*2*0*0##" for f in frames) + + +def test_f411_2_shutter_05_stops_itself_after_each_run(frames: list[dict]) -> None: + """Every run starts with the gateway's pre-move STOP burst; a full run ends 5.1-5.9 s later on the actuator's own stop.""" + starts = [] + for run in (RUN6, RUN7): + evt = [f for f in frames if f["run"] == run] + for i, f in enumerate(evt): + if f["raw"] in ("*2*1*05##", "*2*2*05##"): + translation = f"*2*1000#{f['raw'][3]}*05##" + # the three frames before the move status: stop translation, stop status, move translation + # (the gateway delivers the translation echoes and the actuator statuses in varying order) + assert sorted(x["raw"] for x in evt[i - 3 : i]) == sorted(["*2*1000#0*05##", "*2*0*05##", translation]), (run, f["timestamp"]) + nxt = next(x for x in evt[i + 1 :] if x["raw"].startswith("*2*")) + starts.append((run, f["raw"], round(nxt["timestamp"] - f["timestamp"], 3), nxt["raw"])) + assert len(starts) == 11 + full_runs = [s for s in starts if s[3] == "*2*0*05##"] + assert len(full_runs) == 9 + assert all(5.1 <= s[2] <= 5.9 for s in full_runs), full_runs + # two runs (set_cover_position) were stopped by Home Assistant: after 2.45 s and 3.65 s + partial = [s for s in starts if s[3] != "*2*0*05##"] + assert partial == [ + (RUN6, "*2*2*05##", 3.654, "*2*1000#0*05##"), + (RUN7, "*2*1*05##", 2.446, "*2*1000#0*05##"), + ] + + +def test_cover_05_dimension_reads(rows: list[dict]) -> None: + """The F411/2 reports no position: dimension 10 ACKs with nothing, dimension 11 is refused.""" + assert _result(rows, RUN1, "*#2*05##")["replies"] == ["*2*0*05##"] + dim10 = _result(rows, RUN1, "*#2*05*10##") + assert dim10["ack"] is True and dim10["replies"] == [] and dim10["reply_time_s"] > 1.0 + assert _result(rows, RUN1, "*#2*05*11##")["ack"] is False + assert _result(rows, RUN1, "*#2*0##")["replies"] == ["*2*0*05##"] + + +# --------------------------------------------------------------- the light pulse of 20:42:07 UTC + + +def test_light_pulse_during_run1_was_not_reproduced(rows: list[dict]) -> None: + """A 100 ms pulse of 07 and 06 arrived during a locally refused read; re-sending the same reads showed nothing.""" + pulse = _result(rows, RUN1, "*#3*#1##") + assert pulse["ack"] is False and pulse["reply_time_s"] < 0.01 and pulse["events_after"] == [] + assert _evt_between(rows, RUN1, "*#3*#1##") == ["*1*1*07##", "*1*0*07##", "*1*1*06##"] + for run in (RUN8, RUN8B): + for res in _results(rows, run): + assert res["ack"] is False and res["events_after"] == [], res + assert [r["frame"] for r in _results(rows, RUN8)] == ["*#25*21##", "*#3*#1##", "*#25*21##"] + assert not _evt(rows, RUN8) and not _evt(rows, RUN8B) + + +# --------------------------------------------------------------- entity replays + + +@pytest.mark.asyncio +async def test_replay_run7_lights_and_shutter_through_the_entities(hass: HomeAssistant, rows: list[dict]) -> None: + """The local Home Assistant session: 06 on / off, 07 on / off, three shutter runs with hardware stops.""" + entities = await _setup_plant(hass, _gateway()) + light_06, light_07, shutter = entities["06"], entities["07"], entities["05"] + seen: list[tuple[str, bool | None, bool, bool]] = [] + for r in _evt(rows, RUN7): + msg = OWNMessage.parse(r["frame"]) + assert msg is not None + if getattr(msg, "is_translation", False): + continue + who, where = getattr(msg, "who", None), getattr(msg, "where", None) + if who == 1 and where in ("06", "07"): + entities[where].handle_event(msg) + seen.append((r["frame"], light_06.is_on, light_07.is_on is True, False)) + elif who == 2 and where == "05": + shutter.handle_event(msg) + seen.append((r["frame"], None, shutter.is_closing is True, shutter.is_opening is True)) + light_states = [(f, on06, on07) for f, on06, on07, _ in seen if f.startswith("*1*")] + assert light_states == [ + ("*1*0*06##", False, False), + ("*1*1*06##", True, False), + ("*1*0*06##", False, False), + ("*1*1*07##", False, True), + ("*1*0*07##", False, False), + ("*1*0*07##", False, False), + ] + cover_states = [(f, closing, opening) for f, _, closing, opening in seen if f.startswith("*2*")] + assert cover_states == [ + ("*2*0*05##", False, False), + ("*2*2*05##", True, False), + ("*2*0*05##", False, False), + ("*2*0*05##", False, False), + ("*2*1*05##", False, True), + ("*2*0*05##", False, False), + ("*2*0*05##", False, False), + ("*2*2*05##", True, False), + ("*2*0*05##", False, False), + ] + assert light_06.is_on is False and light_07.is_on is False + assert shutter.is_closing is False and shutter.is_opening is False + + +@pytest.mark.asyncio +async def test_replay_run4b_zone_2_through_the_climate_entity(hass: HomeAssistant, rows: list[dict]) -> None: + """The final reads: 24.1 degrees measured, 23.5 in force and commanded, heating season, valve off.""" + entities = await _setup_plant(hass, _gateway()) + zone2 = entities["2"] + for r in _evt(rows, RUN4B): + msg = OWNMessage.parse(r["frame"]) + assert msg is not None + if getattr(msg, "who", None) == 4 and getattr(msg, "zone", None) == 2: + zone2.handle_event(msg) + assert zone2.current_temperature == 24.1 + assert zone2.target_temperature == 23.5 + assert zone2.hvac_mode == HVACMode.HEAT + assert zone2.extra_state_attributes["season"] == "heating" + assert zone2.extra_state_attributes["local_offset"] == 0 diff --git a/tests/test_myhomeserver1_live_2026_10_24_trace.py b/tests/test_myhomeserver1_live_2026_10_24_trace.py new file mode 100644 index 000000000..05ad609e4 --- /dev/null +++ b/tests/test_myhomeserver1_live_2026_10_24_trace.py @@ -0,0 +1,319 @@ +"""Verification tests for the 2026-10-24 live MyHomeServer1 (firmware 3.87.13) status-read capture. + +Fixture: + tests/fixtures/traces/myhomeserver1_live_2026-10-24/myhome_trace_MyHomeServer1_live_2026-10-24.json + +A second gateway family for the facts behind OWNd #137, #139, #140, #141, #142 and MyHOME +#791-#794, #798: a large home plant (WHO 4 zones 35-70, about 100 WHO 1 points including +four-digit area-0 points 0010-0015). Only status reads were sent. Every test pins a fact of the +trace itself, so the module passes with the pinned OWNd. The firmware oracle emulates +MyHomeServer1 2.82.06; this unit runs 3.87.13, and *#13**12## answers a real MAC here (synthetic +in the fixture) where the emulated 2.82.06 returns zeros (oracle PR #59). +""" + +from __future__ import annotations + +import json +import re +from pathlib import Path + +import pytest +from OWNd.message import OWNCommand, OWNMessage + +MAC = "00:03:50:00:20:24" +MAC_FRAME = "*#13**12*0*3*80*0*32*36##" +MODEL_NAME_FRAME = "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##" +FIXTURE = ( + Path(__file__).resolve().parent + / "fixtures" + / "traces" + / "myhomeserver1_live_2026-10-24" + / "myhome_trace_MyHomeServer1_live_2026-10-24.json" +) + +RUN1 = "run1_identify" +RUN2 = "run2_reads_thermo_sound_alarm_lights" +RUN3 = "run3_reads_lights_addresses_humidity" + + +@pytest.fixture(scope="module") +def trace_payload() -> dict: + assert FIXTURE.is_file(), FIXTURE + return json.loads(FIXTURE.read_text(encoding="utf-8")) + + +@pytest.fixture(scope="module") +def rows(trace_payload: dict) -> list[dict]: + return trace_payload["rows"] + + +@pytest.fixture(scope="module") +def frames(trace_payload: dict) -> list[dict]: + return trace_payload["frames"] + + +def _result(rows: list[dict], run: str, frame: str) -> dict: + found = [r for r in rows if r["dir"] == "result" and r["run"] == run and r["frame"] == frame] + assert len(found) == 1, (run, frame, len(found)) + return found[0] + + +def _evt(rows: list[dict], run: str) -> list[dict]: + return [r for r in rows if r["run"] == run and r["dir"] == "rx" and r["session"] == "evt"] + + +def _evt_between(rows: list[dict], run: str, frame: str) -> list[str]: + """Event-session frames from the request ``frame`` of ``run`` until the next request of that run.""" + run_rows = [r for r in rows if r["run"] == run] + start = next(i for i, r in enumerate(run_rows) if r["dir"] == "tx" and r["frame"] == frame) + out: list[str] = [] + for r in run_rows[start + 1 :]: + if r["dir"] == "tx": + break + if r["dir"] == "rx" and r["session"] == "evt": + out.append(r["frame"]) + return out + + +# --------------------------------------------------------------- schema, privacy, parsing + + +def test_schema_runs_and_synthetic_identity(trace_payload: dict, rows: list[dict], frames: list[dict]) -> None: + gw = trace_payload["gateway"] + assert gw["model"] == "MyHomeServer1" + assert gw["firmware"] == "3.87.13" + assert gw["ip"] == "192.0.2.9" + assert gw["mac"] == MAC + assert gw["identification"] == { + "model": "MyHomeServer1", + "who13_code": "200", + "who13_model_name": "MyHomeServer1", + "who1013_code": "67", + } + assert "2.82.06" in gw["oracle_note"] + assert trace_payload["capture"]["kind"] == "derived_trace_archive" + assert [r["run"] for r in trace_payload["capture"]["runs"]] == [RUN1, RUN2, RUN3] + ts = [f["timestamp"] for f in frames] + assert ts == sorted(ts) and all(a["t"] <= b["t"] for a, b in zip(rows, rows[1:], strict=False)) + assert trace_payload["capture"]["window"]["frames"] == len(frames) == 376 + assert trace_payload["capture"]["window"]["rows"] == len(rows) == 613 + assert all(f["direction"] == "rx" and f["session"] == "evt" for f in frames) + assert [r["frame"] for r in rows if r["dir"] == "rx" and r["session"] == "evt"] == [f["raw"] for f in frames] + # only status reads were sent + assert all(r["frame"].startswith("*#") for r in rows if r["dir"] == "tx") + text = json.dumps(trace_payload) + # every MAC-like string and every WHO 13 dimension 12 frame in the archive is the synthetic one + assert set(re.findall(r"(?:[0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}", text)) == {MAC} + assert {f["raw"] for f in frames if f["raw"].startswith("*#13**12*")} <= {MAC_FRAME} + assert "192*168" not in text and "192.168" not in text + assert MAC_FRAME in text + assert "00:03:50:00:10:23" not in text, "a different synthetic MAC than the F461 fixtures" + + +def test_every_frame_parses_in_ownd_except_the_pending_model_name_decoder(rows: list[dict], frames: list[dict]) -> None: + for item in frames: + parsed = OWNMessage.parse(item["raw"]) + if item["raw"] == MODEL_NAME_FRAME: + continue # no decoder in the pinned OWNd (OWNd#139); it must not raise + assert parsed is not None, f"Failed to parse evt frame: {item['raw']}" + for r in rows: + if r["dir"] == "tx": + assert OWNCommand.parse(r["frame"]) is not None or OWNMessage.parse(r["frame"]) is not None, r + elif r["dir"] == "rx" and r["frame"] not in ("*#*1##", "*#*0##", MODEL_NAME_FRAME): + assert OWNMessage.parse(r["frame"]) is not None, r + + +def test_result_rows_are_consistent_with_their_tx_and_cmd_rx_rows(rows: list[dict]) -> None: + for run in (RUN1, RUN2, RUN3): + run_rows = [r for r in rows if r["run"] == run] + for i, r in enumerate(run_rows): + if r["dir"] != "result": + continue + tx_i = next(j for j in range(i - 1, -1, -1) if run_rows[j]["dir"] == "tx") + tx = run_rows[tx_i] + assert tx["frame"] == r["frame"] + assert tx["t"] <= r["t"] + assert abs((r["t"] - tx["t"]) - r["reply_time_s"]) < 0.002 + # the command-session replies sit right after their request, at its t, flagged as estimated + cmd_rx = [x for x in run_rows[tx_i + 1 : i] if x["dir"] == "rx" and x["session"] == "cmd"] + assert [x["frame"] for x in cmd_rx] == [*r["replies"], "*#*1##" if r["ack"] else "*#*0##"] + assert all(x["t"] == tx["t"] and x["t_estimated"] is True for x in cmd_rx) + assert run_rows[tx_i + 1 : tx_i + 1 + len(cmd_rx)] == cmd_rx + # events_after holds exactly the event-session frames that arrived while the request was pending + pending = [x["frame"] for x in run_rows[tx_i + 1 : i] if x["dir"] == "rx" and x["session"] == "evt" and x["t"] <= r["t"]] + assert r["events_after"] == pending + + +# --------------------------------------------------------------- WHO 13 / 1013 identification + + +def test_gateway_identification_firmware_3_87_13_and_model_name(rows: list[dict], frames: list[dict]) -> None: + assert _result(rows, RUN1, "*#13**15##")["replies"] == ["*#13**15*200##"] + assert _result(rows, RUN1, "*#13**16##")["replies"] == ["*#13**16*3*87*13##"] + assert _result(rows, RUN1, "*#1013**1##")["replies"] == ["*#1013**1*67*15*5*0##"] + assert _result(rows, RUN1, "*#13**1##")["replies"] == ["*#13**1*06*24*10*2026##"] + datetime_reply = _result(rows, RUN1, "*#13**22##")["replies"] + assert len(datetime_reply) == 1 and re.fullmatch(r"\*#13\*\*22\*\d\d\*\d\d\*\d\d\*999\*06\*24\*10\*2026##", datetime_reply[0]) + # the MAC is answered (a real one on 3.87.13, synthetic here; the emulated 2.82.06 answers zeros) + mac = _result(rows, RUN1, "*#13**12##") + assert mac["ack"] is True and mac["replies"] == [MAC_FRAME] and MAC_FRAME in mac["events_after"] + msg = OWNMessage.parse(MAC_FRAME) + assert msg is not None and msg.human_readable_log == f"Gateway's MAC address is: {MAC}." + # dimension 27: the model name as ASCII codes, no decoder in the pinned OWNd + res = _result(rows, RUN1, "*#13**27##") + assert res["ack"] is True and res["replies"] == [MODEL_NAME_FRAME] and MODEL_NAME_FRAME in res["events_after"] + codes = MODEL_NAME_FRAME[len("*#13**27*") : -2].split("#") + assert "".join(chr(int(c)) for c in codes) == "MyHomeServer1" + assert [f["raw"] for f in frames if f["raw"].startswith("*#13**27*")] == [MODEL_NAME_FRAME] + # every reply of run1 is also delivered on the event session; the plant's own WHO 4 traffic runs in between + for r in [x for x in rows if x["run"] == RUN1 and x["dir"] == "result"]: + assert r["ack"] is True and r["reply_time_s"] < 0.2 and r["replies"][0] in r["events_after"], r["frame"] + own_traffic = [r["frame"] for r in _evt(rows, RUN1) if r["frame"].startswith("*#4*")] + assert len(own_traffic) == 106 + + +def test_who13_time_request_is_echoed_on_the_event_session(rows: list[dict]) -> None: + for run, reply in ((RUN1, "*#13**0*16*19*49*999##"), (RUN3, "*#13**0*16*22*38*999##")): + res = _result(rows, run, "*#13**0##") + assert res["ack"] is True and res["reply_time_s"] < 0.1 + assert res["replies"] == [reply] and reply in res["events_after"] + echo = [r for r in _evt(rows, run) if r["frame"] == reply] + assert len(echo) == 1 and echo[0]["ownd_class"] == "OWNGatewayEvent" + + +# --------------------------------------------------------------- WHO 4 thermoregulation + + +def test_general_and_central_unit_forms(rows: list[dict]) -> None: + """*#4*0## is refused at once; *#4*#0## and *#4*#0*14## are forwarded, unanswered and retried once.""" + general = _result(rows, RUN3, "*#4*0##") + assert general["ack"] is False and general["reply_time_s"] < 0.1 and general["replies"] == [] + for frame in ("*#4*#0##", "*#4*#0*14##"): + res = _result(rows, RUN2, frame) + assert res["ack"] is False and res["replies"] == [] and res["events_after"] == [] + assert 4.0 < res["reply_time_s"] < 4.5, frame + assert [r for r in rows if r["run"] == RUN2 and r["dir"] == "tx" and r["frame"] == frame][0]["is_status_request"] is False + + +def test_zone_35_status_reply_order_and_dimensions(rows: list[dict]) -> None: + """*#4*35## answers dimension 0, 12, the season, 14, 13 in that order, like the F461.""" + res = _result(rows, RUN2, "*#4*35##") + assert res["ack"] is True and 1.2 < res["reply_time_s"] < 1.5 + assert res["replies"] == [ + "*#4*35*0*0231##", + "*#4*35*12*0200*3##", + "*4*1*35##", + "*#4*35*14*0200*3##", + "*#4*35*13*00##", + ] + assert res["events_after"] == res["replies"] + assert _result(rows, RUN2, "*#4*35*12##")["replies"] == ["*#4*35*12*0200*3##", "*4*1*35##"] + assert _result(rows, RUN2, "*#4*35*14##")["replies"] == ["*#4*35*14*0200*3##"] + season = OWNMessage.parse("*4*1*35##") + assert season is not None and season.who == 4 and season.zone == 35 + + +def test_actuator_status_per_zone_and_all_zones(rows: list[dict]) -> None: + """*#4*35*20## -> *#4*35#1*20*0##; *#4*#0*20## is ACKed with 44 actuator frames, zone 0 included.""" + zone = _result(rows, RUN2, "*#4*35*20##") + assert zone["ack"] is True and zone["reply_time_s"] < 0.3 + assert zone["replies"] == ["*#4*35#1*20*0##"] and zone["events_after"] == ["*#4*35#1*20*0##"] + all_zones = _result(rows, RUN2, "*#4*#0*20##") + assert all_zones["ack"] is True and all_zones["reply_time_s"] < 0.5 + actuators = _evt_between(rows, RUN2, "*#4*#0*20##") + assert len(all_zones["replies"]) == 8 and set(all_zones["replies"]) <= set(actuators) + assert all_zones["events_after"] and all_zones["events_after"] == actuators[: len(all_zones["events_after"])] + assert len(actuators) == 43 and len(set(actuators)) == 43 + assert all(re.fullmatch(r"\*#4\*\d+#[1-4]\*20\*[05]##", f) for f in actuators) + assert {f for f in actuators if f.startswith("*#4*0#")} == { + "*#4*0#1*20*0##", + "*#4*0#2*20*0##", + "*#4*0#3*20*0##", + "*#4*0#4*20*0##", + } + fan_coils = sorted(f for f in actuators if "#2*20*5##" in f) + assert fan_coils == ["*#4*47#2*20*5##", "*#4*48#2*20*5##", "*#4*57#2*20*5##", "*#4*60#2*20*5##", "*#4*70#2*20*5##"] + assert len({f for f in actuators if "#1*20*0##" in f and not f.startswith("*#4*0#")}) == 34 + for raw in ("*#4*0#1*20*0##", "*#4*35#1*20*0##", "*#4*47#2*20*5##"): + msg = OWNMessage.parse(raw) + assert msg is not None and msg.who == 4 and msg.is_active() is False + + +def test_humidity_per_zone_only_where_a_probe_exists_and_general_sweep(rows: list[dict]) -> None: + """*#4*35*60## times out (no probe); *#4*0*60## answers 17 zones; *#4*39*60## answers directly.""" + none = _result(rows, RUN2, "*#4*35*60##") + assert none["ack"] is False and 2.0 < none["reply_time_s"] < 2.3 and none["events_after"] == [] + sweep = _result(rows, RUN2, "*#4*0*60##") + assert sweep["ack"] is True and sweep["reply_time_s"] < 0.6 + humid = _evt_between(rows, RUN2, "*#4*0*60##") + assert sweep["events_after"] == humid[: len(sweep["events_after"])] + assert len(humid) == 17 and len(set(humid)) == 17 + assert all(re.fullmatch(r"\*#4\*\d+\*60\*\d+##", f) for f in humid) + assert sorted(int(f.split("*")[2]) for f in humid) == [39, 40, 41, 42, 43, 47, 48, 53, 55, 57, 58, 59, 60, 61, 68, 69, 70] + assert set(sweep["replies"]) <= set(humid) and len(sweep["replies"]) == 8 + zone = _result(rows, RUN3, "*#4*39*60##") + assert zone["ack"] is True and zone["reply_time_s"] < 0.3 and zone["replies"] == ["*#4*39*60*51##"] + msg = OWNMessage.parse("*#4*39*60*51##") + assert msg is not None and msg.zone == 39 and msg.main_humidity == 51.0 + + +def test_the_plant_pushes_setpoints_as_dimension_7_and_temperatures(frames: list[dict]) -> None: + """The home plant broadcasts *#4*Z*7*1*1*T## setpoints and *#4*Z*0*T## temperatures on its own.""" + raws = [f["raw"] for f in frames] + dim7 = {r for r in raws if re.fullmatch(r"\*#4\*\d+\*7\*1\*1\*\d{4}##", r)} + assert len(dim7) >= 30 and "*#4*35*7*1*1*0200##" in dim7 + dim0 = {r for r in raws if re.fullmatch(r"\*#4\*\d+\*0\*\d{4}##", r)} + assert len(dim0) == 33 + zones = sorted({int(r.split("*")[2]) for r in dim7 | dim0}) + assert zones[0] == 35 and zones[-1] == 70 + for raw in ("*#4*35*7*1*1*0200##", "*#4*35*0*0231##", "*#4*53*5*0##"): + assert OWNMessage.parse(raw) is not None, raw + + +# --------------------------------------------------------------- WHO 16 / WHO 5 refused + + +def test_who16_and_who5_requests_are_refused_locally(rows: list[dict]) -> None: + for frame in ("*#16*0*5##", "*#16*101*5##"): + res = _result(rows, RUN2, frame) + assert res["ack"] is False and res["reply_time_s"] <= 0.005 and res["replies"] == [], frame + alarm = _result(rows, RUN2, "*#5*0##") + assert alarm["ack"] is False and alarm["reply_time_s"] <= 0.01 and alarm["events_after"] == [] + + +# --------------------------------------------------------------- WHO 1 / WHO 2 general status and address spellings + + +def test_general_light_status_lists_four_digit_and_two_digit_points(rows: list[dict]) -> None: + """*#1*0## answers about 100 point statuses (74 distinct points) in 4.7 s; *#2*0## ACKs with no data.""" + res = _result(rows, RUN2, "*#1*0##") + assert res["ack"] is True and 4.5 < res["reply_time_s"] < 5.0 + assert len(res["replies"]) == 100 + points = {r.split("*")[3][:-2] for r in res["replies"]} + assert len(points) == 74 + assert all(re.fullmatch(r"\*1\*[01]\*\d{2,4}##", r) for r in res["replies"]) + assert {"0010", "0011", "0012", "0013", "0014", "0015"} <= points, "four-digit area-0 points" + assert {"0111", "0215", "0515"} <= points, "four-digit area 1-5 points" + assert {"11", "14", "69"} <= points, "two-digit points" + assert "0001" not in points and "0004" not in points and "01" not in points and "04" not in points + cover = _result(rows, RUN2, "*#2*0##") + assert cover["ack"] is True and cover["replies"] == [] and 4.0 < cover["reply_time_s"] < 4.6 + assert cover["events_after"] and all(f.startswith("*1*") for f in cover["events_after"]) + + +def test_four_digit_area0_points_are_devices_distinct_from_the_two_digit_ones(rows: list[dict]) -> None: + """0014 and 14 are two devices; 0010 exists and 10 does not; 0001 / 0004 are refused at once.""" + assert _result(rows, RUN3, "*#1*0014##")["replies"] == ["*1*0*0014##"] + assert _result(rows, RUN3, "*#1*14##")["replies"] == ["*1*0*14##"] + assert _result(rows, RUN3, "*#1*0010##")["replies"] == ["*1*0*0010##"] + ten = _result(rows, RUN3, "*#1*10##") + assert ten["ack"] is False and 1.9 < ten["reply_time_s"] < 2.2 + for frame, limit in (("*#1*0001##", 0.01), ("*#1*0004##", 0.02)): + res = _result(rows, RUN3, frame) + assert res["ack"] is False and res["reply_time_s"] <= limit and res["events_after"] == [], frame + for frame in ("*#1*01##", "*#1*04##"): + res = _result(rows, RUN3, frame) + assert res["ack"] is False and 1.9 < res["reply_time_s"] < 2.2, frame + for raw, where in (("*1*0*0014##", "0014"), ("*1*0*14##", "14"), ("*1*0*0010##", "0010")): + msg = OWNMessage.parse(raw) + assert msg is not None and msg.who == 1 and msg.where == where diff --git a/tests/test_trace_oracle_validation.py b/tests/test_trace_oracle_validation.py index 6e22577b9..9ac37a28d 100644 --- a/tests/test_trace_oracle_validation.py +++ b/tests/test_trace_oracle_validation.py @@ -47,6 +47,124 @@ }) +# Requests sent to a physical gateway in a MyHOME capture for which the firmware oracle +# (results/mcp_index.json at 53f9514, mirrored in tests/golden/firmware_oracle.json) has no +# stimulus at all - not even a canonical form of it - so tier 1 cannot ask for a verdict. +# Each entry names the capture and what the live gateway answered, so the list documents +# the gap instead of hiding it. An entry must be present in the corpus and absent from the +# oracle; once the oracle grows a verdict for a frame, the entry must go (test below). +PHYSICAL_ONLY_TX_FRAMES: dict[str, str] = { + # --- F461 2.0.11, f461_live_2026-10-15 (lights 01 / 04, zone 2) + "*#0*0##": "F461 2026-10-15: NACK (no scenario module)", + "*#1*01*#2*0*0*5##": "F461 2026-10-15: ACK (dimension 2 write on a relay, ignored)", + "*#1*01*2##": "F461 2026-10-15: ACK *#1*01*2*0*0*0##", + "*#1*04*#2*0*0*5##": "F461 2026-10-15: ACK (dimension 2 write on a relay, ignored)", + "*#1*04*2##": "F461 2026-10-15: ACK *#1*04*2*0*0*0##", + "*#1001*0##": "F461 2026-10-15: NACK", + "*#1004*2##": "F461 2026-10-15: NACK", + "*#13**13##": "F461 2026-10-15: NACK", + "*#13**17##": "F461 2026-10-15: ACK *#13**17*4*2*0##", + "*#13*0*0##": "F461 2026-10-15: NACK (WHERE 0 is not a gateway address)", + "*#15*0##": "F461 2026-10-15: NACK (no CEN handler)", + "*#18*0##": "F461 2026-10-15: NACK", + "*#22*0##": "F461 2026-10-15: NACK", + "*#4*#0*22##": "F461 2026-10-15: NACK, then the gateway rebooted (dimension 22 crash)", + "*#4*2*#30*25*12*2026##": "F461 2026-10-15: ACK (holiday end date write, no effect)", + "*#4*2*#31*10*30##": "F461 2026-10-15: ACK (holiday end time write, no effect)", + "*#4*2*#32*02*00##": "F461 2026-10-15: ACK (timed manual write, no effect)", + "*#4*2*1##": "F461 2026-10-15: NACK", + "*#4*2*13#1##": "F461 2026-10-15: NACK in run1, ACK *#4*2*13*00## in run3", + "*#4*2*15##": "F461 2026-10-15: NACK (no external probe)", + "*#4*2*15#1##": "F461 2026-10-15: NACK (no external probe)", + "*#4*2*17##": "F461 2026-10-15: NACK", + "*#4*2*2##": "F461 2026-10-15: NACK in run1, ACK *#4*2*2*0350## in run3", + "*#4*2*21##": "F461 2026-10-15: NACK", + "*#4*2*22##": "F461 2026-10-15: NACK in 12 ms, then the gateway rebooted (dimension 22 crash)", + "*#4*2*29##": "F461 2026-10-15: NACK", + "*#4*2*3##": "F461 2026-10-15: NACK in run1, ACK *#4*2*3*0070## in run3", + "*#4*2*30##": "F461 2026-10-15: NACK", + "*#4*2*31##": "F461 2026-10-15: NACK", + "*#4*2*32##": "F461 2026-10-15: NACK", + "*#4*2*4##": "F461 2026-10-15: NACK in run1, ACK *#4*2*4*0## in run3", + "*#4*2*6##": "F461 2026-10-15: NACK in run1, ACK *#4*2*6*0## in run3", + "*#4*2*8##": "F461 2026-10-15: NACK", + "*#6*0##": "F461 2026-10-15: NACK (no video door entry)", + "*1*11*01##": "F461 2026-10-15: ACK (timer 1 min on relay 01)", + "*1*11*04##": "F461 2026-10-15: ACK (timer 1 min on relay 04)", + "*1*20*01##": "F461 2026-10-15: ACK (blinking 0.5 s on relay 01)", + "*1*20*04##": "F461 2026-10-15: ACK (blinking 0.5 s on relay 04)", + "*1*30*01##": "F461 2026-10-15: ACK (step up on relay 01)", + "*1*30*04##": "F461 2026-10-15: ACK (step up on relay 04)", + "*1*31*01##": "F461 2026-10-15: ACK (step down on relay 01)", + "*1*31*04##": "F461 2026-10-15: ACK (step down on relay 04)", + "*1*5*01##": "F461 2026-10-15: ACK (dimmer 50 % on a relay, ignored)", + "*1*5*04##": "F461 2026-10-15: ACK (dimmer 50 % on a relay, ignored)", + "*4*302*#0##": "F461 2026-10-15: ACK (central-unit form, no central unit, no effect)", + "*4*302*#2##": "F461 2026-10-15: ACK (central-unit form, no effect on the standalone zone)", + "*4*312#0210#1*#2##": "F461 2026-10-15: ACK (central-unit form, no effect)", + # --- F461 2.0.11, f461_live_2026-10-15 and f461_live_2026-10-18 and f461_live_2026-10-23 + "*#1*#1##": "F461 2026-10-15 / 10-18 / 10-23: ACK, members *1*0*06## *1*0*07## (10-18), no data (10-23)", + "*#13**10##": "F461 2026-10-15 / 10-23: ACK *#13**10*192*0*2*92## (documentation IP)", + "*#13**11##": "F461 2026-10-15 / 10-23: ACK *#13**11*255*255*255*0##", + "*#13**12##": "F461 2026-10-15 / 10-23, MyHomeServer1 3.87.13 2026-10-24: ACK with the MAC (synthetic in the fixtures)", + "*#13**19##": "F461 2026-10-15 / 10-23: ACK *#13**19*0*0*38*54## (uptime)", + "*#4*2*60##": "F461 2026-10-15: NACK in run1, ACK *#4*2*60*34## later; 2026-10-23: ACK *#4*2*60*39## in 143 ms", + "*1*0*#1##": "F461 2026-10-15 / 10-18: ACK (group 1 off)", + "*1*0*0##": "F461 2026-10-15 / 10-18: ACK (general off)", + "*1*1*#1##": "F461 2026-10-15 / 10-18: ACK (group 1 on)", + # --- F461 2.0.11, f461_live_2026-10-18 (PR #750 expose verification) + "*#1*08*1*150*0##": "F461 2026-10-18: NACK in 55 ms (dimension 1 without # is a read on an empty point)", + "*#13**#0*22*51*00*999##": "F461 2026-10-18: ACK (clock set, broadcast on evt)", + "*#13**0*22*51*00*999##": "F461 2026-10-18: ACK *#13**0*22*51*02*999## (parsed as a time read)", + "*#18*51*113*450##": "F461 2026-10-18: ACK in 1.27 s (report form accepted)", + "*#18*51*51*12345##": "F461 2026-10-18: ACK in 1.40 s (report form accepted)", + "*#18*51*54*320##": "F461 2026-10-18: ACK in 1.40 s (report form accepted)", + "*#2*25*10*10*50*0*0##": "F461 2026-10-18: NACK in 55 ms", + "*#4*000*0*0215##": "F461 2026-10-18: NACK after 2.07 s (parsed as a dimension 0 read, no probe)", + "*#4*102*0*0215##": "F461 2026-10-18: NACK after 2.12 s (parsed as a dimension 0 read, no probe)", + "*#4*2*0*0999##": "F461 2026-10-18: ACK *#4*2*0*0249## (parsed as a dimension 0 read)", + "*#4*50*#0*0215##": "F461 2026-10-18: ACK in 155 ms (temperature write to a virtual probe)", + "*#4*50*0*0215##": "F461 2026-10-18: NACK after 2.13 s (parsed as a dimension 0 read, no probe)", + "*1*5*08##": "F461 2026-10-18: NACK after 2.06 s (no actuator at 08)", + # --- F461 2.0.11, f461_who14_live_2026-10-18 + "*#14*0##": "F461 2026-10-18: NACK in 52 ms (WHO 14 has no status request)", + "*#14*05##": "F461 2026-10-18: NACK in 50 ms (WHO 14 has no status request)", + "*#14*06##": "F461 2026-10-18 / 10-23: NACK in 5-51 ms (WHO 14 has no status request)", + "*#14*07##": "F461 2026-10-18: NACK in 51 ms (WHO 14 has no status request)", + "*14*2*07##": "F461 2026-10-18: NACK in 53 ms", + # --- F461 2.0.11, issue_667 (myhome_trace_F461_impulse_intercom_2026-10-19) + "*1*18*06##": "F461 2026-10-19: ACK (impulse on relay 06)", + "*1*18*07##": "F461 2026-10-19: ACK (impulse on relay 07)", + "*6*0*4000##": "F461 2026-10-19: NACK in 54 ms (no video door entry)", + "*6*10*1##": "F461 2026-10-19: NACK in 52 ms (no video door entry)", + "*6*10*4000##": "F461 2026-10-19: NACK in 59 ms (no video door entry)", + "*6*10*4001#2##": "F461 2026-10-19: NACK in 54 ms (no video door entry)", + "*6*22*1##": "F461 2026-10-19: NACK in 52 ms (no video door entry)", + "*6*6*1##": "F461 2026-10-19: NACK in 56 ms (no video door entry)", + "*6*6*4100##": "F461 2026-10-19: NACK in 60 ms (no video door entry)", + "*6*9##": "F461 2026-10-19: NACK in 55 ms (no video door entry)", + "*6*9**##": "F461 2026-10-19: NACK in 59 ms (no video door entry)", + "*8*1#1#4#20*11##": "F461 2026-10-19: NACK in 51 ms (no door entry system)", + "*8*1#1#4*74##": "F461 2026-10-19: NACK in 49 ms (no door entry system)", + "*8*9#1#4*73##": "F461 2026-10-19: NACK in 59 ms (no door entry system)", + # --- F461 2.0.11, f461_live_2026-10-23 (behind OWNd #136-#142 / MyHOME #791-#798) + "*#1*#1*15##": "F461 2026-10-23: ACK in 89 ms, *#1*#1*15## echoed on evt (group aggregate dimension)", + "*#1*06*15##": "F461 2026-10-23: NACK in 5 ms (dimension 15 is group-only)", + "*#13**2##": "F461 2026-10-23: NACK in 6 ms", + "*#13**25##": "F461 2026-10-23: NACK in 5 ms", + "*#13**26##": "F461 2026-10-23: NACK in 6 ms", + "*#13**27##": "F461 2026-10-23: ACK *#13**27*70#52#54#49## (F461); MyHomeServer1 2026-10-24: ACK (MyHomeServer1)", + "*#13**3##": "F461 2026-10-23: NACK in 6 ms", + "*#18*51*113*100##": "F461 2026-10-23: ACK in 1.41 s (report form accepted, not echoed)", + "*#2*05*11##": "F461 2026-10-23: NACK in 6 ms (no position reporting on an F411/2)", + "*#4*#0*0*0215##": "F461 2026-10-23: NACK after 4.13 s (central-unit report form, no central unit)", + "*#4*0*60##": "F461 2026-10-23: ACK *#4*2*60*39## after 2.13 s; MyHomeServer1 2026-10-24: ACK, 17 zones in 0.5 s", + # --- MyHomeServer1 3.87.13, myhomeserver1_live_2026-10-24 (the oracle emulates 2.82.06) + "*#4*35*60##": "MyHomeServer1 2026-10-24: NACK after 2.13 s (no humidity probe in zone 35)", + "*#4*39*60##": "MyHomeServer1 2026-10-24: ACK *#4*39*60*51## in 204 ms", +} + + def _load_oracle() -> dict[str, Any]: if not ORACLE_JSON_PATH.is_file(): pytest.skip("tests/golden/firmware_oracle.json fixture not found") @@ -283,6 +401,18 @@ def _iter_all_trace_records() -> list[tuple[str, str | None, str, str]]: if raw and direction in ("tx", "rx"): records.append((json_path.stem, gw_model, str(direction), str(raw))) + # derived_trace_archive files keep the event-session frames in `frames` and the + # whole session log (tx on the command session, rx on both sessions) in `rows` + archive_rows = payload.get("rows") + if isinstance(archive_rows, list): + for row in archive_rows: + if not isinstance(row, dict): + continue + direction = row.get("dir") + raw = row.get("frame") + if raw and direction in ("tx", "rx"): + records.append((json_path.stem, gw_model, str(direction), str(raw))) + if ENCYCLOPEDIA_EVIDENCE_DIR.is_dir(): for sub in sorted(ENCYCLOPEDIA_EVIDENCE_DIR.iterdir()): manifest_path = sub / "manifest.json" @@ -321,7 +451,7 @@ def test_tier1_trace_tx_canonical_oracle_coverage(): for frame in sorted(deterministic_tx): canonical = canonicalize_trace_tx_frame(frame) - if canonical not in ALL_VERDICTS: + if canonical not in ALL_VERDICTS and frame not in PHYSICAL_ONLY_TX_FRAMES: unmapped.append((frame, canonical)) assert not unmapped, ( @@ -330,6 +460,20 @@ def test_tier1_trace_tx_canonical_oracle_coverage(): ) +def test_tier1_physical_only_frames_are_in_the_corpus_and_not_in_the_oracle(): + """PHYSICAL_ONLY_TX_FRAMES documents a real gap: every entry was sent to a physical gateway + in a capture and has no oracle stimulus; an entry the oracle now covers must be removed.""" + tx_frames = {raw for _src, _gw, direction, raw in ALL_TRACE_RECORDS if direction == "tx"} + stale = sorted(f for f in PHYSICAL_ONLY_TX_FRAMES if f not in tx_frames) + assert not stale, f"not in any capture any more: {stale}" + covered = sorted( + f for f in PHYSICAL_ONLY_TX_FRAMES + if f in ALL_VERDICTS or canonicalize_trace_tx_frame(f) in ALL_VERDICTS + ) + assert not covered, f"the oracle now has a verdict, remove from PHYSICAL_ONLY_TX_FRAMES: {covered}" + assert all(note.strip() for note in PHYSICAL_ONLY_TX_FRAMES.values()) + + @pytest.mark.parametrize( ("query_frame", "product", "expected_emitted_prefix"), [ @@ -515,6 +659,17 @@ def test_tier4_all_trace_rx_frames_parse_cleanly_in_ownd(): # Known malformed synthetic frame in f500_tuner fixture (missing leading '#' on WHO 22 dim 6); # OWNMessage.parse must return None cleanly without raising. known_unparseable_rx = {"*22*2#1*6*2##"} + # Authentic frames whose decoder is not in the pinned OWNd yet: they must not raise and + # they parse to None; once the pin carries the decoder the assertion below fails so the + # entry is removed and the frame is checked like any other. + # - *#13**27*70#52#54#49##: WHO 13 dimension 27 model name ("F461" as ASCII codes) answered + # by a live F461 2.0.11 (tests/fixtures/traces/f461_live_2026-10-23); decoder in OWNd#139. + # - *#13**27*77#121#...#49##: the same dimension, "MyHomeServer1", from a live MyHomeServer1 + # 3.87.13 (tests/fixtures/traces/myhomeserver1_live_2026-10-24). + pending_decoder_rx = { + "*#13**27*70#52#54#49##", + "*#13**27*77#121#72#111#109#101#83#101#114#118#101#114#49##", + } failures: list[str] = [] for frame in sorted(rx_frames): @@ -523,6 +678,10 @@ def test_tier4_all_trace_rx_frames_parse_cleanly_in_ownd(): if frame in known_unparseable_rx: if parsed is not None: failures.append(f"Expected None for malformed frame {frame}, got {parsed!r}") + elif frame in pending_decoder_rx: + assert parsed is None, ( + f"remove {frame} from pending_decoder_rx: the OWNd pin now decodes it ({parsed!r})" + ) elif parsed is None: failures.append(f"OWNMessage.parse returned None for trace rx frame: {frame}") except Exception as exc: # noqa: BLE001