From c3a7c6789690e7ff9936ce0ef090703c37fb5d40 Mon Sep 17 00:00:00 2001 From: thdfw Date: Sun, 5 Jan 2025 13:52:29 +0100 Subject: [PATCH 01/13] Only turn on backup if room is cold and buffer and storage are empty --- gw_spaceheat/actors/home_alone.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gw_spaceheat/actors/home_alone.py b/gw_spaceheat/actors/home_alone.py index 65faef42..cd6c5e7d 100644 --- a/gw_spaceheat/actors/home_alone.py +++ b/gw_spaceheat/actors/home_alone.py @@ -314,8 +314,8 @@ async def main(self): # Update top state if self.top_state == HomeAloneTopState.Normal: - if self.house_is_cold_onpeak(): - self.trigger_house_cold_onpeak_event() + if self.house_is_cold_onpeak() and self.is_buffer_empty(really_empty=True) and self.is_storage_empty: + self.trigger_house_cold_onpeak_event() elif self.top_state == HomeAloneTopState.UsingBackupOnpeak: if just_offpeak: From 9146424cdfd5934b1a0145c16a2c065a39ec7ae7 Mon Sep 17 00:00:00 2001 From: thdfw Date: Sun, 5 Jan 2025 16:50:01 +0100 Subject: [PATCH 02/13] Changes in update_relays() to accomodate for new transitions --- gw_spaceheat/actors/home_alone.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gw_spaceheat/actors/home_alone.py b/gw_spaceheat/actors/home_alone.py index cd6c5e7d..9fac5792 100644 --- a/gw_spaceheat/actors/home_alone.py +++ b/gw_spaceheat/actors/home_alone.py @@ -436,11 +436,11 @@ def update_relays(self, previous_state) -> None: self.turn_off_HP() if "StoreDischarge" in self.state: self.turn_on_store_pump() - if "StoreDischarge" not in self.state: - self.turn_off_store_pump() - if "StoreCharge" not in previous_state and "StoreCharge" in self.state: + else: + self.turn_off_store_pump() + if "StoreCharge" in self.state: self.valved_to_charge_store() - if "StoreCharge" in previous_state and "StoreCharge" not in self.state: + else: self.valved_to_discharge_store() def trigger_just_offpeak(self): From ff84b5fa7c1832bb12d575edb27c59443de4394e Mon Sep 17 00:00:00 2001 From: thdfw Date: Sun, 5 Jan 2025 16:55:56 +0100 Subject: [PATCH 03/13] Changes in update_relays() to accomodate for new transitions --- gw_spaceheat/actors/atomic_ally.py | 12 ++++++++---- gw_spaceheat/actors/home_alone.py | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gw_spaceheat/actors/atomic_ally.py b/gw_spaceheat/actors/atomic_ally.py index 1dbd3d5d..143b62ff 100644 --- a/gw_spaceheat/actors/atomic_ally.py +++ b/gw_spaceheat/actors/atomic_ally.py @@ -328,17 +328,21 @@ async def main(self): def update_relays(self, previous_state: str) -> None: if self.state == AtomicAllyState.WaitingNoElec.value: self.turn_off_HP() + if (self.state == AtomicAllyState.Dormant.value + or self.state==AtomicAllyState.WaitingElec.value + or self.state==AtomicAllyState.WaitingNoElec.value): + return if "HpOn" not in previous_state and "HpOn" in self.state: self.turn_on_HP() if "HpOff" not in previous_state and "HpOff" in self.state: self.turn_off_HP() if "StoreDischarge" in self.state: self.turn_on_store_pump() - if "StoreDischarge" not in self.state: - self.turn_off_store_pump() - if "StoreCharge" not in previous_state and "StoreCharge" in self.state: + else: + self.turn_off_store_pump() + if "StoreCharge" in self.state: self.valved_to_charge_store() - if "StoreCharge" in previous_state and "StoreCharge" not in self.state: + else: self.valved_to_discharge_store() def fill_missing_store_temps(self): diff --git a/gw_spaceheat/actors/home_alone.py b/gw_spaceheat/actors/home_alone.py index 9fac5792..2ce6ecce 100644 --- a/gw_spaceheat/actors/home_alone.py +++ b/gw_spaceheat/actors/home_alone.py @@ -430,6 +430,8 @@ def engage_brain(self) -> None: def update_relays(self, previous_state) -> None: + if self.state==HomeAloneState.Dormant.value or self.state==HomeAloneState.Initializing.value: + return if "HpOn" not in previous_state and "HpOn" in self.state: self.turn_on_HP() if "HpOff" not in previous_state and "HpOff" in self.state: From 8383e97581316d356c26351af873650b362b733e Mon Sep 17 00:00:00 2001 From: thdfw Date: Sun, 5 Jan 2025 16:58:12 +0100 Subject: [PATCH 04/13] Turning on logs for relay switches --- gw_spaceheat/actors/scada_actor.py | 116 ++++++++++++++--------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/gw_spaceheat/actors/scada_actor.py b/gw_spaceheat/actors/scada_actor.py index eeedcdd1..e5405f75 100644 --- a/gw_spaceheat/actors/scada_actor.py +++ b/gw_spaceheat/actors/scada_actor.py @@ -230,7 +230,7 @@ def close_vdc_relay(self, trigger_id: Optional[str] = None) -> None: TriggerId=trigger_id, ) self._send_to(self.vdc_relay, event) - # self.log(f"CloseRelay to {self.vdc_relay.name}") + self.log(f"CloseRelay to {self.vdc_relay.name}") except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -252,7 +252,7 @@ def open_vdc_relay(self, trigger_id: Optional[str] = None) -> None: TriggerId=trigger_id, ) self._send_to(self.vdc_relay, event) - # self.log(f"OpenRelay to {self.vdc_relay.name}") + self.log(f"OpenRelay to {self.vdc_relay.name}") except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -273,7 +273,7 @@ def close_tstat_common_relay(self, trigger_id: Optional[str] = None) -> None: TriggerId=trigger_id, ) self._send_to(self.tstat_common_relay, event) - # self.log(f"CloseRelay to {self.tstat_common_relay.name}") + self.log(f"CloseRelay to {self.tstat_common_relay.name}") except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -294,7 +294,7 @@ def open_tstat_common_relay(self, trigger_id: Optional[str] = None) -> None: TriggerId=trigger_id, ) self._send_to(self.tstat_common_relay, event) - # self.log(f"OpenRelay to {self.tstat_common_relay.name}") + self.log(f"OpenRelay to {self.tstat_common_relay.name}") except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -313,9 +313,9 @@ def valved_to_discharge_store(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.store_charge_discharge_relay, event) - # self.log( - # f"{self.node.handle} sending DischargeStore to Store ChargeDischarge {H0N.store_charge_discharge_relay}" - # ) + self.log( + f"{self.node.handle} sending DischargeStore to Store ChargeDischarge {H0N.store_charge_discharge_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -334,9 +334,9 @@ def valved_to_charge_store(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.store_charge_discharge_relay, event) - # self.log( - # f"{self.node.handle} sending ChargeStore to Store ChargeDischarge {H0N.store_charge_discharge_relay}" - # ) + self.log( + f"{self.node.handle} sending ChargeStore to Store ChargeDischarge {H0N.store_charge_discharge_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -355,9 +355,9 @@ def hp_failsafe_switch_to_aquastat(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.hp_failsafe_relay, event) - # self.log( - # f"{self.node.handle} sending SwitchToTankAquastat to Hp Failsafe {H0N.hp_failsafe_relay}" - # ) + self.log( + f"{self.node.handle} sending SwitchToTankAquastat to Hp Failsafe {H0N.hp_failsafe_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -376,9 +376,9 @@ def hp_failsafe_switch_to_scada(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.hp_failsafe_relay, event) - # self.log( - # f"{self.node.handle} sending SwitchToScada to Hp Failsafe {H0N.hp_failsafe_relay}" - # ) + self.log( + f"{self.node.handle} sending SwitchToScada to Hp Failsafe {H0N.hp_failsafe_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -397,9 +397,9 @@ def turn_on_HP(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.hp_scada_ops_relay, event) - # self.log( - # f"{self.node.handle} sending CloseRelay to Hp ScadaOps {H0N.hp_scada_ops_relay}" - # ) + self.log( + f"{self.node.handle} sending CloseRelay to Hp ScadaOps {H0N.hp_scada_ops_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -419,9 +419,9 @@ def turn_off_HP(self) -> None: ) self._send_to(self.hp_scada_ops_relay, event) - # self.log( - # f"{self.node.handle} sending OpenRelay to Hp Scada Ops {H0N.hp_scada_ops_relay}" - # ) + self.log( + f"{self.node.handle} sending OpenRelay to Hp Scada Ops {H0N.hp_scada_ops_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -440,9 +440,9 @@ def aquastat_ctrl_switch_to_boiler(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.aquastat_control_relay, event) - # self.log( - # f"{self.node.handle} sending SwitchToScada to Boiler Ctrl {H0N.aquastat_ctrl_relay}" - # ) + self.log( + f"{self.node.handle} sending SwitchToScada to Boiler Ctrl {H0N.aquastat_ctrl_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -461,9 +461,9 @@ def aquastat_ctrl_switch_to_scada(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.aquastat_control_relay, event) - # self.log( - # f"{self.node.handle} sending SwitchToScada to Aquastat Ctrl {H0N.aquastat_ctrl_relay}" - # ) + self.log( + f"{self.node.handle} sending SwitchToScada to Aquastat Ctrl {H0N.aquastat_ctrl_relay}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -482,9 +482,9 @@ def turn_off_store_pump(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.store_pump_failsafe, event) - # self.log( - # f"{self.node.handle} sending OpenRelay to StorePump OnOff {H0N.store_pump_failsafe}" - # ) + self.log( + f"{self.node.handle} sending OpenRelay to StorePump OnOff {H0N.store_pump_failsafe}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -503,9 +503,9 @@ def turn_on_store_pump(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.store_pump_failsafe, event) - # self.log( - # f"{self.node.handle} sending CloseRelay to StorePump OnOff {H0N.store_pump_failsafe}" - # ) + self.log( + f"{self.node.handle} sending CloseRelay to StorePump OnOff {H0N.store_pump_failsafe}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -525,9 +525,9 @@ def primary_pump_failsafe_to_hp(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.primary_pump_failsafe, event) - # self.log( - # f"{self.node.handle} sending SwitchToHeatPump to {H0N.primary_pump_failsafe}" - # ) + self.log( + f"{self.node.handle} sending SwitchToHeatPump to {H0N.primary_pump_failsafe}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -547,9 +547,9 @@ def primary_pump_failsafe_to_scada(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.primary_pump_failsafe, event) - # self.log( - # f"{self.node.handle} sending SwitchToHeatPump to {H0N.primary_pump_failsafe}" - # ) + self.log( + f"{self.node.handle} sending SwitchToHeatPump to {H0N.primary_pump_failsafe}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -569,9 +569,9 @@ def turn_off_primary_pump(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.primary_pump_scada_ops, event) - # self.log( - # f"{self.node.handle} sending OpenRelay to {H0N.primary_pump_scada_ops}" - # ) + self.log( + f"{self.node.handle} sending OpenRelay to {H0N.primary_pump_scada_ops}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -591,9 +591,9 @@ def turn_on_primary_pump(self) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.primary_pump_scada_ops, event) - # self.log( - # f"{self.node.handle} sending CloseRelay to {H0N.primary_pump_scada_ops}" - # ) + self.log( + f"{self.node.handle} sending CloseRelay to {H0N.primary_pump_scada_ops}" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -616,9 +616,9 @@ def heatcall_ctrl_to_scada(self, zone: str) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.stat_failsafe_relay(zone), event) - # self.log( - # f"{self.node.handle} sending SwitchToScada to {self.stat_failsafe_relay(zone).name} (zone {zone})" - # ) + self.log( + f"{self.node.handle} sending SwitchToScada to {self.stat_failsafe_relay(zone).name} (zone {zone})" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -641,9 +641,9 @@ def heatcall_ctrl_to_stat(self, zone: str) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.stat_failsafe_relay(zone), event) - # self.log( - # f"{self.node.handle} sending SwitchToWallThermostat to {self.stat_failsafe_relay(zone).name} (zone {zone})" - # ) + self.log( + f"{self.node.handle} sending SwitchToWallThermostat to {self.stat_failsafe_relay(zone).name} (zone {zone})" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -666,9 +666,9 @@ def stat_ops_close_relay(self, zone: str) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.stat_ops_relay(zone), event) - # self.log( - # f"{self.node.handle} sending CloseRelay to {self.stat_ops_relay(zone).name} (zone {zone})" - # ) + self.log( + f"{self.node.handle} sending CloseRelay to {self.stat_ops_relay(zone).name} (zone {zone})" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") @@ -691,9 +691,9 @@ def stat_ops_open_relay(self, zone: str) -> None: TriggerId=str(uuid.uuid4()), ) self._send_to(self.stat_ops_relay(zone), event) - # self.log( - # f"{self.node.handle} sending OpenRelay to {self.stat_ops_relay(zone).name} (zone {zone})" - # ) + self.log( + f"{self.node.handle} sending OpenRelay to {self.stat_ops_relay(zone).name} (zone {zone})" + ) except ValidationError as e: self.log(f"Tried to change a relay but didn't have the rights: {e}") From 97982cd88ae60fa6d2d0a097a35dee7057d241f1 Mon Sep 17 00:00:00 2001 From: Jessica Millar Date: Sun, 5 Jan 2025 20:06:05 -0500 Subject: [PATCH 05/13] Fix bug in aAdminDispatch --- gw_spaceheat/actors/scada.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gw_spaceheat/actors/scada.py b/gw_spaceheat/actors/scada.py index b90b1022..574f6105 100644 --- a/gw_spaceheat/actors/scada.py +++ b/gw_spaceheat/actors/scada.py @@ -676,8 +676,7 @@ def _process_admin_mqtt_message( self.log('Admin Wakes Up') self._renew_admin_timeout(timeout_seconds=decoded.Payload.TimeoutSeconds) event = decoded.Payload.DispatchTrigger - if event.TypeName != FsmEvent.TypeName: - raise Exception("AdminDispatch DispatchTrigger is FsmEvent!") + self.log(f"AdminDispatch event toype name is {event.TypeName}") if communicator := self.get_communicator(event.ToHandle.split('.')[-1]): path_dbg |= 0x00000010 communicator.process_message( @@ -685,7 +684,7 @@ def _process_admin_mqtt_message( header=Header( Src=H0N.admin, Dst=communicator.name, - MessageType=FsmEvent.TypeName, + MessageType=event.TypeName, ), Payload=event ) From 70fbe40a50f3238fb12f15ce9d90e6924e4889d8 Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 10:26:25 +0100 Subject: [PATCH 06/13] Don't turn off the HP in the last 5 minutes --- gw_spaceheat/actors/atomic_ally.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gw_spaceheat/actors/atomic_ally.py b/gw_spaceheat/actors/atomic_ally.py index 143b62ff..705af5dc 100644 --- a/gw_spaceheat/actors/atomic_ally.py +++ b/gw_spaceheat/actors/atomic_ally.py @@ -3,6 +3,7 @@ import uuid from enum import auto from typing import Sequence +from datetime import datetime import pytz from data_classes.house_0_names import H0CN, H0N @@ -268,14 +269,14 @@ def check_and_update_state(self) -> None: # 1 elif self.state == AtomicAllyState.HpOnStoreOff.value: - if self.no_more_elec(): + if self.no_more_elec() and datetime.now(self.timezone).minute<55: self.trigger_event(AtomicAllyEvent.NoMoreElec.value) elif self.is_buffer_full(): self.trigger_event(AtomicAllyEvent.ElecBufferFull.value) # 2 elif self.state == AtomicAllyState.HpOnStoreCharge.value: - if self.no_more_elec(): + if self.no_more_elec() and datetime.now(self.timezone).minute<55: self.trigger_event(AtomicAllyEvent.NoMoreElec.value) elif self.is_buffer_empty() or self.is_storage_full(): self.trigger_event(AtomicAllyEvent.ElecBufferEmpty.value) From c172bbf38952d8c3c5cd70bd58d2c80078c9a3a0 Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 10:31:15 +0100 Subject: [PATCH 07/13] Update remaining_elec in AA as soon as an EnergyInstruction comes in --- gw_spaceheat/actors/atomic_ally.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gw_spaceheat/actors/atomic_ally.py b/gw_spaceheat/actors/atomic_ally.py index 705af5dc..240b6815 100644 --- a/gw_spaceheat/actors/atomic_ally.py +++ b/gw_spaceheat/actors/atomic_ally.py @@ -151,6 +151,7 @@ def process_message(self, message: Message) -> Result[bool, BaseException]: match message.Payload: case EnergyInstruction(): self.log(f"Received an EnergyInstruction for {message.Payload.AvgPowerWatts} Watts average power") + self.remaining_elec_wh = message.Payload.AvgPowerWatts self.check_and_update_state() case GoDormant(): From 4fdd6b0936114df3f4806bf2fc39e539a7565d33 Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 12:25:12 +0100 Subject: [PATCH 08/13] Store top colder than buffer top: add 3 degF to avoid calibration differences --- gw_spaceheat/actors/atomic_ally.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gw_spaceheat/actors/atomic_ally.py b/gw_spaceheat/actors/atomic_ally.py index 240b6815..929c2581 100644 --- a/gw_spaceheat/actors/atomic_ally.py +++ b/gw_spaceheat/actors/atomic_ally.py @@ -482,7 +482,7 @@ def is_storage_colder_than_buffer(self) -> bool: else: self.alert(alias="store_v_buffer_fail", msg="It is impossible to know if the top of the storage is warmer than the top of the buffer!") return False - if self.latest_temperatures[buffer_top] > self.latest_temperatures[tank_top]: + if self.latest_temperatures[buffer_top] > self.latest_temperatures[tank_top] + 3: self.log("Storage top colder than buffer top") return True else: From 29e435da06101bb75d45c43dafdd6f26dbc6b97c Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 13:09:21 +0100 Subject: [PATCH 09/13] Correcting small error in code for house_cold_onpeak --- gw_spaceheat/actors/home_alone.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gw_spaceheat/actors/home_alone.py b/gw_spaceheat/actors/home_alone.py index 2ce6ecce..341d8ea1 100644 --- a/gw_spaceheat/actors/home_alone.py +++ b/gw_spaceheat/actors/home_alone.py @@ -314,7 +314,7 @@ async def main(self): # Update top state if self.top_state == HomeAloneTopState.Normal: - if self.house_is_cold_onpeak() and self.is_buffer_empty(really_empty=True) and self.is_storage_empty: + if self.house_is_cold_onpeak() and self.is_buffer_empty(really_empty=True) and self.is_storage_empty(): self.trigger_house_cold_onpeak_event() elif self.top_state == HomeAloneTopState.UsingBackupOnpeak: From 95f00e4de986affcdfdf948a5ae70796cf8ad25f Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 17:07:18 +0100 Subject: [PATCH 10/13] Delete proactor.log --- .../state/gridworks/atn/log/proactor.log | 8986 ----------------- 1 file changed, 8986 deletions(-) delete mode 100644 ~/github/.local/state/gridworks/atn/log/proactor.log diff --git a/~/github/.local/state/gridworks/atn/log/proactor.log b/~/github/.local/state/gridworks/atn/log/proactor.log deleted file mode 100644 index 2d03dd30..00000000 --- a/~/github/.local/state/gridworks/atn/log/proactor.log +++ /dev/null @@ -1,8986 +0,0 @@ -2025-01-03 14:36:28.537 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:36:28.550 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:36:28.560 ++Proactor.join() proactor: -2025-01-03 14:36:28.560 Tasks: 6 [Proactor.join() - all tasks] - 1/6 Task-1 done:False exception:None - 2/6 send_ping done:False exception:None - 3/6 pat_watchdog done:False exception:None - 4/6 atn-main done:False exception:None - 5/6 process_messages done:False exception:None - 6/6 fake market maker done:False exception:None - -2025-01-03 14:36:28.560 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:36:28.560 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:36:28.560 Tasks: 5 [PENDING] - 1/5 send_ping done:False exception:None - 2/5 watchdog_manager.join done:False exception:None - 3/5 atn-main done:False exception:None - 4/5 process_messages done:False exception:None - 5/5 fake market maker done:False exception:None - -2025-01-03 14:36:28.560 Tasks: 5 [WAITING FOR] - 1/5 send_ping done:False exception:None - 2/5 watchdog_manager.join done:False exception:None - 3/5 atn-main done:False exception:None - 4/5 process_messages done:False exception:None - 5/5 fake market maker done:False exception:None - -2025-01-03 14:36:33.562 [atn] Minute 36 -2025-01-03 14:37:32.237 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:37:32.249 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:37:32.259 ++Proactor.join() proactor: -2025-01-03 14:37:32.260 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 14:37:32.260 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:37:32.260 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:37:32.260 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:37:32.260 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:37:37.260 [atn] Minute 37 -2025-01-03 14:38:43.262 [atn] Minute 38 -2025-01-03 14:39:49.262 [atn] Minute 39 -2025-01-03 14:40:55.263 [atn] Minute 40 -2025-01-03 14:41:08.237 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:41:08.250 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:41:08.260 ++Proactor.join() proactor: -2025-01-03 14:41:08.261 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 14:41:08.261 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:41:08.261 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:41:08.261 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:41:08.261 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:41:13.261 [atn] Minute 41 -2025-01-03 14:41:47.760 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:41:47.772 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:41:47.782 ++Proactor.join() proactor: -2025-01-03 14:41:47.782 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 14:41:47.782 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:41:47.782 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 14:41:47.782 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 14:41:47.783 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 14:41:52.783 [atn] Minute 41 -2025-01-03 14:42:58.784 [atn] Minute 42 -2025-01-03 14:43:10.121 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:43:10.132 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:43:10.143 ++Proactor.join() proactor: -2025-01-03 14:43:10.143 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 14:43:10.143 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:43:10.143 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 14:43:10.144 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 14:43:10.144 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 14:43:15.144 [atn] Minute 43 -2025-01-03 14:43:47.861 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:43:47.873 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:43:47.884 ++Proactor.join() proactor: -2025-01-03 14:43:47.884 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 14:43:47.884 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:43:47.884 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 14:43:47.884 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 14:43:47.884 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 14:43:52.886 [atn] Minute 43 - not running Dijkstra -2025-01-03 14:44:44.430 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:44:44.442 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:44:44.452 ++Proactor.join() proactor: -2025-01-03 14:44:44.452 Tasks: 6 [Proactor.join() - all tasks] - 1/6 Task-1 done:False exception:None - 2/6 send_ping done:False exception:None - 3/6 pat_watchdog done:False exception:None - 4/6 atn-main done:False exception:None - 5/6 process_messages done:False exception:None - 6/6 fake market maker done:False exception:None - -2025-01-03 14:44:44.452 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:44:44.452 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:44:44.452 Tasks: 5 [PENDING] - 1/5 send_ping done:False exception:None - 2/5 watchdog_manager.join done:False exception:None - 3/5 atn-main done:False exception:None - 4/5 process_messages done:False exception:None - 5/5 fake market maker done:False exception:None - -2025-01-03 14:44:44.452 Tasks: 5 [WAITING FOR] - 1/5 send_ping done:False exception:None - 2/5 watchdog_manager.join done:False exception:None - 3/5 atn-main done:False exception:None - 4/5 process_messages done:False exception:None - 5/5 fake market maker done:False exception:None - -2025-01-03 14:44:44.453 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:44:44.453 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:44:46.346 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:44:46.346 [atn] Received a message....... -2025-01-03 14:44:46.347 [atn] Received a message....... -2025-01-03 14:44:46.351 [atn] Received a message....... -2025-01-03 14:44:46.351 [atn] Received a message....... -2025-01-03 14:44:46.355 [atn] Received a message....... -2025-01-03 14:44:46.355 [atn] Received a message....... -2025-01-03 14:44:46.356 [atn] Received a message....... -2025-01-03 14:44:46.357 [atn] Received a message....... -2025-01-03 14:44:46.359 [atn] Received a message....... -2025-01-03 14:44:46.359 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:44:46.359 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:44:46.359 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:44:46.361 [atn] Received a message....... -2025-01-03 14:44:46.362 [atn] Received a message....... -2025-01-03 14:44:46.363 [atn] Received a message....... -2025-01-03 14:44:46.364 [atn] Received a message....... -2025-01-03 14:44:46.364 [atn] Received a message....... -2025-01-03 14:44:46.369 [atn] Received a message....... -2025-01-03 14:44:46.369 [atn] Received a message....... -2025-01-03 14:44:46.370 [atn] Received a message....... -2025-01-03 14:44:46.372 [atn] Received a message....... -2025-01-03 14:44:46.372 [atn] Received a message....... -2025-01-03 14:44:46.374 [atn] Received a message....... -2025-01-03 14:44:46.377 [atn] Received a message....... -2025-01-03 14:44:46.377 [atn] REPORT RECEIVED -2025-01-03 14:44:46.377 [atn] Received a message....... -2025-01-03 14:44:46.378 [atn] Received a message....... -2025-01-03 14:44:46.378 [atn] Received a message....... -2025-01-03 14:44:46.379 [atn] Received a message....... -2025-01-03 14:44:46.382 [atn] Received a message....... -2025-01-03 14:44:46.383 [atn] Received a message....... -2025-01-03 14:44:46.384 [atn] Received a message....... -2025-01-03 14:44:46.385 [atn] Received a message....... -2025-01-03 14:44:46.386 [atn] Received a message....... -2025-01-03 14:44:46.387 [atn] Received a message....... -2025-01-03 14:44:46.388 [atn] Received a message....... -2025-01-03 14:44:46.390 [atn] Received a message....... -2025-01-03 14:44:46.393 [atn] Received a message....... -2025-01-03 14:44:46.394 [atn] Received a message....... -2025-01-03 14:44:46.394 [atn] Received a message....... -2025-01-03 14:44:46.394 [atn] Received a message....... -2025-01-03 14:44:46.395 [atn] Received a message....... -2025-01-03 14:44:46.397 [atn] Received a message....... -2025-01-03 14:44:46.404 [atn] Received a message....... -2025-01-03 14:44:46.404 [atn] REPORT RECEIVED -2025-01-03 14:44:46.405 [atn] Received a message....... -2025-01-03 14:44:46.405 [atn] Received a message....... -2025-01-03 14:44:46.406 [atn] Received a message....... -2025-01-03 14:44:46.407 [atn] Received a message....... -2025-01-03 14:44:46.407 [atn] REPORT RECEIVED -2025-01-03 14:44:46.411 [atn] Received a message....... -2025-01-03 14:44:46.412 [atn] REPORT RECEIVED -2025-01-03 14:44:46.412 [atn] Received a message....... -2025-01-03 14:44:46.412 [atn] Received a message....... -2025-01-03 14:44:46.413 [atn] Received a message....... -2025-01-03 14:44:46.414 [atn] Received a message....... -2025-01-03 14:44:46.414 [atn] REPORT RECEIVED -2025-01-03 14:44:46.414 [atn] Received a message....... -2025-01-03 14:44:46.415 [atn] REPORT RECEIVED -2025-01-03 14:44:46.415 [atn] Received a message....... -2025-01-03 14:44:46.415 [atn] REPORT RECEIVED -2025-01-03 14:44:46.415 [atn] Received a message....... -2025-01-03 14:44:46.416 [atn] Received a message....... -2025-01-03 14:44:46.417 [atn] Received a message....... -2025-01-03 14:44:46.417 [atn] Received a message....... -2025-01-03 14:44:46.418 [atn] Received a message....... -2025-01-03 14:44:46.418 [atn] Received a message....... -2025-01-03 14:44:46.419 [atn] Received a message....... -2025-01-03 14:44:46.420 [atn] Received a message....... -2025-01-03 14:44:46.420 [atn] Received a message....... -2025-01-03 14:44:46.421 [atn] Received a message....... -2025-01-03 14:44:46.422 [atn] Received a message....... -2025-01-03 14:44:46.422 [atn] Received a message....... -2025-01-03 14:44:46.423 [atn] Received a message....... -2025-01-03 14:44:46.424 [atn] Received a message....... -2025-01-03 14:44:46.425 [atn] Received a message....... -2025-01-03 14:44:46.426 [atn] Received a message....... -2025-01-03 14:44:46.426 [atn] Received a message....... -2025-01-03 14:44:46.427 [atn] Received a message....... -2025-01-03 14:44:46.427 [atn] Received a message....... -2025-01-03 14:44:46.428 [atn] Received a message....... -2025-01-03 14:44:46.428 [atn] Received a message....... -2025-01-03 14:44:46.429 [atn] Received a message....... -2025-01-03 14:44:46.430 [atn] REPORT RECEIVED -2025-01-03 14:44:46.430 [atn] Received a message....... -2025-01-03 14:44:46.430 [atn] Received a message....... -2025-01-03 14:44:46.431 [atn] Received a message....... -2025-01-03 14:44:46.431 [atn] Received a message....... -2025-01-03 14:44:46.432 [atn] Received a message....... -2025-01-03 14:44:46.433 [atn] Received a message....... -2025-01-03 14:44:46.433 [atn] Received a message....... -2025-01-03 14:44:46.433 [atn] REPORT RECEIVED -2025-01-03 14:44:46.434 [atn] Received a message....... -2025-01-03 14:44:46.434 [atn] Received a message....... -2025-01-03 14:44:46.435 [atn] Received a message....... -2025-01-03 14:44:46.436 [atn] Received a message....... -2025-01-03 14:44:46.436 [atn] REPORT RECEIVED -2025-01-03 14:44:46.437 [atn] Received a message....... -2025-01-03 14:44:46.437 [atn] REPORT RECEIVED -2025-01-03 14:44:46.437 [atn] Received a message....... -2025-01-03 14:44:46.438 [atn] Received a message....... -2025-01-03 14:44:46.438 [atn] Received a message....... -2025-01-03 14:44:46.439 [atn] Received a message....... -2025-01-03 14:44:46.440 [atn] Received a message....... -2025-01-03 14:44:46.440 [atn] REPORT RECEIVED -2025-01-03 14:44:46.440 [atn] Received a message....... -2025-01-03 14:44:46.441 [atn] Received a message....... -2025-01-03 14:44:46.441 [atn] Received a message....... -2025-01-03 14:44:46.442 [atn] Received a message....... -2025-01-03 14:44:46.442 [atn] Received a message....... -2025-01-03 14:44:46.443 [atn] Received a message....... -2025-01-03 14:44:46.443 [atn] Received a message....... -2025-01-03 14:44:46.444 [atn] Received a message....... -2025-01-03 14:44:46.445 [atn] Received a message....... -2025-01-03 14:44:46.445 [atn] Received a message....... -2025-01-03 14:44:46.446 [atn] Received a message....... -2025-01-03 14:44:46.447 [atn] Received a message....... -2025-01-03 14:44:46.447 [atn] Received a message....... -2025-01-03 14:44:46.448 [atn] Received a message....... -2025-01-03 14:44:46.448 [atn] Received a message....... -2025-01-03 14:44:46.449 [atn] Received a message....... -2025-01-03 14:44:46.451 [atn] Received a message....... -2025-01-03 14:44:46.451 [atn] Received a message....... -2025-01-03 14:44:46.451 [atn] Received a message....... -2025-01-03 14:44:46.451 [atn] Received a message....... -2025-01-03 14:44:46.452 [atn] Received a message....... -2025-01-03 14:44:46.452 [atn] Received a message....... -2025-01-03 14:44:46.452 [atn] Received a message....... -2025-01-03 14:44:46.452 [atn] Received a message....... -2025-01-03 14:44:46.453 [atn] Received a message....... -2025-01-03 14:44:46.453 [atn] REPORT RECEIVED -2025-01-03 14:44:46.453 [atn] Received a message....... -2025-01-03 14:44:46.453 [atn] Received a message....... -2025-01-03 14:44:46.454 [atn] Received a message....... -2025-01-03 14:44:46.454 [atn] Received a message....... -2025-01-03 14:44:46.454 [atn] REPORT RECEIVED -2025-01-03 14:44:46.454 [atn] Received a message....... -2025-01-03 14:44:46.454 [atn] Received a message....... -2025-01-03 14:44:46.454 [atn] Received a message....... -2025-01-03 14:44:46.455 [atn] Received a message....... -2025-01-03 14:44:46.455 [atn] REPORT RECEIVED -2025-01-03 14:44:46.455 [atn] Received a message....... -2025-01-03 14:44:46.455 [atn] REPORT RECEIVED -2025-01-03 14:44:46.455 [atn] Received a message....... -2025-01-03 14:44:46.455 [atn] REPORT RECEIVED -2025-01-03 14:44:46.455 [atn] Received a message....... -2025-01-03 14:44:46.456 [atn] Received a message....... -2025-01-03 14:44:46.456 [atn] Received a message....... -2025-01-03 14:44:46.456 [atn] Received a message....... -2025-01-03 14:44:46.456 [atn] REPORT RECEIVED -2025-01-03 14:44:46.456 [atn] Received a message....... -2025-01-03 14:44:46.456 [atn] REPORT RECEIVED -2025-01-03 14:44:46.457 [atn] Received a message....... -2025-01-03 14:44:46.457 [atn] REPORT RECEIVED -2025-01-03 14:44:46.457 [atn] Received a message....... -2025-01-03 14:44:46.457 [atn] REPORT RECEIVED -2025-01-03 14:44:46.457 [atn] Received a message....... -2025-01-03 14:44:46.457 [atn] REPORT RECEIVED -2025-01-03 14:44:46.457 [atn] Received a message....... -2025-01-03 14:44:46.457 [atn] Received a message....... -2025-01-03 14:44:46.457 [atn] Received a message....... -2025-01-03 14:44:46.458 [atn] Received a message....... -2025-01-03 14:44:46.458 [atn] REPORT RECEIVED -2025-01-03 14:44:46.458 [atn] Received a message....... -2025-01-03 14:44:46.458 [atn] REPORT RECEIVED -2025-01-03 14:44:46.458 [atn] Received a message....... -2025-01-03 14:44:46.458 [atn] REPORT RECEIVED -2025-01-03 14:44:46.459 [atn] Received a message....... -2025-01-03 14:44:46.459 [atn] REPORT RECEIVED -2025-01-03 14:44:46.459 [atn] Received a message....... -2025-01-03 14:44:46.459 [atn] REPORT RECEIVED -2025-01-03 14:44:46.459 [atn] Received a message....... -2025-01-03 14:44:46.459 [atn] REPORT RECEIVED -2025-01-03 14:44:46.459 [atn] Received a message....... -2025-01-03 14:44:46.459 [atn] REPORT RECEIVED -2025-01-03 14:44:46.459 [atn] Received a message....... -2025-01-03 14:44:46.459 [atn] REPORT RECEIVED -2025-01-03 14:44:46.460 [atn] Received a message....... -2025-01-03 14:44:46.460 [atn] REPORT RECEIVED -2025-01-03 14:44:46.460 [atn] Received a message....... -2025-01-03 14:44:46.460 [atn] REPORT RECEIVED -2025-01-03 14:44:46.460 [atn] Received a message....... -2025-01-03 14:44:46.460 [atn] REPORT RECEIVED -2025-01-03 14:44:46.460 [atn] Received a message....... -2025-01-03 14:44:46.460 [atn] Received a message....... -2025-01-03 14:44:46.461 [atn] Received a message....... -2025-01-03 14:44:46.461 [atn] Received a message....... -2025-01-03 14:44:46.461 [atn] REPORT RECEIVED -2025-01-03 14:44:46.461 [atn] Received a message....... -2025-01-03 14:44:46.461 [atn] REPORT RECEIVED -2025-01-03 14:44:46.461 [atn] Received a message....... -2025-01-03 14:44:46.461 [atn] REPORT RECEIVED -2025-01-03 14:44:46.461 [atn] Received a message....... -2025-01-03 14:44:46.462 [atn] REPORT RECEIVED -2025-01-03 14:44:46.462 [atn] Received a message....... -2025-01-03 14:44:46.462 [atn] REPORT RECEIVED -2025-01-03 14:44:46.462 [atn] Received a message....... -2025-01-03 14:44:46.462 [atn] REPORT RECEIVED -2025-01-03 14:44:46.462 [atn] Received a message....... -2025-01-03 14:44:46.462 [atn] REPORT RECEIVED -2025-01-03 14:44:46.462 [atn] Received a message....... -2025-01-03 14:44:46.462 [atn] REPORT RECEIVED -2025-01-03 14:44:46.463 [atn] Received a message....... -2025-01-03 14:44:46.463 [atn] REPORT RECEIVED -2025-01-03 14:44:46.463 [atn] Received a message....... -2025-01-03 14:44:46.463 [atn] REPORT RECEIVED -2025-01-03 14:44:46.463 [atn] Received a message....... -2025-01-03 14:44:46.463 [atn] REPORT RECEIVED -2025-01-03 14:44:46.463 [atn] Received a message....... -2025-01-03 14:44:46.463 [atn] REPORT RECEIVED -2025-01-03 14:44:46.463 [atn] Received a message....... -2025-01-03 14:44:46.464 [atn] REPORT RECEIVED -2025-01-03 14:44:46.464 [atn] Received a message....... -2025-01-03 14:44:46.464 [atn] REPORT RECEIVED -2025-01-03 14:44:46.464 [atn] Received a message....... -2025-01-03 14:44:46.464 [atn] REPORT RECEIVED -2025-01-03 14:44:46.464 [atn] Received a message....... -2025-01-03 14:44:46.464 [atn] Received a message....... -2025-01-03 14:44:46.464 [atn] Received a message....... -2025-01-03 14:44:46.465 [atn] Received a message....... -2025-01-03 14:44:46.465 [atn] Received a message....... -2025-01-03 14:44:46.465 [atn] REPORT RECEIVED -2025-01-03 14:44:46.465 [atn] Received a message....... -2025-01-03 14:44:46.465 [atn] Received a message....... -2025-01-03 14:44:46.465 [atn] Received a message....... -2025-01-03 14:44:46.466 [atn] Received a message....... -2025-01-03 14:44:46.466 [atn] REPORT RECEIVED -2025-01-03 14:44:46.466 [atn] Received a message....... -2025-01-03 14:44:46.466 [atn] Received a message....... -2025-01-03 14:44:46.466 [atn] Received a message....... -2025-01-03 14:44:46.467 [atn] Received a message....... -2025-01-03 14:44:46.467 [atn] REPORT RECEIVED -2025-01-03 14:44:46.467 [atn] Received a message....... -2025-01-03 14:44:46.467 [atn] REPORT RECEIVED -2025-01-03 14:44:46.467 [atn] Received a message....... -2025-01-03 14:44:46.467 [atn] REPORT RECEIVED -2025-01-03 14:44:46.467 [atn] Received a message....... -2025-01-03 14:44:46.467 [atn] Received a message....... -2025-01-03 14:44:46.468 [atn] Received a message....... -2025-01-03 14:44:46.468 [atn] Received a message....... -2025-01-03 14:44:46.468 [atn] REPORT RECEIVED -2025-01-03 14:44:46.468 [atn] Received a message....... -2025-01-03 14:44:46.468 [atn] REPORT RECEIVED -2025-01-03 14:44:46.468 [atn] Received a message....... -2025-01-03 14:44:46.468 [atn] REPORT RECEIVED -2025-01-03 14:44:46.469 [atn] Received a message....... -2025-01-03 14:44:46.469 [atn] REPORT RECEIVED -2025-01-03 14:44:46.469 [atn] Received a message....... -2025-01-03 14:44:46.469 [atn] REPORT RECEIVED -2025-01-03 14:44:46.469 [atn] Received a message....... -2025-01-03 14:44:46.469 [atn] Received a message....... -2025-01-03 14:44:46.469 [atn] Received a message....... -2025-01-03 14:44:46.469 [atn] Received a message....... -2025-01-03 14:44:46.470 [atn] REPORT RECEIVED -2025-01-03 14:44:46.470 [atn] Received a message....... -2025-01-03 14:44:46.470 [atn] REPORT RECEIVED -2025-01-03 14:44:46.470 [atn] Received a message....... -2025-01-03 14:44:46.470 [atn] REPORT RECEIVED -2025-01-03 14:44:46.470 [atn] Received a message....... -2025-01-03 14:44:46.470 [atn] REPORT RECEIVED -2025-01-03 14:44:46.470 [atn] Received a message....... -2025-01-03 14:44:46.470 [atn] REPORT RECEIVED -2025-01-03 14:44:46.471 [atn] Received a message....... -2025-01-03 14:44:46.471 [atn] REPORT RECEIVED -2025-01-03 14:44:46.471 [atn] Received a message....... -2025-01-03 14:44:46.471 [atn] REPORT RECEIVED -2025-01-03 14:44:46.471 [atn] Received a message....... -2025-01-03 14:44:46.471 [atn] REPORT RECEIVED -2025-01-03 14:44:46.471 [atn] Received a message....... -2025-01-03 14:44:46.471 [atn] REPORT RECEIVED -2025-01-03 14:44:46.471 [atn] Received a message....... -2025-01-03 14:44:46.472 [atn] REPORT RECEIVED -2025-01-03 14:44:46.472 [atn] Received a message....... -2025-01-03 14:44:46.472 [atn] REPORT RECEIVED -2025-01-03 14:44:46.472 [atn] Received a message....... -2025-01-03 14:44:46.472 [atn] Received a message....... -2025-01-03 14:44:46.472 [atn] Received a message....... -2025-01-03 14:44:46.472 [atn] Received a message....... -2025-01-03 14:44:46.472 [atn] REPORT RECEIVED -2025-01-03 14:44:46.473 [atn] Received a message....... -2025-01-03 14:44:46.473 [atn] REPORT RECEIVED -2025-01-03 14:44:46.473 [atn] Received a message....... -2025-01-03 14:44:46.473 [atn] REPORT RECEIVED -2025-01-03 14:44:46.473 [atn] Received a message....... -2025-01-03 14:44:46.473 [atn] REPORT RECEIVED -2025-01-03 14:44:46.473 [atn] Received a message....... -2025-01-03 14:44:46.473 [atn] REPORT RECEIVED -2025-01-03 14:44:46.474 [atn] Received a message....... -2025-01-03 14:44:46.474 [atn] REPORT RECEIVED -2025-01-03 14:44:46.474 [atn] Received a message....... -2025-01-03 14:44:46.474 [atn] REPORT RECEIVED -2025-01-03 14:44:46.474 [atn] Received a message....... -2025-01-03 14:44:46.474 [atn] REPORT RECEIVED -2025-01-03 14:44:46.474 [atn] Received a message....... -2025-01-03 14:44:46.474 [atn] REPORT RECEIVED -2025-01-03 14:44:46.474 [atn] Received a message....... -2025-01-03 14:44:46.474 [atn] REPORT RECEIVED -2025-01-03 14:44:46.475 [atn] Received a message....... -2025-01-03 14:44:46.475 [atn] REPORT RECEIVED -2025-01-03 14:44:46.475 [atn] Received a message....... -2025-01-03 14:44:46.475 [atn] REPORT RECEIVED -2025-01-03 14:44:46.475 [atn] Received a message....... -2025-01-03 14:44:46.475 [atn] REPORT RECEIVED -2025-01-03 14:44:46.475 [atn] Received a message....... -2025-01-03 14:44:46.475 [atn] REPORT RECEIVED -2025-01-03 14:44:46.475 [atn] Received a message....... -2025-01-03 14:44:46.476 [atn] REPORT RECEIVED -2025-01-03 14:44:46.476 [atn] Received a message....... -2025-01-03 14:44:46.476 [atn] REPORT RECEIVED -2025-01-03 14:44:46.476 [atn] Received a message....... -2025-01-03 14:44:46.476 [atn] REPORT RECEIVED -2025-01-03 14:44:46.476 [atn] Received a message....... -2025-01-03 14:44:46.476 [atn] REPORT RECEIVED -2025-01-03 14:44:46.476 [atn] Received a message....... -2025-01-03 14:44:46.476 [atn] REPORT RECEIVED -2025-01-03 14:44:46.477 [atn] Received a message....... -2025-01-03 14:44:46.477 [atn] REPORT RECEIVED -2025-01-03 14:44:46.477 [atn] Received a message....... -2025-01-03 14:44:46.477 [atn] REPORT RECEIVED -2025-01-03 14:44:46.477 [atn] Received a message....... -2025-01-03 14:44:46.477 [atn] Received a message....... -2025-01-03 14:44:46.477 [atn] Received a message....... -2025-01-03 14:44:46.478 [atn] Received a message....... -2025-01-03 14:44:46.478 [atn] REPORT RECEIVED -2025-01-03 14:44:46.478 [atn] Received a message....... -2025-01-03 14:44:46.478 [atn] REPORT RECEIVED -2025-01-03 14:44:46.478 [atn] Received a message....... -2025-01-03 14:44:46.478 [atn] REPORT RECEIVED -2025-01-03 14:44:46.478 [atn] Received a message....... -2025-01-03 14:44:46.478 [atn] REPORT RECEIVED -2025-01-03 14:44:46.479 [atn] Received a message....... -2025-01-03 14:44:46.479 [atn] REPORT RECEIVED -2025-01-03 14:44:46.479 [atn] Received a message....... -2025-01-03 14:44:46.479 [atn] REPORT RECEIVED -2025-01-03 14:44:46.479 [atn] Received a message....... -2025-01-03 14:44:46.479 [atn] REPORT RECEIVED -2025-01-03 14:44:46.479 [atn] Received a message....... -2025-01-03 14:44:46.479 [atn] REPORT RECEIVED -2025-01-03 14:44:46.479 [atn] Received a message....... -2025-01-03 14:44:46.479 [atn] REPORT RECEIVED -2025-01-03 14:44:46.480 [atn] Received a message....... -2025-01-03 14:44:46.480 [atn] REPORT RECEIVED -2025-01-03 14:44:46.480 [atn] Received a message....... -2025-01-03 14:44:46.480 [atn] REPORT RECEIVED -2025-01-03 14:44:46.480 [atn] Received a message....... -2025-01-03 14:44:46.480 [atn] REPORT RECEIVED -2025-01-03 14:44:46.480 [atn] Received a message....... -2025-01-03 14:44:46.480 [atn] REPORT RECEIVED -2025-01-03 14:44:46.480 [atn] Received a message....... -2025-01-03 14:44:46.481 [atn] REPORT RECEIVED -2025-01-03 14:44:46.481 [atn] Received a message....... -2025-01-03 14:44:46.481 [atn] REPORT RECEIVED -2025-01-03 14:44:46.481 [atn] Received a message....... -2025-01-03 14:44:46.482 [atn] REPORT RECEIVED -2025-01-03 14:44:46.482 [atn] Received a message....... -2025-01-03 14:44:46.482 [atn] REPORT RECEIVED -2025-01-03 14:44:46.482 [atn] Received a message....... -2025-01-03 14:44:46.482 [atn] REPORT RECEIVED -2025-01-03 14:44:46.482 [atn] Received a message....... -2025-01-03 14:44:46.482 [atn] REPORT RECEIVED -2025-01-03 14:44:46.482 [atn] Received a message....... -2025-01-03 14:44:46.482 [atn] REPORT RECEIVED -2025-01-03 14:44:46.482 [atn] Received a message....... -2025-01-03 14:44:46.483 [atn] REPORT RECEIVED -2025-01-03 14:44:46.483 [atn] Received a message....... -2025-01-03 14:44:46.483 [atn] REPORT RECEIVED -2025-01-03 14:44:46.483 [atn] Received a message....... -2025-01-03 14:44:46.483 [atn] REPORT RECEIVED -2025-01-03 14:44:46.483 [atn] Received a message....... -2025-01-03 14:44:46.483 [atn] REPORT RECEIVED -2025-01-03 14:44:46.483 [atn] Received a message....... -2025-01-03 14:44:46.484 [atn] REPORT RECEIVED -2025-01-03 14:44:46.484 [atn] Received a message....... -2025-01-03 14:44:46.484 [atn] REPORT RECEIVED -2025-01-03 14:44:46.484 [atn] Received a message....... -2025-01-03 14:44:46.484 [atn] Received a message....... -2025-01-03 14:44:46.484 [atn] Received a message....... -2025-01-03 14:44:46.485 [atn] Received a message....... -2025-01-03 14:44:46.485 [atn] Received a message....... -2025-01-03 14:44:46.485 [atn] REPORT RECEIVED -2025-01-03 14:44:46.485 [atn] Received a message....... -2025-01-03 14:44:46.485 [atn] Received a message....... -2025-01-03 14:44:46.486 [atn] Received a message....... -2025-01-03 14:44:46.486 [atn] Received a message....... -2025-01-03 14:44:46.486 [atn] REPORT RECEIVED -2025-01-03 14:44:46.486 [atn] Received a message....... -2025-01-03 14:44:46.486 [atn] Received a message....... -2025-01-03 14:44:46.487 [atn] Received a message....... -2025-01-03 14:44:46.487 [atn] Received a message....... -2025-01-03 14:44:46.487 [atn] REPORT RECEIVED -2025-01-03 14:44:46.487 [atn] Received a message....... -2025-01-03 14:44:46.487 [atn] REPORT RECEIVED -2025-01-03 14:44:46.487 [atn] Received a message....... -2025-01-03 14:44:46.487 [atn] REPORT RECEIVED -2025-01-03 14:44:46.487 [atn] Received a message....... -2025-01-03 14:44:46.488 [atn] Received a message....... -2025-01-03 14:44:46.488 [atn] Received a message....... -2025-01-03 14:44:46.488 [atn] Received a message....... -2025-01-03 14:44:46.488 [atn] REPORT RECEIVED -2025-01-03 14:44:46.488 [atn] Received a message....... -2025-01-03 14:44:46.488 [atn] REPORT RECEIVED -2025-01-03 14:44:46.489 [atn] Received a message....... -2025-01-03 14:44:46.489 [atn] REPORT RECEIVED -2025-01-03 14:44:46.489 [atn] Received a message....... -2025-01-03 14:44:46.489 [atn] REPORT RECEIVED -2025-01-03 14:44:46.489 [atn] Received a message....... -2025-01-03 14:44:46.489 [atn] REPORT RECEIVED -2025-01-03 14:44:46.489 [atn] Received a message....... -2025-01-03 14:44:46.489 [atn] Received a message....... -2025-01-03 14:44:46.490 [atn] Received a message....... -2025-01-03 14:44:46.490 [atn] Received a message....... -2025-01-03 14:44:46.490 [atn] REPORT RECEIVED -2025-01-03 14:44:46.490 [atn] Received a message....... -2025-01-03 14:44:46.490 [atn] REPORT RECEIVED -2025-01-03 14:44:46.490 [atn] Received a message....... -2025-01-03 14:44:46.490 [atn] REPORT RECEIVED -2025-01-03 14:44:46.490 [atn] Received a message....... -2025-01-03 14:44:46.490 [atn] REPORT RECEIVED -2025-01-03 14:44:46.491 [atn] Received a message....... -2025-01-03 14:44:46.491 [atn] REPORT RECEIVED -2025-01-03 14:44:46.491 [atn] Received a message....... -2025-01-03 14:44:46.491 [atn] REPORT RECEIVED -2025-01-03 14:44:46.491 [atn] Received a message....... -2025-01-03 14:44:46.491 [atn] REPORT RECEIVED -2025-01-03 14:44:46.491 [atn] Received a message....... -2025-01-03 14:44:46.491 [atn] REPORT RECEIVED -2025-01-03 14:44:46.492 [atn] Received a message....... -2025-01-03 14:44:46.492 [atn] REPORT RECEIVED -2025-01-03 14:44:46.492 [atn] Received a message....... -2025-01-03 14:44:46.492 [atn] REPORT RECEIVED -2025-01-03 14:44:46.492 [atn] Received a message....... -2025-01-03 14:44:46.492 [atn] REPORT RECEIVED -2025-01-03 14:44:46.492 [atn] Received a message....... -2025-01-03 14:44:46.492 [atn] Received a message....... -2025-01-03 14:44:46.493 [atn] Received a message....... -2025-01-03 14:44:46.493 [atn] Received a message....... -2025-01-03 14:44:46.493 [atn] REPORT RECEIVED -2025-01-03 14:44:46.493 [atn] Received a message....... -2025-01-03 14:44:46.493 [atn] REPORT RECEIVED -2025-01-03 14:44:46.493 [atn] Received a message....... -2025-01-03 14:44:46.493 [atn] REPORT RECEIVED -2025-01-03 14:44:46.493 [atn] Received a message....... -2025-01-03 14:44:46.494 [atn] REPORT RECEIVED -2025-01-03 14:44:46.494 [atn] Received a message....... -2025-01-03 14:44:46.494 [atn] REPORT RECEIVED -2025-01-03 14:44:46.494 [atn] Received a message....... -2025-01-03 14:44:46.494 [atn] REPORT RECEIVED -2025-01-03 14:44:46.494 [atn] Received a message....... -2025-01-03 14:44:46.494 [atn] REPORT RECEIVED -2025-01-03 14:44:46.494 [atn] Received a message....... -2025-01-03 14:44:46.494 [atn] Received a message....... -2025-01-03 14:44:46.495 [atn] Received a message....... -2025-01-03 14:44:46.495 [atn] Received a message....... -2025-01-03 14:44:46.495 [atn] Received a message....... -2025-01-03 14:44:48.005 [atn] Received a message....... -2025-01-03 14:44:48.005 [atn] REPORT RECEIVED -2025-01-03 14:44:49.453 [atn] Minute 44 - not running Dijkstra -2025-01-03 14:44:49.454 scada: active -- response_timeout --> awaiting_peer -2025-01-03 14:44:51.010 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:44:51.010 [atn] Received a message....... -2025-01-03 14:44:51.011 [atn] REPORT RECEIVED -2025-01-03 14:44:54.009 [atn] Received a message....... -2025-01-03 14:44:54.010 [atn] REPORT RECEIVED -2025-01-03 14:45:02.880 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:45:02.892 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:45:02.902 ++Proactor.join() proactor: -2025-01-03 14:45:02.902 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 14:45:02.902 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:45:02.903 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:45:02.903 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:45:02.903 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:45:02.903 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:45:02.903 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:45:05.272 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:45:05.282 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:45:05.283 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:45:05.283 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:45:06.006 [atn] REPORT RECEIVED -2025-01-03 14:45:07.904 scada: active -- response_timeout --> awaiting_peer -2025-01-03 14:45:07.905 [atn] Minute 45 - not running Dijkstra -2025-01-03 14:45:09.007 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:45:09.008 [atn] REPORT RECEIVED -2025-01-03 14:45:12.008 [atn] REPORT RECEIVED -2025-01-03 14:45:15.004 [atn] REPORT RECEIVED -2025-01-03 14:45:18.009 [atn] REPORT RECEIVED -2025-01-03 14:45:21.007 [atn] REPORT RECEIVED -2025-01-03 14:45:24.004 [atn] REPORT RECEIVED -2025-01-03 14:45:27.009 [atn] REPORT RECEIVED -2025-01-03 14:45:30.020 [atn] REPORT RECEIVED -2025-01-03 14:45:33.008 [atn] REPORT RECEIVED -2025-01-03 14:45:36.009 [atn] REPORT RECEIVED -2025-01-03 14:45:39.007 [atn] REPORT RECEIVED -2025-01-03 14:45:42.676 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:45:42.676 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:45:42.676 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:45:45.007 [atn] REPORT RECEIVED -2025-01-03 14:45:48.009 [atn] REPORT RECEIVED -2025-01-03 14:45:51.006 [atn] REPORT RECEIVED -2025-01-03 14:45:54.007 [atn] REPORT RECEIVED -2025-01-03 14:45:57.006 [atn] REPORT RECEIVED -2025-01-03 14:46:00.022 [atn] REPORT RECEIVED -2025-01-03 14:46:03.009 [atn] REPORT RECEIVED -2025-01-03 14:46:06.007 [atn] REPORT RECEIVED -2025-01-03 14:46:09.005 [atn] REPORT RECEIVED -2025-01-03 14:46:12.008 [atn] REPORT RECEIVED -2025-01-03 14:46:13.908 [atn] Minute 46 - not running Dijkstra -2025-01-03 14:46:15.007 [atn] REPORT RECEIVED -2025-01-03 14:46:18.009 [atn] REPORT RECEIVED -2025-01-03 14:46:21.006 [atn] REPORT RECEIVED -2025-01-03 14:46:24.007 [atn] REPORT RECEIVED -2025-01-03 14:46:27.003 [atn] REPORT RECEIVED -2025-01-03 14:46:39.418 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:46:39.430 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:46:39.441 ++Proactor.join() proactor: -2025-01-03 14:46:39.441 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 14:46:39.441 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:46:39.441 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:46:39.441 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:46:39.441 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:46:39.442 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:46:39.442 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:46:41.672 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:46:41.680 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:46:41.680 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:46:41.680 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:46:42.005 ERROR in process_message -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 362, in process_messages - await self.process_message(message) - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 459, in process_message - self._process_mqtt_message(message) - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 578, in _process_mqtt_message - self._derived_process_mqtt_message( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/actors/atn.py", line 286, in _derived_process_mqtt_message - self.log(f"REPORT RECEIVED {decoded.Report.MessageId}") - ^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 828, in __getattr__ - raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') -AttributeError: 'AtnMessageDecoder' object has no attribute 'Report' -2025-01-03 14:46:42.007 Stopping proactor -2025-01-03 14:46:42.008 Tasks: 5 [DONE] - 1/5 fake market maker done:True exception: - 2/5 send_ping done:True exception: - 3/5 watchdog_manager.join done:True exception:None - 4/5 atn-main done:True exception: - 5/5 process_messages done:True exception: - -2025-01-03 14:46:42.009 Tasks: 0 [PENDING] - -2025-01-03 14:46:42.009 --Proactor.join() proactor: -2025-01-03 14:47:29.100 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:47:29.112 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:47:29.122 ++Proactor.join() proactor: -2025-01-03 14:47:29.123 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 14:47:29.123 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:47:29.123 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:47:29.123 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:47:29.123 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 14:47:29.123 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:47:29.124 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:47:29.125 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:47:29.125 [atn] REPORT RECEIVED ac651f78-81be-4409-a057-5079fb378ee0 -2025-01-03 14:47:29.125 [atn] REPORT RECEIVED b13a09f2-062d-4d86-9495-3f1543206ba4 -2025-01-03 14:47:29.126 [atn] REPORT RECEIVED 7ee85dd1-e65f-477e-abb7-786f851ae823 -2025-01-03 14:47:29.126 [atn] REPORT RECEIVED 9e4aa1c3-884e-414d-8e23-865845b5223b -2025-01-03 14:47:29.127 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:47:29.127 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:47:29.127 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:47:29.127 [atn] REPORT RECEIVED f806b651-268f-4630-bfe3-f50afe9e011a -2025-01-03 14:47:29.128 [atn] REPORT RECEIVED 62a279b5-3205-4db4-bf33-6df9eabf8679 -2025-01-03 14:47:29.128 [atn] REPORT RECEIVED b4f70902-9eae-408b-bb70-8f9606d1cd05 -2025-01-03 14:47:29.128 [atn] REPORT RECEIVED dd31c7b4-582a-4258-bf5b-53cc0ed0ac15 -2025-01-03 14:47:29.128 [atn] REPORT RECEIVED 6dd65383-bfc8-41e5-88d0-867e0d83085d -2025-01-03 14:47:29.128 [atn] REPORT RECEIVED ff71bb3b-4379-4b49-a21e-3f43eb90058a -2025-01-03 14:47:29.129 [atn] REPORT RECEIVED f103721d-31ca-43bf-af82-e8fde99ea713 -2025-01-03 14:47:29.129 [atn] REPORT RECEIVED 672e2736-b3ec-4a97-9967-d3e96895727c -2025-01-03 14:47:29.129 [atn] REPORT RECEIVED 70f3ab17-28d0-46be-b81b-799bc48d74ae -2025-01-03 14:47:29.129 [atn] REPORT RECEIVED 9dcd28a3-1531-4c4b-bee1-65e71f64abc8 -2025-01-03 14:47:29.129 [atn] REPORT RECEIVED 83dd7e30-965f-445b-ac5d-8c759cf8b9d7 -2025-01-03 14:47:29.130 [atn] REPORT RECEIVED 20185f21-c880-4a2b-a3b7-9222f6425b3f -2025-01-03 14:47:30.018 [atn] REPORT RECEIVED 6929cf44-66f1-4403-906f-761092ed78af -2025-01-03 14:47:33.004 [atn] REPORT RECEIVED 7917fb1d-7597-4f60-afea-77b82891b680 -2025-01-03 14:47:34.124 [atn] Minute 47 - not running Dijkstra -2025-01-03 14:47:36.006 [atn] REPORT RECEIVED 93ecaa4e-6d2f-4a09-80ef-df773cce30ef -2025-01-03 14:47:39.008 [atn] REPORT RECEIVED 2957efa3-9073-42d5-ab56-ec8879279d85 -2025-01-03 14:47:42.007 [atn] REPORT RECEIVED 42de8511-227a-4043-9f39-70136e7ccfa6 -2025-01-03 14:47:45.007 [atn] REPORT RECEIVED 7bed818d-0b72-49ac-99d4-1b6f7eee2d0e -2025-01-03 14:47:48.007 [atn] REPORT RECEIVED a301d1df-f6f7-45e3-afa6-fd9705010337 -2025-01-03 14:47:51.008 [atn] REPORT RECEIVED 7c1cb028-dcd4-4e22-8703-e252e2471433 -2025-01-03 14:47:54.009 [atn] REPORT RECEIVED 94ad476f-08c6-44bc-a85d-0994a5c72cf8 -2025-01-03 14:47:57.005 [atn] REPORT RECEIVED 4fe69ba5-e419-4602-a765-5f14568047b7 -2025-01-03 14:48:00.025 [atn] REPORT RECEIVED 0c81c9a7-9d7a-48af-a6fc-6ff4d6f49942 -2025-01-03 14:48:03.007 [atn] REPORT RECEIVED 175860c9-eea2-4119-b225-5233885aa291 -2025-01-03 14:48:05.390 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:48:05.390 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:48:05.390 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:48:06.006 [atn] REPORT RECEIVED 74b07c09-02c1-4afa-a912-ddbdcf25e9bb -2025-01-03 14:48:09.007 [atn] REPORT RECEIVED 826582e7-742a-4bbc-bd12-7312b9a3fe99 -2025-01-03 14:48:12.009 [atn] REPORT RECEIVED 3c1fe609-bd6e-4cde-ae3a-2a4d647c69c4 -2025-01-03 14:48:15.009 [atn] REPORT RECEIVED 7edad8ff-cf85-4bdc-8221-81912cb20682 -2025-01-03 14:48:18.007 [atn] REPORT RECEIVED 8169b7ee-cbba-4812-8afe-f908b3758533 -2025-01-03 14:48:21.007 [atn] REPORT RECEIVED dc65fae6-7f28-403c-8b61-5fadf8526077 -2025-01-03 14:48:24.007 [atn] REPORT RECEIVED 6b3485a1-c875-4454-b9e4-9dfc08b27478 -2025-01-03 14:48:27.009 [atn] REPORT RECEIVED 6f36ed1c-0ff9-4727-949c-c13173374085 -2025-01-03 14:48:37.681 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 14:48:37.693 [atn] State is DispatchDormantScadaNotReady -2025-01-03 14:48:37.703 ++Proactor.join() proactor: -2025-01-03 14:48:37.703 Tasks: 6 [Proactor.join() - all tasks] - 1/6 process_messages done:False exception:None - 2/6 fake market maker done:False exception:None - 3/6 Task-1 done:False exception:None - 4/6 send_ping done:False exception:None - 5/6 pat_watchdog done:False exception:None - 6/6 atn-main done:False exception:None - -2025-01-03 14:48:37.704 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 14:48:37.704 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 14:48:37.704 Tasks: 5 [PENDING] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 14:48:37.704 Tasks: 5 [WAITING FOR] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 14:48:37.704 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:48:37.705 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:48:37.706 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:48:37.706 [atn] REPORT RECEIVED ff7690a1-a9dd-41b2-a87d-3890518b26fb -2025-01-03 14:48:37.706 [atn] REPORT RECEIVED 61e232bf-57cd-4e24-bf47-bfb3425b33f8 -2025-01-03 14:48:37.706 [atn] REPORT RECEIVED 09b32dc8-7a55-4763-9225-1bcf17468a16 -2025-01-03 14:48:37.707 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:48:37.708 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:48:37.708 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:48:39.009 [atn] REPORT RECEIVED e4dffdf4-8588-43b8-8778-9dc045df5b9f -2025-01-03 14:48:42.007 [atn] REPORT RECEIVED 97727e02-a9d3-47b0-a46a-45943d5c1930 -2025-01-03 14:48:42.705 [atn] Minute 48 - not running Dijkstra -2025-01-03 14:48:45.007 [atn] REPORT RECEIVED 70113f91-d571-43ff-92c0-08eb20b0b29d -2025-01-03 14:48:50.942 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:48:50.943 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:48:50.943 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:48:51.004 [atn] REPORT RECEIVED 65c6e9d3-29d3-4a61-b606-a4b232ad1bca -2025-01-03 14:48:54.007 [atn] REPORT RECEIVED 8294f727-3157-4e33-9c54-ce6ef04c5d03 -2025-01-03 14:48:57.007 [atn] REPORT RECEIVED 0a7f4e25-1b36-417e-a643-fff27b41a1c1 -2025-01-03 14:49:00.021 [atn] REPORT RECEIVED 333ac365-74f2-4b42-bbaa-f1fb9418823f -2025-01-03 14:49:03.009 [atn] REPORT RECEIVED aca9c583-3d7b-474c-a885-e218763ff416 -2025-01-03 14:49:06.009 [atn] REPORT RECEIVED 1855a422-5479-45b5-934d-58c9e1ae4f32 -2025-01-03 14:49:07.628 scada: active -- mqtt_disconnected --> connecting -2025-01-03 14:49:22.652 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:49:22.653 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:49:22.655 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:49:22.657 [atn] REPORT RECEIVED 47155b3f-11ca-4eda-9e7f-37c3cf495545 -2025-01-03 14:49:22.658 [atn] REPORT RECEIVED d6d2af86-0cd7-4f0f-a2d5-8d9e77dbbf7f -2025-01-03 14:49:22.660 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:49:22.660 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:49:22.660 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:49:22.661 [atn] REPORT RECEIVED 6f6034bf-37cb-48bc-8abf-104bd21c72d3 -2025-01-03 14:49:22.662 [atn] REPORT RECEIVED d8bfc57a-f728-426c-b94e-89aabd341859 -2025-01-03 14:49:22.662 [atn] REPORT RECEIVED 8df6c1fc-ad52-40e9-a61f-19ae45bdef60 -2025-01-03 14:49:24.007 [atn] REPORT RECEIVED e8e69bf1-03b8-4744-a4b4-bfef37654da5 -2025-01-03 14:49:27.007 [atn] REPORT RECEIVED 45f758b2-d192-4ff4-bb46-1e042cdcbd35 -2025-01-03 14:49:30.016 [atn] REPORT RECEIVED 62ca699c-5497-4aea-ab60-0f45a1a0e65a -2025-01-03 14:49:33.004 [atn] REPORT RECEIVED b2875de7-e73a-49f2-9c94-8dfde3f334f5 -2025-01-03 14:49:36.007 [atn] REPORT RECEIVED df066ffe-b4ea-49f3-ba15-c16bf68852e4 -2025-01-03 14:49:39.009 [atn] REPORT RECEIVED 58e70ff8-1d2f-4988-b015-927cf2016613 -2025-01-03 14:49:42.009 [atn] REPORT RECEIVED 653bae1a-bf1d-4372-9f12-f12f80a70b7a -2025-01-03 14:49:45.007 [atn] REPORT RECEIVED edf966e5-cbdb-4b07-94f9-fe9e60e60dff -2025-01-03 14:49:48.008 [atn] REPORT RECEIVED 776675dc-84ff-4e2b-91e2-c238ac124fd7 -2025-01-03 14:49:48.709 [atn] Minute 49 - not running Dijkstra -2025-01-03 14:49:51.006 [atn] REPORT RECEIVED c5bc32d1-d3f7-4c13-af19-730ed64161bf -2025-01-03 14:49:54.006 [atn] REPORT RECEIVED 052a1d41-e6c8-441f-8c3e-50d954928db1 -2025-01-03 14:49:55.423 scada: active -- mqtt_disconnected --> connecting -2025-01-03 14:50:26.451 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 14:50:26.452 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 14:50:26.460 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:50:26.463 [atn] REPORT RECEIVED b4ba39c9-ef01-4a02-b63c-14d2ca9ffba1 -2025-01-03 14:50:26.463 [atn] REPORT RECEIVED 978efc66-a70a-4b26-ba01-264f60e8504a -2025-01-03 14:50:26.466 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 14:50:26.466 [atn] State is now DispatchDormantScadaReady -2025-01-03 14:50:26.466 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 14:50:26.466 [atn] REPORT RECEIVED f68fe387-fab0-4fae-af2f-48f7c65786f9 -2025-01-03 14:50:26.467 [atn] REPORT RECEIVED d9bf94ba-a02c-417a-8bcd-0b1485de78a3 -2025-01-03 14:50:26.467 [atn] REPORT RECEIVED e44da642-9adf-4607-9727-055cfe6cabe7 -2025-01-03 14:50:26.467 [atn] REPORT RECEIVED 2499fc8d-49ab-4e06-a946-da050d91d2da -2025-01-03 14:50:26.467 [atn] REPORT RECEIVED 8b34ee0d-cf0f-4fce-9d55-107cca3d656a -2025-01-03 14:50:26.468 [atn] REPORT RECEIVED 6efcc1d4-c229-4830-bd25-e50cd490db18 -2025-01-03 14:50:26.468 [atn] REPORT RECEIVED 02760a65-7def-4530-b630-2b5d578b66ea -2025-01-03 14:50:26.469 [atn] REPORT RECEIVED 6523ca3f-0ad4-478d-856a-1f5fe0b8c6e5 -2025-01-03 14:50:27.008 [atn] REPORT RECEIVED cb206b04-801a-4c2e-af51-ed76f7215a93 -2025-01-03 14:50:30.015 [atn] REPORT RECEIVED ea0450b7-9bec-4a0e-aa25-67c29f305c5e -2025-01-03 14:50:31.455 scada: active -- response_timeout --> awaiting_peer -2025-01-03 14:50:33.005 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 14:50:33.006 [atn] REPORT RECEIVED 035130be-24a6-43c7-84f1-d1fb96504d9c -2025-01-03 14:50:36.006 [atn] REPORT RECEIVED 08f2a01d-6279-4c87-98c9-46cf917c3773 -2025-01-03 14:50:39.007 [atn] REPORT RECEIVED 0c8edf2b-8114-4d99-8c14-a5ef754fdea7 -2025-01-03 14:50:42.007 [atn] REPORT RECEIVED 9431b7ab-1334-4630-af17-f594472923e6 -2025-01-03 14:50:45.008 [atn] REPORT RECEIVED c209c344-e85b-4e0e-9f47-e1a887a39043 -2025-01-03 14:50:48.009 [atn] REPORT RECEIVED 2ae1e9ed-40c8-453b-b8a0-da628f90df87 -2025-01-03 14:50:51.009 [atn] REPORT RECEIVED d5795e79-d3cc-42e2-866c-fd49b584969c -2025-01-03 14:50:54.007 [atn] REPORT RECEIVED 6fdfe200-84fb-4359-b004-79acb59badbb -2025-01-03 14:50:54.712 [atn] Minute 50 - not running Dijkstra -2025-01-03 14:50:57.009 [atn] REPORT RECEIVED 35d34dc4-5c8e-4136-9a65-c01ad49073cc -2025-01-03 14:51:00.024 [atn] REPORT RECEIVED 113f8f4f-530f-4553-ae53-740bac05dad2 -2025-01-03 14:51:03.006 [atn] REPORT RECEIVED 50aaf67a-3f7b-4d60-87e1-8b9e36b729ee -2025-01-03 14:51:06.007 [atn] REPORT RECEIVED 1a369430-e415-4340-912b-d197ade5865d -2025-01-03 14:51:09.008 [atn] REPORT RECEIVED 6589c374-06f5-4db3-b6b6-4dd9e72a0a98 -2025-01-03 14:51:12.008 [atn] REPORT RECEIVED b5745f6b-c35e-4cb9-b756-290407121f5b -2025-01-03 14:51:15.008 [atn] REPORT RECEIVED 8499e568-cf11-4760-b6db-50029ff6970a -2025-01-03 14:51:18.008 [atn] REPORT RECEIVED d549d004-bfe8-4407-b3d8-75e40ecab08d -2025-01-03 14:51:21.008 [atn] REPORT RECEIVED 823abc25-09be-4277-aba6-c8d47bf880e1 -2025-01-03 14:51:24.008 [atn] REPORT RECEIVED 13b379b9-3b93-4df5-ab5d-ae15ad0cac7f -2025-01-03 14:51:27.006 [atn] REPORT RECEIVED 8b95c391-ec1f-40e0-8a99-83b6d6b4eeee -2025-01-03 14:51:30.020 [atn] REPORT RECEIVED 175b531f-3d6d-4b63-8f84-44fdd2c4fcf2 -2025-01-03 14:51:33.008 [atn] REPORT RECEIVED ddab8c76-0624-45bd-8405-67b519037f0e -2025-01-03 14:51:36.008 [atn] REPORT RECEIVED 7707b73a-8a48-4467-a360-fcc0385ea14b -2025-01-03 14:51:39.008 [atn] REPORT RECEIVED 7559fd9f-b36c-49d3-b79b-f2fe2ab9e609 -2025-01-03 14:51:42.008 [atn] REPORT RECEIVED 0e8bb9b4-c336-4273-8f2f-acd4bc7d1ab9 -2025-01-03 14:51:45.008 [atn] REPORT RECEIVED a01131cb-130f-4b3c-bb80-c28dce9cbf0c -2025-01-03 14:51:48.008 [atn] REPORT RECEIVED d5232c88-0a73-45c9-8876-21f09cb54c77 -2025-01-03 14:51:51.007 [atn] REPORT RECEIVED f9012985-1db5-4f52-beb9-1bd128b77633 -2025-01-03 14:51:54.008 [atn] REPORT RECEIVED a99d0f84-ee12-4816-a73f-2ea1080742d3 -2025-01-03 14:51:57.008 [atn] REPORT RECEIVED c62a1eeb-9710-4797-afe1-820a8c34bb68 -2025-01-03 14:52:00.022 [atn] REPORT RECEIVED 449fefd8-cbd5-4b0b-9124-5fb7b14883c4 -2025-01-03 14:52:00.715 [atn] Minute 52 - not running Dijkstra -2025-01-03 14:52:03.008 [atn] REPORT RECEIVED ba16e09f-786e-4146-a7f4-74599abbe44d -2025-01-03 14:52:06.008 [atn] REPORT RECEIVED 2eadcb0f-b22d-40e0-b3c8-7f49ec6f4d54 -2025-01-03 14:52:09.007 [atn] REPORT RECEIVED a7dc8423-3e87-49c4-9dc1-b4ffdd3b6894 -2025-01-03 14:52:12.007 [atn] REPORT RECEIVED 72ef35ca-762d-4d8a-8499-e7766b47d764 -2025-01-03 14:52:15.007 [atn] REPORT RECEIVED e06aec8f-a9cb-4191-9e94-0618a192485b -2025-01-03 14:52:18.007 [atn] REPORT RECEIVED 389ae4ed-405a-412b-a143-d0fa5eff0716 -2025-01-03 14:52:21.007 [atn] REPORT RECEIVED 0e6280c0-3b90-4e90-810c-b22be2cef7ab -2025-01-03 14:52:24.006 [atn] REPORT RECEIVED 461ff540-71bc-4f69-a0a9-9648bb87bfe1 -2025-01-03 14:52:27.007 [atn] REPORT RECEIVED d788c3af-94f1-4b11-ac42-28854e576fbf -2025-01-03 14:52:30.018 [atn] REPORT RECEIVED f6f9a798-6daa-4a6d-8510-204e9979c60b -2025-01-03 14:52:33.006 [atn] REPORT RECEIVED 031ef998-d2c8-46ea-ac55-f53ed55b5e9d -2025-01-03 14:52:36.006 [atn] REPORT RECEIVED 18599f8b-9d4a-4e9b-8a3f-ddf4bb9cc7e4 -2025-01-03 14:52:39.006 [atn] REPORT RECEIVED 3291e893-4d5d-484c-9007-02a417bb499b -2025-01-03 14:52:42.007 [atn] REPORT RECEIVED 25e6ed68-1ba7-40f9-bbba-6d7a5de7fdda -2025-01-03 14:52:45.007 [atn] REPORT RECEIVED 27bbf417-cd21-4527-b92d-56f9519528d1 -2025-01-03 14:52:48.007 [atn] REPORT RECEIVED 07403c61-0575-43bc-99fb-4769c0ed6a65 -2025-01-03 14:52:51.007 [atn] REPORT RECEIVED 24bb08ad-5072-4f27-b244-f41253202761 -2025-01-03 14:52:54.007 [atn] REPORT RECEIVED 2fc2aae6-481f-41c2-94a7-29e992df23a3 -2025-01-03 14:52:57.006 [atn] REPORT RECEIVED 6b092c86-7905-4092-bf5c-6efb486606a6 -2025-01-03 14:53:00.019 [atn] REPORT RECEIVED 4934efc1-e5e2-4f18-b4ff-66d150b83389 -2025-01-03 14:53:03.006 [atn] REPORT RECEIVED 4f60db81-8651-4d23-95ac-feaf57393b80 -2025-01-03 14:53:06.010 [atn] REPORT RECEIVED 21face8c-3ff4-4468-906b-19973af93426 -2025-01-03 14:53:06.685 [atn] Minute 53 - not running Dijkstra -2025-01-03 14:53:09.010 [atn] REPORT RECEIVED 0153e260-71f9-4d01-8ed2-f7a57b8f20c8 -2025-01-03 14:53:12.009 [atn] REPORT RECEIVED dbb2f8b5-73b1-4bda-9538-06480e54d950 -2025-01-03 14:53:15.010 [atn] REPORT RECEIVED a6a9faec-44c5-4ad6-8d08-939d9fcf79f1 -2025-01-03 14:53:18.009 [atn] REPORT RECEIVED 35541672-2603-4b41-b27c-5b0b35a769cd -2025-01-03 14:53:21.006 [atn] REPORT RECEIVED fb6b4536-676b-434e-8cd3-654bf803a9f2 -2025-01-03 14:53:24.007 [atn] REPORT RECEIVED ad375fe1-2c7b-40c1-a1dd-85f991bafc8b -2025-01-03 14:53:27.009 [atn] REPORT RECEIVED 98ea6047-d96b-40cc-a84d-953312d06408 -2025-01-03 14:53:30.023 [atn] REPORT RECEIVED baf85b8c-a6f3-44b4-b39d-8182a6052a95 -2025-01-03 14:53:33.006 [atn] REPORT RECEIVED d60e153f-82d9-4b28-a4a5-4c86cce977b2 -2025-01-03 14:53:36.007 [atn] REPORT RECEIVED d71409b0-b521-42c7-ba47-92f34acc052c -2025-01-03 14:53:39.007 [atn] REPORT RECEIVED 6188e64f-d4bc-454a-ae26-4db4ea0ef399 -2025-01-03 14:53:42.007 [atn] REPORT RECEIVED c39fa418-37de-4043-a22d-833a4324f3aa -2025-01-03 14:53:45.006 [atn] REPORT RECEIVED 6fea9824-9bd6-4200-acf5-031848092597 -2025-01-03 14:53:48.010 [atn] REPORT RECEIVED a9f5f1b9-7f6d-498a-9468-b5d66861cd64 -2025-01-03 14:53:51.008 [atn] REPORT RECEIVED b0f04ae1-0ac3-47b8-a33b-145ca08b3d10 -2025-01-03 14:53:54.011 [atn] REPORT RECEIVED 51acb4a2-7b5d-4624-8e7f-e457035d4188 -2025-01-03 14:53:57.009 [atn] REPORT RECEIVED 26652a5a-7b74-45ca-a81a-71ca179bda71 -2025-01-03 14:54:00.023 [atn] REPORT RECEIVED 42cb3639-9927-4d90-9e27-a7ff8a48cf66 -2025-01-03 14:54:03.006 [atn] REPORT RECEIVED 8a6a82a1-9e28-453c-9f6a-3b1a66ea73fb -2025-01-03 14:54:06.008 [atn] REPORT RECEIVED d1981e08-a14d-4275-9749-b09e4f068f28 -2025-01-03 14:54:09.007 [atn] REPORT RECEIVED 8f722692-89e4-4c87-aa0c-0601ca7df521 -2025-01-03 14:54:12.008 [atn] REPORT RECEIVED 501db383-4214-455d-b7a9-ffe0e4d3df63 -2025-01-03 14:54:12.687 [atn] Minute 54 - not running Dijkstra -2025-01-03 14:54:15.010 [atn] REPORT RECEIVED 71797d04-a3c7-402b-8801-f0fffcfcb3b4 -2025-01-03 14:54:18.009 [atn] REPORT RECEIVED 7ccc9a94-b4ed-4155-9d39-d77f7a73d150 -2025-01-03 14:54:21.007 [atn] REPORT RECEIVED 10721433-2747-4056-bebc-482fbf1339b1 -2025-01-03 14:54:24.009 [atn] REPORT RECEIVED 77ebf982-12bb-4ab4-9245-db6c6e9f8d07 -2025-01-03 14:54:27.006 [atn] REPORT RECEIVED 731a3d5e-7188-4708-b0cd-625a3607cd8a -2025-01-03 14:54:30.023 [atn] REPORT RECEIVED c7e6ffad-ea0f-4a89-8b8b-d95a38b3ff95 -2025-01-03 14:54:33.006 [atn] REPORT RECEIVED e27896ff-1cea-4b70-bb7a-92bd793ebfef -2025-01-03 14:54:36.007 [atn] REPORT RECEIVED e58e0459-95a0-4bd7-a1b9-263a1fc1f4d5 -2025-01-03 14:54:39.008 [atn] REPORT RECEIVED ab27bdb7-adec-4528-b4da-81e96e119766 -2025-01-03 14:54:42.010 [atn] REPORT RECEIVED 46f948b9-a46a-4a95-9603-5d9b14e6f2e4 -2025-01-03 14:54:45.008 [atn] REPORT RECEIVED af019e15-6b82-41af-8476-45971a7d236f -2025-01-03 14:54:48.006 [atn] REPORT RECEIVED d1bbfbdb-06f2-490d-8102-8f5baafaa3e7 -2025-01-03 14:54:51.007 [atn] REPORT RECEIVED 444aa88b-a4cf-463d-b76f-6eb65fb8e651 -2025-01-03 14:54:54.007 [atn] REPORT RECEIVED 73d6c583-afe2-402d-895e-495cd7606799 -2025-01-03 14:54:57.010 [atn] REPORT RECEIVED 5b320c45-6dde-4937-b4ba-157c1b922ca9 -2025-01-03 14:55:00.024 [atn] REPORT RECEIVED 76e17934-fc02-470e-9ef1-f90311ce30bf -2025-01-03 14:55:03.009 [atn] REPORT RECEIVED bcd2ba8f-523e-498c-a9e5-0f4810cef94f -2025-01-03 14:55:06.009 [atn] REPORT RECEIVED d32bc82b-fe59-4d85-b9d8-d65c38a30368 -2025-01-03 14:55:09.006 [atn] REPORT RECEIVED 10ab918b-5785-472d-81ae-f8017831bf6b -2025-01-03 14:55:12.006 [atn] REPORT RECEIVED 7f3dff1d-10f5-45ab-9c0c-787c69be6809 -2025-01-03 14:55:15.009 [atn] REPORT RECEIVED 72f3069d-6a46-4978-8515-bf644b716411 -2025-01-03 14:55:18.010 [atn] REPORT RECEIVED da4e8607-ca8d-41c0-a50b-ce26bccdbf29 -2025-01-03 14:55:18.690 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 14:55:21.010 [atn] REPORT RECEIVED ce5b2f51-c522-4fc9-9654-494115dd3658 -2025-01-03 14:55:24.009 [atn] REPORT RECEIVED e7dd90a0-30b8-495b-884a-d00f0bc954b8 -2025-01-03 14:55:27.006 [atn] REPORT RECEIVED 7493e127-97f5-403a-a23b-357487ab5fe6 -2025-01-03 14:55:30.022 [atn] REPORT RECEIVED 192a19d1-efd6-41a0-ac06-cf211c965157 -2025-01-03 14:55:33.009 [atn] REPORT RECEIVED dd1552ce-aee2-4aa0-b52f-a96e4db8c01f -2025-01-03 14:55:36.004 [atn] REPORT RECEIVED c2a281b3-534a-4d22-86c3-8d39956d2498 -2025-01-03 14:55:39.010 [atn] REPORT RECEIVED 2cef1db2-f9ff-4465-8ead-e0c56b9c31c6 -2025-01-03 14:55:42.009 [atn] REPORT RECEIVED eda847bb-c74c-4dcd-b97b-9d64a59823b8 -2025-01-03 14:55:45.010 [atn] REPORT RECEIVED 82cca90e-7901-4a77-ab3f-c1e558863e08 -2025-01-03 14:55:48.005 [atn] REPORT RECEIVED acaeae09-99a6-4f27-9593-80f7badb1b8a -2025-01-03 14:55:51.010 [atn] REPORT RECEIVED 9e558059-0aaf-40aa-be97-5e60b5b751b5 -2025-01-03 14:55:54.010 [atn] REPORT RECEIVED 38d7d9a0-a502-4ef4-a46d-13414fe569a6 -2025-01-03 14:55:57.010 [atn] REPORT RECEIVED e8eb170b-07bc-473e-ad1c-ccea23721f4f -2025-01-03 14:56:00.026 [atn] REPORT RECEIVED 33009583-85ab-456a-b851-51f54c1ec0d7 -2025-01-03 14:56:03.007 [atn] REPORT RECEIVED ad80624b-847d-42f3-997a-a5fc7ce97d88 -2025-01-03 14:56:06.010 [atn] REPORT RECEIVED bca29cb9-f3c8-4998-90e8-345f141a763d -2025-01-03 14:56:09.008 [atn] REPORT RECEIVED 2e998259-15f9-40a4-9828-9bf3178383db -2025-01-03 14:56:12.010 [atn] REPORT RECEIVED 2a706b6d-845b-4f3c-b06d-222fdcc4c887 -2025-01-03 14:56:15.009 [atn] REPORT RECEIVED 997244fd-d4a5-4117-ad41-ab2e6dd4dfa6 -2025-01-03 14:56:18.014 [atn] REPORT RECEIVED ccdcdbbb-1ff5-43a3-9bfb-562301126c3d -2025-01-03 14:56:21.009 [atn] REPORT RECEIVED 8dca8e42-a5eb-4944-ab8f-d4cf0d505a1d -2025-01-03 14:56:24.012 [atn] REPORT RECEIVED ddce2197-c1ae-4875-af17-8db3dcfc8bd0 -2025-01-03 14:56:24.693 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 14:56:27.009 [atn] REPORT RECEIVED 7859b6d8-c779-4c0e-ad64-8548b0620537 -2025-01-03 14:56:30.021 [atn] REPORT RECEIVED 8669123a-dfa0-41e1-93c5-447fc82e6227 -2025-01-03 14:56:33.007 [atn] REPORT RECEIVED 95fd2603-853f-4720-b6cb-bddba183ba34 -2025-01-03 14:56:36.007 [atn] REPORT RECEIVED 99ef9c93-d341-46a9-8b3c-6183a5e0ad68 -2025-01-03 14:56:39.010 [atn] REPORT RECEIVED 75914cdf-8aa9-479c-8fd0-db6be5eee0eb -2025-01-03 14:56:42.007 [atn] REPORT RECEIVED 2bf4a26e-e7fe-484f-bd8e-bc89c7ebad37 -2025-01-03 14:56:45.006 [atn] REPORT RECEIVED 4cb64303-1e98-44ff-9b4e-99f29a04f8f8 -2025-01-03 14:56:48.008 [atn] REPORT RECEIVED 790ce996-61aa-4cac-b425-ca8ab9518b33 -2025-01-03 14:56:51.009 [atn] REPORT RECEIVED 960f66d0-4d69-466d-93ee-6cf9659fab6e -2025-01-03 14:56:54.010 [atn] REPORT RECEIVED b960f5c3-fafa-44e0-ab9e-c5ee57462fcf -2025-01-03 14:56:57.009 [atn] REPORT RECEIVED 0de8e280-2a05-4183-b88c-cc2e0b118a7a -2025-01-03 14:57:00.020 [atn] REPORT RECEIVED e08edafb-e388-406e-9467-8014e7248adc -2025-01-03 14:57:03.007 [atn] REPORT RECEIVED 88f869ef-5dcc-406d-8bb7-b3b78edf0a04 -2025-01-03 14:57:06.007 [atn] REPORT RECEIVED 1f5a17e5-fa6d-4e49-8cf4-32700fd74595 -2025-01-03 14:57:09.007 [atn] REPORT RECEIVED 5cec8422-17a9-4767-8e8d-4939bee5279e -2025-01-03 14:57:12.009 [atn] REPORT RECEIVED a3152254-dea8-4a6e-9b22-ac13d44fd2d6 -2025-01-03 14:57:15.009 [atn] REPORT RECEIVED 28a0803e-be35-4bc2-a8f2-f2a78dd772df -2025-01-03 14:57:18.006 [atn] REPORT RECEIVED 8c243883-8ffb-4731-b3ba-a646b9657976 -2025-01-03 14:57:21.007 [atn] REPORT RECEIVED 264af785-c2e7-4b63-9743-aed0b7265ef3 -2025-01-03 14:57:24.007 [atn] REPORT RECEIVED 9f2e6d17-439a-4be5-8a43-0359ff6635a5 -2025-01-03 14:57:27.010 [atn] REPORT RECEIVED 9e1e2c25-9ee7-4dd1-ae65-e027955de149 -2025-01-03 14:57:30.024 [atn] REPORT RECEIVED bbb1f730-b519-4aec-87c0-4889537c703c -2025-01-03 14:57:30.695 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 14:57:33.006 [atn] REPORT RECEIVED a04c20a0-8ccd-4ea5-94bc-28d0e5655f49 -2025-01-03 14:57:36.009 [atn] REPORT RECEIVED 5dce91d7-ffc6-4758-b169-9cf9ea000b10 -2025-01-03 14:57:39.005 [atn] REPORT RECEIVED ebb0379f-198a-45be-a3a5-0c051a486d63 -2025-01-03 14:57:42.007 [atn] REPORT RECEIVED ed846841-484e-405f-9297-aeb26811f2b7 -2025-01-03 14:57:45.007 [atn] REPORT RECEIVED fb920165-f7f3-4bc7-9317-df41d416a656 -2025-01-03 14:57:48.006 [atn] REPORT RECEIVED c5c62c63-9268-42ef-8636-f666a4270dc8 -2025-01-03 14:57:51.007 [atn] REPORT RECEIVED e40cada6-7235-41b9-b42e-10e8ab037e43 -2025-01-03 14:57:54.010 [atn] REPORT RECEIVED eb4c6396-2f83-4120-8a82-36ae916d278b -2025-01-03 14:57:57.007 [atn] REPORT RECEIVED 57972cbc-613b-4816-937b-dfd585b99e02 -2025-01-03 14:58:00.020 [atn] REPORT RECEIVED d35419b7-5116-4a0e-91e7-5cec6f316a7f -2025-01-03 14:58:03.009 [atn] REPORT RECEIVED 792e23d2-18ea-4de5-9928-2b273b76203c -2025-01-03 14:58:06.006 [atn] REPORT RECEIVED 6c7c2586-a999-49ec-aff4-aba1c144f0ab -2025-01-03 14:58:09.008 [atn] REPORT RECEIVED 1168d08e-01c8-4fbc-adbe-9516dfc77a77 -2025-01-03 14:58:12.007 [atn] REPORT RECEIVED 4e83d78c-faf0-454e-832b-1cd2027dd978 -2025-01-03 14:58:15.006 [atn] REPORT RECEIVED 531d67b1-9e0c-4fb7-97a7-2264070a7268 -2025-01-03 14:58:18.009 [atn] REPORT RECEIVED 8792af04-7c13-4041-953f-c0310316cedb -2025-01-03 14:58:21.008 [atn] REPORT RECEIVED d7f5d332-f34e-4102-a29f-eb56e74e9cb1 -2025-01-03 14:58:24.007 [atn] REPORT RECEIVED a93cadc7-cb55-4b21-a298-81e95d040017 -2025-01-03 14:58:27.007 [atn] REPORT RECEIVED 45585afd-f0c0-499c-b5b5-482e96e54340 -2025-01-03 14:58:30.018 [atn] REPORT RECEIVED 6bf38055-7589-4bb4-ac9a-9ef17aed1d92 -2025-01-03 14:58:33.008 [atn] REPORT RECEIVED 37fa265f-000e-4002-9a25-6e4baade719a -2025-01-03 14:58:36.006 [atn] REPORT RECEIVED caa1e991-f6f4-49d5-a991-5faed426a989 -2025-01-03 14:58:36.698 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 14:58:39.008 [atn] REPORT RECEIVED 0fd7f25f-78e0-4e00-906f-d68b86390bc7 -2025-01-03 14:58:42.005 [atn] REPORT RECEIVED bcb8c912-d6bc-49b4-a6ac-977f1818bc0b -2025-01-03 14:58:45.007 [atn] REPORT RECEIVED 226dad46-cd3a-4d7d-8ff4-2862097382c3 -2025-01-03 14:58:48.007 [atn] REPORT RECEIVED f82c346e-661e-41d1-a646-e3dcf465939c -2025-01-03 14:58:51.006 [atn] REPORT RECEIVED 1ee7ad30-3d45-41e5-9edf-1402b415f45d -2025-01-03 14:58:54.009 [atn] REPORT RECEIVED 607f1f93-933e-417b-a636-4e52e9e116ab -2025-01-03 14:58:57.009 [atn] REPORT RECEIVED afe3eeb0-5198-4c79-b62b-cbf9c142fa5c -2025-01-03 14:59:00.023 [atn] REPORT RECEIVED 98357c0e-ed32-4e09-977c-1489a4bd08c4 -2025-01-03 14:59:03.005 [atn] REPORT RECEIVED cfd196c8-e22d-43db-8696-04ce3c781681 -2025-01-03 14:59:06.005 [atn] REPORT RECEIVED 55bdf703-34fd-43b8-ba9e-578c0140409c -2025-01-03 14:59:09.009 [atn] REPORT RECEIVED 48fd64b7-3b2d-416f-a0c0-9127ef49abb3 -2025-01-03 14:59:12.007 [atn] REPORT RECEIVED 9ec0b424-37a3-4e90-9aa9-9150b43ca183 -2025-01-03 14:59:15.007 [atn] REPORT RECEIVED 3e73c5d3-0f7f-4f27-ba56-4646ba2c35ce -2025-01-03 14:59:18.010 [atn] REPORT RECEIVED ad5c0a4d-b998-42b3-a335-54ffeeec5f2c -2025-01-03 14:59:21.007 [atn] REPORT RECEIVED c37b81ab-41d0-4e97-8b7b-cbe2194882c8 -2025-01-03 14:59:24.010 [atn] REPORT RECEIVED c467ba66-46f2-44b9-822e-e7636b3ae3fa -2025-01-03 14:59:27.006 [atn] REPORT RECEIVED 0d37dc9c-ffe8-42a9-a68d-ba24c444350e -2025-01-03 14:59:30.028 [atn] REPORT RECEIVED aa404d61-c442-41c0-beda-4f17ad4ffd0d -2025-01-03 14:59:33.009 [atn] REPORT RECEIVED 1f29ad89-a7db-4914-8f11-eea561958936 -2025-01-03 14:59:36.006 [atn] REPORT RECEIVED 287a9658-dcf1-4438-8763-edf9f432284c -2025-01-03 14:59:39.009 [atn] REPORT RECEIVED cd2d49ad-cbb3-447a-85a9-ebc28076b65d -2025-01-03 14:59:42.008 [atn] REPORT RECEIVED a25ed6b4-3c7d-4557-a1af-69ac9f6ade0f -2025-01-03 14:59:42.701 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 14:59:45.006 [atn] REPORT RECEIVED e08f7880-7ee2-4199-a27e-b849b1e9e346 -2025-01-03 14:59:48.009 [atn] REPORT RECEIVED 1bfcb232-7427-471a-8040-f57b2d740300 -2025-01-03 14:59:51.009 [atn] REPORT RECEIVED 9e1eadcc-a2db-48da-9e1d-fe4934571687 -2025-01-03 14:59:54.008 [atn] REPORT RECEIVED 7d1214a6-e9d7-404c-afdb-87ae42b6abfc -2025-01-03 14:59:57.007 [atn] REPORT RECEIVED cc67f3c3-ca84-45ac-a4fc-94f85f1e43b4 -2025-01-03 14:59:59.965 [atn] Trying to Broadcasting price(x1000) 589630 at the top of the hour. -2025-01-03 14:59:59.967 [atn] Problem generating or sending a LatestPrice: 1 validation error for LatestPrice -MarketSlotName - Value error, market_slot_start_s mod 3600 must be 0 [type=value_error, input_value='e.rt60gate5.hw1.isone.ver.keene.1735912500', input_type=str] - For further information visit https://errors.pydantic.dev/2.8/v/value_error -2025-01-03 15:00:00.001 [atn] Trying to Broadcasting price(x1000) 589630 at the top of the hour. -2025-01-03 15:00:00.004 [atn] Received latest price -2025-01-03 15:00:00.004 [atn] Ignoring - no bid exists -2025-01-03 15:00:00.022 [atn] REPORT RECEIVED 99e3034b-0e33-4983-9e96-976d7490f448 -2025-01-03 15:00:03.009 [atn] REPORT RECEIVED 5dd43a7a-85aa-40fb-be79-903855ea9527 -2025-01-03 15:00:06.008 [atn] REPORT RECEIVED 4e3b8bf5-7dd7-40b8-867e-1de42913198b -2025-01-03 15:00:09.008 [atn] REPORT RECEIVED a02111fe-19fe-4723-8339-58221e0b6a23 -2025-01-03 15:00:12.008 [atn] REPORT RECEIVED 2a7aad21-cc1a-450d-ad19-4f243015bb05 -2025-01-03 15:00:15.009 [atn] REPORT RECEIVED d6073f51-f37e-4448-ab42-2d83d41b5c70 -2025-01-03 15:00:18.006 [atn] REPORT RECEIVED 2c52acae-67b8-4325-a29b-bdeef84fb77b -2025-01-03 15:00:21.012 [atn] REPORT RECEIVED a69e0cb0-0f46-448f-ae59-ca09711f3f0b -2025-01-03 15:00:24.004 [atn] REPORT RECEIVED 3e831aa8-7343-4e9e-9692-f800fc49e1ad -2025-01-03 15:00:27.009 [atn] REPORT RECEIVED 1ecd693f-2c4d-4694-8a67-2af13ee30a64 -2025-01-03 15:00:30.024 [atn] REPORT RECEIVED e1f63e95-03b4-463d-849b-86d78fbabb9c -2025-01-03 15:00:33.009 [atn] REPORT RECEIVED 63620ec4-57c6-4dc2-bae5-43f9696978b4 -2025-01-03 15:00:36.010 [atn] REPORT RECEIVED 231af071-ebbf-4759-b309-18b411690815 -2025-01-03 15:00:39.004 [atn] REPORT RECEIVED d58baefc-6a39-445d-a6c5-cdb9551a31b8 -2025-01-03 15:00:42.007 [atn] REPORT RECEIVED 72b9445c-4dda-4f30-9158-b3956c6ce1ba -2025-01-03 15:00:45.009 [atn] REPORT RECEIVED 8f770256-bbfa-4498-ba56-be577a8506fa -2025-01-03 15:00:48.009 [atn] REPORT RECEIVED a7a3a8f2-3397-47ad-ae15-8dc058dcba8d -2025-01-03 15:00:48.704 [atn] Minute 0 - not running Dijkstra -2025-01-03 15:00:51.009 [atn] REPORT RECEIVED 77c85f96-43fc-4b66-8799-bacf6aa858a2 -2025-01-03 15:00:54.011 [atn] REPORT RECEIVED 119584bd-41e7-4f48-ae08-efea194cef4a -2025-01-03 15:00:57.007 [atn] REPORT RECEIVED aa92109e-9f10-4308-8292-40503c3c60a4 -2025-01-03 15:01:00.022 [atn] REPORT RECEIVED f545f811-41f4-43bc-87cb-ec9d846a042d -2025-01-03 15:01:03.009 [atn] REPORT RECEIVED f71b87f9-5164-49e1-9d76-7e33a1bd7134 -2025-01-03 15:01:06.009 [atn] REPORT RECEIVED bb480cf4-5cfe-4a59-a93e-fb6e7b159d96 -2025-01-03 15:01:09.009 [atn] REPORT RECEIVED 53505ddd-1be6-4484-b538-17c552d62a78 -2025-01-03 15:01:12.009 [atn] REPORT RECEIVED 379b846d-bcc7-4180-9ac8-a93b37bab86c -2025-01-03 15:01:15.009 [atn] REPORT RECEIVED cffd8f25-5113-4ad6-9c16-99fc2fb0e9de -2025-01-03 15:01:18.006 [atn] REPORT RECEIVED 89a561ef-b7a9-45d0-a9cf-830caf11294f -2025-01-03 15:01:21.007 [atn] REPORT RECEIVED c26b7faf-9d65-401c-b2bf-c5c8a07d10c6 -2025-01-03 15:01:24.007 [atn] REPORT RECEIVED b9867ed9-f9c0-42ee-b45a-a3511902158d -2025-01-03 15:01:27.008 [atn] REPORT RECEIVED a3bbbd53-6249-46e7-8faa-398e587dd5d7 -2025-01-03 15:01:30.018 [atn] REPORT RECEIVED 86df9e19-b3f7-45bf-a896-47e61ddd400a -2025-01-03 15:01:33.008 [atn] REPORT RECEIVED 4a1a5007-2005-44ff-99dd-532b2bdb1aaa -2025-01-03 15:01:36.008 [atn] REPORT RECEIVED 342be2e5-580a-459b-b23e-89b3ff48653f -2025-01-03 15:01:39.008 [atn] REPORT RECEIVED edab06b0-bf7e-4b45-8895-d660ea6d394a -2025-01-03 15:01:42.008 [atn] REPORT RECEIVED ce1f0f53-6234-4a39-a6e6-09de1f0bcf03 -2025-01-03 15:01:45.008 [atn] REPORT RECEIVED 10079148-786c-4efc-9603-5024ea6d367c -2025-01-03 15:01:48.007 [atn] REPORT RECEIVED 40489b4b-5b07-46f7-9e41-a2173bfcee8f -2025-01-03 15:01:51.008 [atn] REPORT RECEIVED 86b05b9b-8cd7-47b4-ab90-675a3d24a5e4 -2025-01-03 15:01:54.008 [atn] REPORT RECEIVED c6f5261f-a28c-4b44-ac0d-7490ea5041c4 -2025-01-03 15:01:54.706 [atn] Minute 1 - not running Dijkstra -2025-01-03 15:01:57.008 [atn] REPORT RECEIVED 1c043475-fff5-46e4-8aac-6d897895864d -2025-01-03 15:02:00.019 [atn] REPORT RECEIVED 53c1523c-69ac-4ae9-b1ff-4cbcc0a5ee84 -2025-01-03 15:02:03.008 [atn] REPORT RECEIVED 58dea44f-2d2a-4f6a-93a1-9eb65077d247 -2025-01-03 15:02:06.008 [atn] REPORT RECEIVED 4e9971ea-e709-4028-ad2f-da09c4b7d940 -2025-01-03 15:02:09.007 [atn] REPORT RECEIVED 66293b95-8ff6-4ec3-be9d-a7fc476f45a3 -2025-01-03 15:02:12.008 [atn] REPORT RECEIVED a7ba82bc-96ea-4bd4-b520-71ab2f32e121 -2025-01-03 15:02:15.008 [atn] REPORT RECEIVED 60e9a1e7-62a0-4666-8470-ded86ac5444d -2025-01-03 15:02:18.007 [atn] REPORT RECEIVED 83cfa925-aef0-4fe8-9ab9-79df8d5c65e1 -2025-01-03 15:02:21.008 [atn] REPORT RECEIVED 930a0bd0-3c80-4750-bd8b-5ae3ef0d72b2 -2025-01-03 15:02:24.009 [atn] REPORT RECEIVED 093a07bd-e81c-4f03-a8f2-a207cd59f470 -2025-01-03 15:02:27.008 [atn] REPORT RECEIVED 7401a979-eba1-42dc-8cde-d7e0dd75c7b9 -2025-01-03 15:02:30.018 [atn] REPORT RECEIVED 147f823e-50e3-480c-89fe-a60738451dd6 -2025-01-03 15:02:33.008 [atn] REPORT RECEIVED 10bd33d9-08cc-43a5-b6c2-c15e3219a61f -2025-01-03 15:02:36.008 [atn] REPORT RECEIVED c9a40ef7-6b59-4265-b5d6-501fd6faf7e5 -2025-01-03 15:02:39.009 [atn] REPORT RECEIVED 18a000cd-72a0-4f6e-95b9-43fb1311104a -2025-01-03 15:02:42.008 [atn] REPORT RECEIVED da3875bc-5ae1-46e2-876e-8a3df5482e4a -2025-01-03 15:02:45.006 [atn] REPORT RECEIVED 9ad1cf02-002f-40ca-b653-e754217ccdc7 -2025-01-03 15:02:48.007 [atn] REPORT RECEIVED 2e3d20f2-765c-4c4c-af53-7765b80add6a -2025-01-03 15:02:51.008 [atn] REPORT RECEIVED db368d28-de4c-4f9c-a0c2-efa45e97c574 -2025-01-03 15:02:54.009 [atn] REPORT RECEIVED 241e1ca1-e669-4978-b04f-be8a446a94e5 -2025-01-03 15:02:57.008 [atn] REPORT RECEIVED 6af98e82-17e2-4e78-a0b5-1904c21b8458 -2025-01-03 15:03:00.020 [atn] REPORT RECEIVED 4097f5a0-9d47-4533-8f1d-598b634e3f0e -2025-01-03 15:03:00.708 [atn] Minute 3 - not running Dijkstra -2025-01-03 15:03:03.007 [atn] REPORT RECEIVED 52dd7d2b-0e80-4866-bc1e-d6c2016a26e4 -2025-01-03 15:03:06.008 [atn] REPORT RECEIVED e2fbf513-21ca-4cbf-888e-78fb00dadbce -2025-01-03 15:03:09.012 [atn] REPORT RECEIVED 1e639a27-d991-41d4-a44a-2fe3f245ed3a -2025-01-03 15:03:12.009 [atn] REPORT RECEIVED c5dc91e2-aca5-4e47-946e-57687c86ffb7 -2025-01-03 15:03:15.008 [atn] REPORT RECEIVED 054f0cb3-e0bb-4dc7-92eb-47819ef95d00 -2025-01-03 15:03:18.008 [atn] REPORT RECEIVED d2fd8581-997d-424d-8657-f39862b9d6c2 -2025-01-03 15:03:21.007 [atn] REPORT RECEIVED a1719771-4523-4d8f-86cf-09fbbd646475 -2025-01-03 15:03:24.007 [atn] REPORT RECEIVED 9a96eae0-0ffa-4666-95ea-7d659d4b9468 -2025-01-03 15:03:27.008 [atn] REPORT RECEIVED 1e03bdb7-db38-45b8-992c-c3edad19c086 -2025-01-03 15:03:30.022 [atn] REPORT RECEIVED 5133a5bd-a1e7-4b11-8c76-e8d13ffc2988 -2025-01-03 15:03:33.009 [atn] REPORT RECEIVED 9ca129f8-b57f-46f1-a221-ed53b87fdd92 -2025-01-03 15:03:36.008 [atn] REPORT RECEIVED 8da1565b-c94d-4891-90ee-920ca2b7184e -2025-01-03 15:03:39.005 [atn] REPORT RECEIVED 51eb2cbc-ab96-4bfe-94ad-3f0d4f7bd033 -2025-01-03 15:03:42.009 [atn] REPORT RECEIVED 9a96d673-9d94-42a8-819d-07cd5dd72259 -2025-01-03 15:03:45.009 [atn] REPORT RECEIVED ae209095-df2c-49b6-aba9-225cdf3163f5 -2025-01-03 15:03:48.008 [atn] REPORT RECEIVED 49bc2f0a-9e07-4070-b9c5-5acaea8cf11e -2025-01-03 15:03:51.009 [atn] REPORT RECEIVED cc7e00bf-344f-4e45-9a1f-d86684031b85 -2025-01-03 15:03:54.008 [atn] REPORT RECEIVED 9b27ab00-09da-4c3d-a317-1b5ca3fde61c -2025-01-03 15:03:57.004 [atn] REPORT RECEIVED ba32539d-b6c4-4289-bbe5-afe61b3583e5 -2025-01-03 15:04:00.023 [atn] REPORT RECEIVED 02d3ecc3-b7ad-4de8-a954-ef4ed4823be3 -2025-01-03 15:04:03.009 [atn] REPORT RECEIVED 4c60173c-ee78-4e7e-ae20-22b1b1c85e0d -2025-01-03 15:04:06.006 [atn] REPORT RECEIVED fc1842dd-66de-49da-a6af-d2ad475a5ef8 -2025-01-03 15:04:06.712 [atn] Minute 4 - not running Dijkstra -2025-01-03 15:04:09.011 [atn] REPORT RECEIVED 6cea57d6-31b2-4b56-93dd-3ef0fd19d30e -2025-01-03 15:04:12.006 [atn] REPORT RECEIVED e342c1db-1207-41da-899b-c2161a3a36a5 -2025-01-03 15:04:15.008 [atn] REPORT RECEIVED 10f8eeac-4ef2-4b70-b00b-377030446a97 -2025-01-03 15:04:18.007 [atn] REPORT RECEIVED ce6b52c6-a2dc-41b6-bef8-2b5aef7d8240 -2025-01-03 15:04:21.007 [atn] REPORT RECEIVED c802c45b-4252-430d-91e9-1cfa9d2e5d5b -2025-01-03 15:04:24.006 [atn] REPORT RECEIVED 80792de5-bc9c-4f77-8f4c-d08129e7926b -2025-01-03 15:04:27.009 [atn] REPORT RECEIVED d121384b-620f-4136-8afc-97b49e468f14 -2025-01-03 15:04:30.023 [atn] REPORT RECEIVED 1d6decca-4065-4255-80e5-605deb3e7ac0 -2025-01-03 15:04:33.007 [atn] REPORT RECEIVED 99cb34b0-e9eb-45a2-9259-b0538c350004 -2025-01-03 15:04:36.009 [atn] REPORT RECEIVED f4d4996d-e549-4255-9dc9-af30aebcdba9 -2025-01-03 15:04:39.007 [atn] REPORT RECEIVED 6e420cee-52fe-42a8-8cc3-e1c4d44ece01 -2025-01-03 15:04:42.351 scada: active -- mqtt_disconnected --> connecting -2025-01-03 15:04:45.365 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 15:04:45.367 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 15:20:23.872 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 15:20:23.884 [atn] State is DispatchDormantScadaNotReady -2025-01-03 15:20:23.894 ++Proactor.join() proactor: -2025-01-03 15:20:23.895 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 15:20:23.895 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 15:20:23.895 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 15:20:23.895 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 15:20:23.895 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 15:20:23.895 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 15:20:23.896 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 15:20:23.897 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 15:20:23.899 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 15:20:23.899 [atn] State is now DispatchDormantScadaReady -2025-01-03 15:20:23.899 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 15:20:28.896 [atn] Minute 20 - not running Dijkstra -2025-01-03 15:21:34.899 [atn] Minute 21 - not running Dijkstra -2025-01-03 15:22:40.901 [atn] Minute 22 - not running Dijkstra -2025-01-03 15:23:46.903 [atn] Minute 23 - not running Dijkstra -2025-01-03 15:24:52.906 [atn] Minute 24 - not running Dijkstra -2025-01-03 15:25:00.015 [atn] REPORT RECEIVED 9a1c8c2d-aaf2-4b78-9f8a-265fe6c886c2 -2025-01-03 15:25:58.911 [atn] Minute 25 - not running Dijkstra -2025-01-03 15:27:04.928 [atn] Minute 27 - not running Dijkstra -2025-01-03 15:28:10.940 [atn] Minute 28 - not running Dijkstra -2025-01-03 15:29:16.946 [atn] Minute 29 - not running Dijkstra -2025-01-03 15:30:00.035 [atn] REPORT RECEIVED 6565180c-98a9-497f-80db-1a3e39bbef4e -2025-01-03 15:30:22.950 [atn] Minute 30 - not running Dijkstra -2025-01-03 15:31:28.956 [atn] Minute 31 - not running Dijkstra -2025-01-03 15:32:34.959 [atn] Minute 32 - not running Dijkstra -2025-01-03 15:33:40.962 [atn] Minute 33 - not running Dijkstra -2025-01-03 15:34:46.964 [atn] Minute 34 - not running Dijkstra -2025-01-03 15:35:00.023 [atn] REPORT RECEIVED 60ef5fbe-d4ec-44ea-9f6f-34beb8b7c084 -2025-01-03 15:35:52.967 [atn] Minute 35 - not running Dijkstra -2025-01-03 15:36:58.970 [atn] Minute 36 - not running Dijkstra -2025-01-03 15:38:04.973 [atn] Minute 38 - not running Dijkstra -2025-01-03 15:39:10.975 [atn] Minute 39 - not running Dijkstra -2025-01-03 15:40:00.024 [atn] REPORT RECEIVED dfe3ad50-5fd4-4393-bf26-d769550fbd1c -2025-01-03 15:40:16.979 [atn] Minute 40 - not running Dijkstra -2025-01-03 15:41:22.982 [atn] Minute 41 - not running Dijkstra -2025-01-03 15:42:28.985 [atn] Minute 42 - not running Dijkstra -2025-01-03 15:43:34.988 [atn] Minute 43 - not running Dijkstra -2025-01-03 15:44:40.991 [atn] Minute 44 - not running Dijkstra -2025-01-03 15:45:00.024 [atn] REPORT RECEIVED 6c0c18fb-a35a-4011-bfc3-c8e2355bfd68 -2025-01-03 15:45:46.994 [atn] Minute 45 - not running Dijkstra -2025-01-03 15:46:52.997 [atn] Minute 46 - not running Dijkstra -2025-01-03 15:47:59.000 [atn] Minute 47 - not running Dijkstra -2025-01-03 15:49:05.004 [atn] Minute 49 - not running Dijkstra -2025-01-03 15:50:00.024 [atn] REPORT RECEIVED c580187a-4379-4081-9238-681e4fd01d52 -2025-01-03 15:50:11.007 [atn] Minute 50 - not running Dijkstra -2025-01-03 15:51:17.010 [atn] Minute 51 - not running Dijkstra -2025-01-03 15:52:23.013 [atn] Minute 52 - not running Dijkstra -2025-01-03 15:53:29.016 [atn] Minute 53 - not running Dijkstra -2025-01-03 15:54:35.018 [atn] Minute 54 - not running Dijkstra -2025-01-03 15:55:00.016 [atn] REPORT RECEIVED 3de8871d-ba9a-47dc-b565-bea7d3344e36 -2025-01-03 15:55:41.021 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 15:56:47.023 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 15:57:53.027 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 15:58:59.025 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 15:59:17.167 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 15:59:17.168 [atn] State is now DispatchDormantScadaReady -2025-01-03 15:59:17.168 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 16:00:00.023 [atn] Trying to Broadcasting price(x1000) 589630 at the top of the hour. -2025-01-03 16:00:00.025 [atn] REPORT RECEIVED 16750323-4410-47a7-a1b7-989cec2790ca -2025-01-03 16:00:00.026 [atn] Received latest price -2025-01-03 16:00:00.026 [atn] Ignoring - no bid exists -2025-01-03 16:00:05.027 [atn] Minute 0 - not running Dijkstra -2025-01-03 16:01:11.029 [atn] Minute 1 - not running Dijkstra -2025-01-03 16:02:17.031 [atn] Minute 2 - not running Dijkstra -2025-01-03 16:03:23.034 [atn] Minute 3 - not running Dijkstra -2025-01-03 17:26:08.381 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 17:26:08.394 [atn] State is DispatchDormantScadaNotReady -2025-01-03 17:26:08.405 ++Proactor.join() proactor: -2025-01-03 17:26:08.405 Tasks: 6 [Proactor.join() - all tasks] - 1/6 process_messages done:False exception:None - 2/6 fake market maker done:False exception:None - 3/6 Task-1 done:False exception:None - 4/6 send_ping done:False exception:None - 5/6 pat_watchdog done:False exception:None - 6/6 atn-main done:False exception:None - -2025-01-03 17:26:08.405 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 17:26:08.405 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 17:26:08.405 Tasks: 5 [PENDING] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 17:26:08.405 Tasks: 5 [WAITING FOR] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 17:26:08.406 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 17:26:08.406 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 17:26:08.408 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 17:26:08.410 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 17:26:08.410 [atn] State is now DispatchDormantScadaReady -2025-01-03 17:26:08.410 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 17:26:09.369 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 17:26:09.369 [atn] State is now DispatchDormantScadaReady -2025-01-03 17:26:09.369 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 17:26:13.406 [atn] Minute 26 - not running Dijkstra -2025-01-03 17:26:27.638 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 17:26:27.638 [atn] State is now DispatchDormantScadaReady -2025-01-03 17:26:27.639 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 17:27:19.409 [atn] Minute 27 - not running Dijkstra -2025-01-03 17:28:25.411 [atn] Minute 28 - not running Dijkstra -2025-01-03 17:29:31.414 [atn] Minute 29 - not running Dijkstra -2025-01-03 17:30:00.023 [atn] REPORT RECEIVED f99c5f2a-e849-47b9-b837-ac77cbcd7070 -2025-01-03 17:30:37.418 [atn] Minute 30 - not running Dijkstra -2025-01-03 17:31:43.421 [atn] Minute 31 - not running Dijkstra -2025-01-03 17:32:49.424 [atn] Minute 32 - not running Dijkstra -2025-01-03 17:33:55.427 [atn] Minute 33 - not running Dijkstra -2025-01-03 17:35:00.027 [atn] REPORT RECEIVED d18fed3c-c90c-4e2c-bf3f-b5790d5e0202 -2025-01-03 17:35:01.430 [atn] Minute 35 - not running Dijkstra -2025-01-03 17:36:07.432 [atn] Minute 36 - not running Dijkstra -2025-01-03 17:37:13.436 [atn] Minute 37 - not running Dijkstra -2025-01-03 17:38:19.439 [atn] Minute 38 - not running Dijkstra -2025-01-03 17:39:25.472 [atn] Minute 39 - not running Dijkstra -2025-01-03 17:40:00.053 [atn] REPORT RECEIVED a79a59f3-198f-4a4f-bd3f-8e1577ae3622 -2025-01-03 17:40:31.480 [atn] Minute 40 - not running Dijkstra -2025-01-03 17:41:37.483 [atn] Minute 41 - not running Dijkstra -2025-01-03 17:42:43.489 [atn] Minute 42 - not running Dijkstra -2025-01-03 17:43:49.495 [atn] Minute 43 - not running Dijkstra -2025-01-03 17:44:55.500 [atn] Minute 44 - not running Dijkstra -2025-01-03 17:45:00.028 [atn] REPORT RECEIVED 03eb8015-3a1c-4956-901a-bccc77f8f419 -2025-01-03 17:46:01.506 [atn] Minute 46 - not running Dijkstra -2025-01-03 17:47:07.511 [atn] Minute 47 - not running Dijkstra -2025-01-03 17:48:13.517 [atn] Minute 48 - not running Dijkstra -2025-01-03 17:49:19.523 [atn] Minute 49 - not running Dijkstra -2025-01-03 17:50:00.029 [atn] REPORT RECEIVED 6faa9c10-f44c-4f21-91dd-29ea68259cd7 -2025-01-03 17:50:25.526 [atn] Minute 50 - not running Dijkstra -2025-01-03 17:51:31.530 [atn] Minute 51 - not running Dijkstra -2025-01-03 17:52:37.561 [atn] Minute 52 - not running Dijkstra -2025-01-03 17:53:43.634 [atn] Minute 53 - not running Dijkstra -2025-01-03 17:54:49.638 [atn] Minute 54 - not running Dijkstra -2025-01-03 17:55:00.023 [atn] REPORT RECEIVED 252825fd-4f91-42e5-81f6-51ecb44be0aa -2025-01-03 17:55:55.642 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 17:57:01.645 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 17:58:07.649 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 17:59:13.653 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 18:00:00.025 [atn] REPORT RECEIVED 0c8999db-85f2-4ef2-b23d-e0fa4c3edc56 -2025-01-03 18:00:00.045 [atn] Trying to Broadcasting price(x1000) 156980 at the top of the hour. -2025-01-03 18:00:00.046 [atn] Received latest price -2025-01-03 18:00:00.046 [atn] Ignoring - no bid exists -2025-01-03 18:00:19.658 [atn] Minute 0 - not running Dijkstra -2025-01-03 18:01:25.723 [atn] Minute 1 - not running Dijkstra -2025-01-03 18:02:31.727 [atn] Minute 2 - not running Dijkstra -2025-01-03 18:03:37.730 [atn] Minute 3 - not running Dijkstra -2025-01-03 18:04:43.735 [atn] Minute 4 - not running Dijkstra -2025-01-03 18:05:00.025 [atn] REPORT RECEIVED be7ef484-18c2-49f9-bddb-0884abe8f969 -2025-01-03 18:05:49.738 [atn] Minute 5 - not running Dijkstra -2025-01-03 18:06:55.741 [atn] Minute 6 - not running Dijkstra -2025-01-03 18:08:01.745 [atn] Minute 8 - not running Dijkstra -2025-01-03 18:09:07.748 [atn] Minute 9 - not running Dijkstra -2025-01-03 18:10:00.026 [atn] REPORT RECEIVED 98225d9c-2823-4a4a-bd96-4d772eb7646c -2025-01-03 18:10:13.751 [atn] Minute 10 - not running Dijkstra -2025-01-03 18:11:19.735 [atn] Minute 11 - not running Dijkstra -2025-01-03 18:12:25.735 [atn] Minute 12 - not running Dijkstra -2025-01-03 18:13:31.738 [atn] Minute 13 - not running Dijkstra -2025-01-03 18:14:37.741 [atn] Minute 14 - not running Dijkstra -2025-01-03 18:15:00.023 [atn] REPORT RECEIVED 94f7bbae-3f65-461a-a5f1-ad18b6c3935a -2025-01-03 18:15:43.744 [atn] Minute 15 - not running Dijkstra -2025-01-03 18:16:49.747 [atn] Minute 16 - not running Dijkstra -2025-01-03 18:17:55.752 [atn] Minute 17 - not running Dijkstra -2025-01-03 18:19:01.758 [atn] Minute 19 - not running Dijkstra -2025-01-03 18:20:00.027 [atn] REPORT RECEIVED 5f2b9a75-1e21-4dac-a349-15398b81b78e -2025-01-03 18:20:07.764 [atn] Minute 20 - not running Dijkstra -2025-01-03 18:21:13.769 [atn] Minute 21 - not running Dijkstra -2025-01-03 18:22:19.774 [atn] Minute 22 - not running Dijkstra -2025-01-03 18:23:25.779 [atn] Minute 23 - not running Dijkstra -2025-01-03 18:24:31.784 [atn] Minute 24 - not running Dijkstra -2025-01-03 18:25:00.025 [atn] REPORT RECEIVED 4f445954-ecd2-4f87-be37-4aa8b07b66ee -2025-01-03 18:25:37.789 [atn] Minute 25 - not running Dijkstra -2025-01-03 18:26:43.793 [atn] Minute 26 - not running Dijkstra -2025-01-03 18:27:49.798 [atn] Minute 27 - not running Dijkstra -2025-01-03 18:28:55.801 [atn] Minute 28 - not running Dijkstra -2025-01-03 18:30:00.024 [atn] REPORT RECEIVED 72710d0f-19f3-478c-a0f2-e56a6e165588 -2025-01-03 18:30:01.804 [atn] Minute 30 - not running Dijkstra -2025-01-03 18:31:07.807 [atn] Minute 31 - not running Dijkstra -2025-01-03 18:32:13.810 [atn] Minute 32 - not running Dijkstra -2025-01-03 18:33:05.032 scada: active -- response_timeout --> awaiting_peer -2025-01-03 18:33:19.813 [atn] Minute 33 - not running Dijkstra -2025-01-03 18:33:50.226 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 18:33:50.235 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:33:50.235 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:33:50.235 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:34:25.816 [atn] Minute 34 - not running Dijkstra -2025-01-03 18:34:58.611 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:34:58.611 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:34:58.611 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:35:00.015 [atn] REPORT RECEIVED da904f8a-82f7-4977-ba58-2231a3d029dd -2025-01-03 18:35:31.819 [atn] Minute 35 - not running Dijkstra -2025-01-03 18:36:05.018 scada: active -- response_timeout --> awaiting_peer -2025-01-03 18:36:08.395 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 18:36:08.403 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:36:08.403 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:36:08.403 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:36:37.822 [atn] Minute 36 - not running Dijkstra -2025-01-03 18:36:50.640 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:36:50.640 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:36:50.640 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:37:23.538 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:37:23.538 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:37:23.538 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:37:25.646 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20567.015590041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:30.652 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20572.021998291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:30.661 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:37:30.661 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:37:30.661 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:37:35.658 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20577.027624166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:35.667 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:37:35.667 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:37:35.667 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:37:43.825 [atn] Minute 37 - not running Dijkstra -2025-01-03 18:37:50.087 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 18:37:50.099 [atn] State is DispatchDormantScadaNotReady -2025-01-03 18:37:50.109 ++Proactor.join() proactor: -2025-01-03 18:37:50.109 Tasks: 6 [Proactor.join() - all tasks] - 1/6 send_ping done:False exception:None - 2/6 pat_watchdog done:False exception:None - 3/6 atn-main done:False exception:None - 4/6 process_messages done:False exception:None - 5/6 fake market maker done:False exception:None - 6/6 Task-1 done:False exception:None - -2025-01-03 18:37:50.109 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 18:37:50.110 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 18:37:50.110 Tasks: 5 [PENDING] - 1/5 send_ping done:False exception:None - 2/5 watchdog_manager.join done:False exception:None - 3/5 atn-main done:False exception:None - 4/5 process_messages done:False exception:None - 5/5 fake market maker done:False exception:None - -2025-01-03 18:37:50.110 Tasks: 5 [WAITING FOR] - 1/5 send_ping done:False exception:None - 2/5 watchdog_manager.join done:False exception:None - 3/5 atn-main done:False exception:None - 4/5 process_messages done:False exception:None - 5/5 fake market maker done:False exception:None - -2025-01-03 18:37:50.110 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 18:37:50.110 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 18:37:52.313 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 18:37:52.318 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20593.686430583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:52.323 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:37:52.324 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:37:52.324 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:37:54.428 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20595.798981291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:55.111 scada: active -- response_timeout --> awaiting_peer -2025-01-03 18:37:55.112 [atn] Minute 37 - not running Dijkstra -2025-01-03 18:37:57.316 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 18:37:57.318 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20598.688850083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:57.320 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20598.689374708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:37:57.323 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:37:57.323 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:37:57.323 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:02.335 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20603.705027666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:02.336 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20603.705211291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:02.338 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:02.338 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:02.338 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:07.340 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20608.710144125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:07.342 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20608.710922083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:07.345 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:07.345 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:07.345 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:12.342 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20613.712675125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:12.343 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20613.712798625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:12.345 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:12.345 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:12.345 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:17.349 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20618.719410208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:17.353 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20618.720854291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:17.361 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:17.361 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:17.361 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:22.355 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20623.724967208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:22.358 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20623.726196041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:22.363 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:22.364 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:22.364 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:27.359 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20628.729840708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:27.363 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20628.731304541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:27.370 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:27.370 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:27.370 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:32.362 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20633.732955375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:32.364 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20633.7337675, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:32.368 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:32.368 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:32.368 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:37.369 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20638.739521791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:37.374 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20638.741798666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:37.381 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:37.381 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:37.381 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:42.371 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20643.7416325, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:42.372 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20643.7417685, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:42.374 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:42.374 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:42.374 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:47.379 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20648.749183041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:47.381 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20648.749435458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:47.383 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:47.384 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:47.384 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:52.387 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20653.756451083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:52.389 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20653.756872166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:52.392 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:52.392 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:52.392 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:38:54.435 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20655.805573833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:57.394 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20658.763024708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:57.395 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20658.7634515, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:57.396 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20658.76384325, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:38:57.398 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:38:57.398 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:38:57.398 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:01.115 [atn] Minute 39 - not running Dijkstra -2025-01-03 18:39:02.398 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20663.76825975, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:02.401 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20663.768478041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:02.403 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20663.769140958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:02.408 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:02.408 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:02.408 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:07.401 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20668.771208916, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:07.405 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20668.771392875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:07.406 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20668.771806208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:07.411 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:07.411 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:07.411 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:12.409 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20673.779488166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:12.414 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20673.779712625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:12.416 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20673.781524625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:12.421 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:12.421 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:12.421 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:17.414 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20678.784099583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:17.418 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20678.7852695, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:17.421 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20678.786185166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:17.427 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:17.428 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:17.428 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:22.420 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20683.790351041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:22.425 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20683.792619708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:22.427 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20683.793016041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:22.432 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:22.432 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:22.432 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:27.427 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20688.796515666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:27.431 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20688.797854375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:27.433 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20688.7983705, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:27.438 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:27.438 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:27.438 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:32.431 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20693.800527333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:32.432 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20693.800755, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:32.434 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20693.800975125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:32.437 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:32.437 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:32.437 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:37.437 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20698.806960208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:37.441 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20698.809087833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:37.443 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20698.809446833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:37.448 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:37.449 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:37.449 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:42.443 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20703.812973125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:42.448 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20703.815350958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:42.450 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20703.815758875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:42.456 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:42.457 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:42.457 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:47.449 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20708.818639291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:47.453 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20708.819210875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:47.455 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20708.820973541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:47.460 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:47.461 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:47.461 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:52.455 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20713.82448475, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:52.458 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20713.825016041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:52.460 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20713.826210125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:52.466 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:52.466 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:52.466 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:39:54.441 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20715.811026, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:57.460 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20718.830299833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:57.465 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20718.831676625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:57.467 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20718.832153666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:57.469 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20718.832503708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:39:57.474 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:39:57.474 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:39:57.474 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:00.025 [atn] REPORT RECEIVED c8b65988-c5b3-480c-b811-3f96081bf772 -2025-01-03 18:40:02.463 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20723.8336005, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:02.467 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20723.83463125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:02.469 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20723.834999208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:02.471 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20723.835876, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:02.475 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:02.475 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:02.475 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:07.119 [atn] Minute 40 - not running Dijkstra -2025-01-03 18:40:07.469 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20728.838771, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:07.471 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20728.839053958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:07.472 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20728.840148708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:07.473 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20728.840344708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:07.476 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:07.476 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:07.476 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:12.477 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20733.844826791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:12.479 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20733.845444541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:12.481 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20733.846352083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:12.482 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20733.848049916, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:12.484 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:12.484 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:12.484 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:17.481 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20738.850095083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:17.484 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20738.85092625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:17.485 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20738.851693291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:17.486 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20738.852965416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:17.489 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:17.489 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:17.489 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:22.486 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20743.855797958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:22.489 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20743.857360541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:22.491 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20743.857627458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:22.492 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20743.857890625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:22.495 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:22.495 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:22.495 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:27.489 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20748.858931958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:27.491 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20748.859131625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:27.493 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20748.859650375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:27.494 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20748.859779791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:27.498 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:27.498 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:27.498 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:32.495 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20753.864868, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:32.498 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20753.865327541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:32.499 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20753.867178791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:32.501 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20753.867376, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:32.503 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:32.504 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:32.504 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:37.502 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20758.872299833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:37.506 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20758.874009416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:37.507 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20758.874746708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:37.508 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20758.875157708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:37.511 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:37.511 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:37.511 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:42.510 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20763.879099125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:42.514 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20763.879773708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:42.516 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20763.880960791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:42.518 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20763.882176666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:42.523 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:42.524 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:42.524 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:47.517 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20768.886458541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:47.522 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20768.888052875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:47.524 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20768.889047333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:47.526 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20768.889581833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:47.532 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:47.533 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:47.533 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:52.523 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20773.892005041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:52.527 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20773.892517541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:52.529 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20773.89281325, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:52.531 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20773.894065916, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:52.536 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:52.536 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:52.537 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:40:54.450 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20775.819014458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:57.531 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20778.898525041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:57.534 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20778.899442, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:57.537 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20778.899777875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:57.539 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20778.901296958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:57.541 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20778.90260275, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:40:57.545 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:40:57.545 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:40:57.546 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:02.533 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20783.902422875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:02.536 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20783.902877083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:02.537 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20783.904334, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:02.539 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20783.90491025, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:02.540 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20783.905355416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:02.544 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:02.544 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:02.544 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:07.543 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20788.911678541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:07.547 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20788.912494333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:07.549 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20788.912823791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:07.550 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20788.914539833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:07.552 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20788.914713541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:07.557 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:07.557 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:07.558 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:12.553 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20793.921208958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:12.557 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20793.921750666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:12.559 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20793.922492291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:12.560 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20793.922870375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:12.561 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20793.925318041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:12.566 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:12.566 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:12.566 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:13.122 [atn] Minute 41 - not running Dijkstra -2025-01-03 18:41:17.555 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20798.924548791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:17.559 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20798.925159333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:17.562 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20798.926358666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:17.563 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20798.926817083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:17.564 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20798.927734583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:17.568 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:17.569 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:17.569 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:22.559 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20803.929342708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:22.563 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20803.931011541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:22.566 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20803.931169458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:22.567 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20803.931654166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:22.568 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20803.931986958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:22.572 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:22.572 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:22.573 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:27.567 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20808.936414291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:27.572 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20808.937980708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:27.574 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20808.940106416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:27.576 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20808.940876083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:27.577 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20808.941152541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:27.582 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:27.582 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:27.582 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:32.574 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20813.943502416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:32.578 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20813.943996333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:32.579 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20813.945388875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:32.581 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20813.94575975, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:32.582 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20813.94600725, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:32.584 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:32.584 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:32.584 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:37.580 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20818.949449875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:37.584 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20818.95088075, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:37.586 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20818.951980625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:37.587 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20818.952384791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:37.589 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20818.952767583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:37.593 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:37.593 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:37.593 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:42.586 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20823.955719, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:42.590 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20823.957042416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:42.592 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20823.9583525, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:42.594 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20823.958639458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:42.596 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20823.959047541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:42.601 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:42.601 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:42.601 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:47.593 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20828.9624205, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:47.597 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20828.962868625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:47.600 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20828.964333208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:47.602 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20828.965488875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:47.603 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20828.965870541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:47.608 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:47.608 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:47.608 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:52.599 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20833.968871958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:52.603 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20833.970231, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:52.605 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20833.970810416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:52.607 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20833.971831541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:52.608 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20833.97206225, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:52.613 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:52.613 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:52.613 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:41:54.456 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20835.825821375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2f6a1a81-4771-463e-a816-ec49d209690b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2f6a1a81-4771-463e-a816-ec49d209690b","TimeCreatedMs":1735926114454,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"b1077a24-1fd3-4398-bbb8-8882070d88e2","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2f6a1a81-4...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:57.606 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20838.97505425, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:57.610 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20838.975624208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:57.612 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20838.976868416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:57.613 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20838.978147041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:57.614 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20838.978445416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:41:57.619 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:41:57.619 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:41:57.619 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:02.612 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20843.9815675, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:02.616 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20843.982081583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:02.618 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20843.983251166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:02.620 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20843.984459666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:02.621 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20843.984746416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:02.625 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:02.626 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:02.626 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:07.628 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20848.998213208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:07.630 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20848.998763958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:07.631 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20848.999414375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:07.633 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20848.999572083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:07.634 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20848.999969041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:07.638 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:07.638 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:07.638 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:12.625 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20853.994968208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:12.630 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20853.995531041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:12.632 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20853.996750541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:12.633 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20853.998078583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:12.635 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20853.998311541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:12.639 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:12.639 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:12.640 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:17.631 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20859.001223166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:17.636 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20859.002568208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:17.638 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20859.00303925, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:17.640 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20859.003503166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:17.641 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20859.0044675, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:17.646 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:17.646 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:17.646 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:19.125 [atn] Minute 42 - not running Dijkstra -2025-01-03 18:42:22.638 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20864.007383375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:22.642 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20864.007879916, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:22.644 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20864.009073166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:22.646 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20864.010149291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:22.647 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20864.010477916, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:22.652 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:22.652 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:22.652 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:27.644 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20869.013784375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:27.649 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20869.015279791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:27.651 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20869.015738583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:27.653 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20869.016806291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:27.654 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20869.017499958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:27.659 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:27.659 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:27.659 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:32.650 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20874.019501041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:32.654 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20874.020796875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:32.655 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20874.021966708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:32.657 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20874.022636083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:32.658 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20874.023239541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:32.662 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:32.663 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:32.663 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:37.656 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20879.026149291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:37.661 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20879.02766475, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:37.663 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20879.028114208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:37.665 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20879.029217333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:37.666 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20879.02983025, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:37.671 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:37.671 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:37.671 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:42.662 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20884.032216083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:42.667 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20884.033591791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:42.669 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20884.034161333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:42.670 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20884.035240333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:42.672 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20884.035696666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:42.676 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:42.677 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:42.677 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:47.668 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20889.038080333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:47.672 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20889.039066166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:47.673 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20889.03938175, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:47.674 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20889.040238166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:47.675 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20889.0405145, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:47.678 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:47.678 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:47.678 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:52.674 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20894.043749666, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:52.676 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20894.044087166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:52.677 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20894.045060375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:52.678 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20894.045313166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:52.679 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20894.045497083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:52.682 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:52.682 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:52.682 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:42:54.462 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20895.83152125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"45795884-f750-4703-9d89-6edd64d0c598","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"45795884-f750-4703-9d89-6edd64d0c598","TimeCreatedMs":1735926174460,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"a20090e9-57a1-416f-9dcf-9b9b019086a9","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '45795884-f...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:57.678 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20899.048603958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:57.681 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20899.049412958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:57.683 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20899.049633708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:57.684 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20899.050263208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:57.685 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=20899.050444791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 18:42:57.688 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 18:42:57.688 [atn] State is now DispatchDormantScadaReady -2025-01-03 18:42:57.688 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 18:43:25.130 [atn] Minute 43 - not running Dijkstra -2025-01-03 18:44:02.690 scada: active -- response_timeout --> awaiting_peer -2025-01-03 18:44:31.134 [atn] Minute 44 - not running Dijkstra -2025-01-03 18:45:37.137 [atn] Minute 45 - not running Dijkstra -2025-01-03 18:46:43.140 [atn] Minute 46 - not running Dijkstra -2025-01-03 18:47:49.143 [atn] Minute 47 - not running Dijkstra -2025-01-03 18:48:55.146 [atn] Minute 48 - not running Dijkstra -2025-01-03 18:50:01.149 [atn] Minute 50 - not running Dijkstra -2025-01-03 18:51:07.152 [atn] Minute 51 - not running Dijkstra -2025-01-03 18:54:03.441 [atn] Minute 54 - not running Dijkstra -2025-01-03 21:05:37.472 [atn] Minute 5 - not running Dijkstra -2025-01-03 21:06:52.798 [atn] Minute 6 - not running Dijkstra -2025-01-03 21:07:58.802 [atn] Minute 7 - not running Dijkstra -2025-01-03 21:09:04.805 [atn] Minute 9 - not running Dijkstra -2025-01-03 21:10:10.808 [atn] Minute 10 - not running Dijkstra -2025-01-03 21:10:53.246 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:10:53.248 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21826.97824325, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:53.253 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21826.978529291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:53.254 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21826.982033833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:53.255 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21826.982192875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:53.256 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21826.982288541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:53.259 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:10:53.259 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:10:53.259 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:10:58.253 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21831.982588916, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:58.254 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21831.982814458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:58.255 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21831.983343166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:58.256 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21831.983481458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:58.257 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21831.98358475, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:10:58.281 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:10:58.281 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:10:58.281 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:03.266 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21836.996518791, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:03.268 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21836.997009375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:03.269 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21836.9971765, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:03.270 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21836.997544458, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:03.270 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21836.99765825, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:03.272 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:03.272 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:03.273 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:08.277 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21842.004912625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:08.282 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21842.005650958, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:08.286 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21842.006600833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:08.287 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21842.009291041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:08.288 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21842.0097175, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:08.294 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:08.295 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:08.295 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:13.282 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21847.011117875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:13.285 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21847.012576416, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:13.286 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21847.012965291, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:13.288 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21847.013170583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:13.288 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21847.014086125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:13.291 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:13.291 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:13.291 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:16.811 [atn] Minute 11 - not running Dijkstra -2025-01-03 21:11:18.287 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21852.017008375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:18.291 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21852.017836125, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:18.293 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21852.01830425, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:18.295 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21852.019225208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:18.296 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21852.019735833, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:18.300 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:18.301 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:18.301 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:23.294 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21857.023891333, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:23.300 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21857.025312708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:23.302 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21857.026567208, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:23.304 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21857.027224583, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:23.305 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21857.027627708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:23.309 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:23.309 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:23.310 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:28.299 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21862.02895725, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:28.304 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21862.030401083, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:28.306 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21862.030806166, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:28.308 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21862.031788625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:28.309 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21862.032303041, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:28.314 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:28.314 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:28.314 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:33.311 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21867.039274625, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"947dc0a4-7d28-4aa7-996d-b2b72f8e87cf","TimeCreatedMs":1735925845643,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"63a48a66-d52a-4fb6-af99-7cbed18b42c4","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '947dc0a4-7...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:33.314 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21867.040842375, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1dc9f2a4-294e-4f1e-9629-f94bcce98ccc","TimeCreatedMs":1735925874427,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"750de8fe-e372-45aa-8706-1288854144d1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1dc9f2a4-2...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:33.315 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21867.041018708, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"1254c8df-5bc5-437c-9103-889a93fe0d7f","TimeCreatedMs":1735925934434,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"3f13f75f-2e1b-448f-89de-ed829374d5ac","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '1254c8df-5...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:33.316 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21867.041360541, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"2aa63982-8e86-4450-90e6-daba4ee80150","TimeCreatedMs":1735925994439,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"392c66e2-151a-494e-95cc-562818564cf1","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': '2aa63982-8...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:33.317 ERROR decoding [client_name='scada' userdata=None message=MQTTMessageModel(timestamp=21867.04247875, state=0, dup=0, mid=0, topic='gw/d1-isone-me-versant-keene-orange-scada/to/a/remaining-elec-event', payload=b'{"Header":{"Src":"d1.isone.me.versant.keene.orange.scada","Dst":"a","MessageType":"remaining.elec.event","MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","AckRequired":true,"TypeName":"gridworks.header","Version":"001"},"Payload":{"MessageId":"afa65ad2-0fcd-4859-8327-5934bc9bc12b","TimeCreatedMs":1735926054447,"Src":"d1.isone.me.versant.keene.orange.scada","TypeName":"remaining.elec.event","Remaining":{"FromGNodeAlias":"d1.isone.me.versant.keene.orange","RemainingWattHours":99,"MessageId":"7990e9f0-a7c7-4c4f-83e6-e2a6eb3b539f","TypeName":"remaining.elec","Version":"000"},"Version":"000"},"TypeName":"gw"}', qos=0, retain=0)] -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 497, in _decode_mqtt_message - self._links.decode( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/links/link_manager.py", line 162, in decode - return self._mqtt_codecs[link_name].decode(topic, payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 86, in decode - return self.handle_unrecognized_payload(payload, e, error_details) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 73, in handle_unrecognized_payload - raise e - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproto/decoders.py", line 78, in decode - message = self.message_model.model_validate_json(payload) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/pydantic/main.py", line 597, in model_validate_json - return cls.__pydantic_validator__.validate_json(json_data, strict=strict, context=context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -pydantic_core._pydantic_core.ValidationError: 1 validation error for AtnMessageDecoder -Payload - Input tag 'remaining.elec.event' found using 'TypeName' does not match any of the expected tags: 'admin.keep.alive', 'admin.release.control', 'atn.bid', 'dispatch.contract.go.dormant', 'dispatch.contract.go.live', 'energy.instruction', 'flo.params', 'flo.params.house0', 'fsm.event', 'go.dormant', 'ha1.params', 'latest.price', 'layout.lite', 'pico.missing', 'price.quantity.unitless', 'scada.params', 'send.layout', 'wake.up', 'gridworks.ack', 'ads111x.based.cac.gt', 'ads111x.based.component.gt', 'ads.channel.config', 'alert', 'analog.dispatch', 'channel.config', 'channel.readings', 'component.attribute.class.gt', 'component.gt', 'data.channel.gt', 'dfr.component.gt', 'dfr.config', 'egauge.register.config', 'electric.meter.cac.gt', 'electric.meter.channel.config', 'electric.meter.component.gt', 'fibaro.smart.implant.component.gt', 'fsm.atomic.report', 'fsm.full.report', 'heartbeat.b', 'hubitat.component.gt', 'hubitat.poller.component.gt', 'hubitat.tank.component.gt', 'i2c.multichannel.dt.relay.component.gt', 'keyparam.change.log', 'gridworks.event.comm.mqtt.connect', 'gridworks.event.comm.mqtt.connect.failed', 'gridworks.event.comm.mqtt.disconnect', 'gridworks.event.comm.mqtt.fully.subscribed', 'machine.states', 'gridworks.event.comm.peer.active', 'pico.flow.module.component.gt', 'pico.tank.module.component.gt', 'gridworks.ping', 'power.watts', 'gridworks.event.problem', 'rest.poller.component.gt', 'relay.actor.config', 'report', 'report.event', 'resistive.heater.cac.gt', 'resistive.heater.component.gt', 'gridworks.event.comm.response.timeout', 'send.snap', 'gridworks.event.shutdown', 'single.reading', 'snapshot.spaceheat', 'spaceheat.node.gt', 'gridworks.event.startup', 'synced.readings', 'synth.channel.gt', 'tank.module.params', 'ticklist.hall', 'ticklist.hall.report', 'ticklist.reed', 'ticklist.reed.report', 'web.server.component.gt', 'gridworks.event.proactor.dbg', 'gridworks.proactor.dbg', 'gridworks.header', 'gridworks.watchdog.pat.external', 'gridworks.watchdog.pat.internal', 'gridworks.shutdown' [type=union_tag_invalid, input_value={'MessageId': 'afa65ad2-0...000'}, 'Version': '000'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.8/v/union_tag_invalid -2025-01-03 21:11:33.321 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:33.321 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:33.321 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:43.741 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 21:11:43.753 [atn] State is DispatchDormantScadaNotReady -2025-01-03 21:11:43.763 ++Proactor.join() proactor: -2025-01-03 21:11:43.764 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 21:11:43.764 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 21:11:43.764 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 21:11:43.764 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:11:43.764 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:11:43.764 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 21:11:43.765 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 21:11:45.162 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:11:45.169 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:45.169 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:45.170 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:45.170 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:45.171 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:45.174 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:11:45.174 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:11:45.174 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:11:45.187 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:45.198 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:47.237 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:11:48.766 scada: active -- response_timeout --> awaiting_peer -2025-01-03 21:11:48.767 [atn] Minute 11 - not running Dijkstra -2025-01-03 21:12:00.166 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:12:25.023 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:12:25.023 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:12:25.023 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:12:27.086 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:12:54.770 [atn] Minute 12 - not running Dijkstra -2025-01-03 21:13:02.337 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:13:02.337 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:13:02.337 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:13:04.394 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:07.396 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:10.399 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:13.407 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:16.414 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:19.420 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:22.426 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:25.228 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:13:25.229 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:13:25.229 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:13:27.275 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:30.278 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:33.284 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:36.291 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:39.298 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:42.305 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:45.311 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:48.314 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:51.320 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:54.326 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:13:57.333 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:00.338 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:00.772 [atn] Minute 14 - not running Dijkstra -2025-01-03 21:14:03.345 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:06.351 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:09.356 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:12.360 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:15.364 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:18.368 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:21.376 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:24.382 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:27.387 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:30.394 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:33.399 [atn] RECEVIED THE REMAINING ELEC -2025-01-03 21:14:44.065 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 21:14:44.077 [atn] State is DispatchDormantScadaNotReady -2025-01-03 21:14:44.084 ++Proactor.join() proactor: -2025-01-03 21:14:44.084 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 21:14:44.084 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 21:14:44.085 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 21:14:44.085 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:14:44.085 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:14:44.085 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 21:14:44.085 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 21:14:44.086 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:14:44.089 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:14:44.089 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:14:44.089 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:14:44.089 [atn] RECEIVED THE REMAINING ELEC WITH ID 64b58367-39d7-4cd5-8fb9-3ccebf9cebb0 -2025-01-03 21:14:46.584 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:14:46.585 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:14:46.585 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:14:46.644 [atn] RECEIVED THE REMAINING ELEC WITH ID c99fbf88-a06d-40ec-9810-381f840b7dba -2025-01-03 21:14:49.086 [atn] Minute 14 - not running Dijkstra -2025-01-03 21:14:49.651 [atn] RECEIVED THE REMAINING ELEC WITH ID 9acffe93-9373-4e7f-9eba-d02ab99ae79e -2025-01-03 21:14:52.657 [atn] RECEIVED THE REMAINING ELEC WITH ID be212a6f-731a-49f2-8659-4e15af1c0fdd -2025-01-03 21:14:55.664 [atn] RECEIVED THE REMAINING ELEC WITH ID cc00e7f2-cd03-47b0-9950-729bf964eee5 -2025-01-03 21:14:58.668 [atn] RECEIVED THE REMAINING ELEC WITH ID caf2a97f-211c-4718-926a-1ff3602294fa -2025-01-03 21:15:00.021 [atn] REPORT RECEIVED fef0c869-3775-4c9f-a67b-7c80226a0ee1 -2025-01-03 21:15:01.674 [atn] RECEIVED THE REMAINING ELEC WITH ID cad65c30-ad35-4944-b9c6-5e66267e77dd -2025-01-03 21:15:04.680 [atn] RECEIVED THE REMAINING ELEC WITH ID 2425e6cb-b713-4161-8ac5-3a1da24c622b -2025-01-03 21:15:07.687 [atn] RECEIVED THE REMAINING ELEC WITH ID c554a7dc-ca9b-4c55-bb55-e4d4fb5eaee4 -2025-01-03 21:15:10.692 [atn] RECEIVED THE REMAINING ELEC WITH ID 2357bfc5-6e5b-4ac6-b359-d0e39aef549e -2025-01-03 21:15:13.700 [atn] RECEIVED THE REMAINING ELEC WITH ID c2c2579b-d75e-499d-bb88-4f75c469944c -2025-01-03 21:15:16.703 [atn] RECEIVED THE REMAINING ELEC WITH ID 81efe372-3400-4dac-ad6a-f3b688810352 -2025-01-03 21:15:19.711 [atn] RECEIVED THE REMAINING ELEC WITH ID 460e4e24-1b38-44de-8340-90200a3def3b -2025-01-03 21:15:22.716 [atn] RECEIVED THE REMAINING ELEC WITH ID fdcf07d0-9419-418e-98c5-05aba1a68c26 -2025-01-03 21:15:25.723 [atn] RECEIVED THE REMAINING ELEC WITH ID a919acd5-2ec7-41d9-bae8-800dcc6f57b5 -2025-01-03 21:15:28.728 [atn] RECEIVED THE REMAINING ELEC WITH ID 5d63a1bd-28a7-4555-942b-96207799855c -2025-01-03 21:15:31.735 [atn] RECEIVED THE REMAINING ELEC WITH ID 9515647d-d48b-4e72-a8ec-39efa9b40fd4 -2025-01-03 21:15:34.741 [atn] RECEIVED THE REMAINING ELEC WITH ID fa852eb4-a963-41a0-b520-c3c9f56796ec -2025-01-03 21:15:37.746 [atn] RECEIVED THE REMAINING ELEC WITH ID 32288b7a-4a23-4886-9e51-3abac8803d07 -2025-01-03 21:15:40.752 [atn] RECEIVED THE REMAINING ELEC WITH ID c59669bf-c5c9-4b58-b1de-88e99fe61b39 -2025-01-03 21:15:43.754 [atn] RECEIVED THE REMAINING ELEC WITH ID 52b9028e-013e-4e1f-9dae-70da8c595b6c -2025-01-03 21:15:46.761 [atn] RECEIVED THE REMAINING ELEC WITH ID 630c8c90-8e83-4499-a4c1-612cd29615c9 -2025-01-03 21:15:49.766 [atn] RECEIVED THE REMAINING ELEC WITH ID 5c41c29d-81a0-46b2-8d6f-c3c351cecdc7 -2025-01-03 21:15:52.773 [atn] RECEIVED THE REMAINING ELEC WITH ID aefc634e-cf85-4c84-9164-8f2cd66946b9 -2025-01-03 21:15:55.088 [atn] Minute 15 - not running Dijkstra -2025-01-03 21:15:55.776 [atn] RECEIVED THE REMAINING ELEC WITH ID 7f6e8d5e-db13-42e5-b724-4df226785995 -2025-01-03 21:15:58.783 [atn] RECEIVED THE REMAINING ELEC WITH ID 9e867d04-484b-4132-b4e4-6cf93243f327 -2025-01-03 21:16:01.789 [atn] RECEIVED THE REMAINING ELEC WITH ID c1fd1c60-e3c3-4de1-b69a-ef3340acf525 -2025-01-03 21:16:06.831 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 21:16:06.843 [atn] State is DispatchDormantScadaNotReady -2025-01-03 21:16:06.853 ++Proactor.join() proactor: -2025-01-03 21:16:06.853 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 21:16:06.853 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 21:16:06.853 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 21:16:06.853 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:16:06.853 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:16:06.854 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 21:16:06.854 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 21:16:06.855 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:16:07.800 [atn] RECEIVED THE REMAINING ELEC WITH ID e81801a9-6b2f-427e-ad36-fe40d253e1da -2025-01-03 21:16:09.801 [atn] RECEIVED THE REMAINING ELEC WITH ID 4426087e-b096-4546-9e94-1dec716ed965 -2025-01-03 21:16:09.807 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:16:09.807 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:16:09.807 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:16:10.803 [atn] RECEIVED THE REMAINING ELEC WITH ID 646dedee-b793-4869-9a1b-c3a60ec9ddc5 -2025-01-03 21:16:11.854 [atn] Minute 16 - not running Dijkstra -2025-01-03 21:16:13.811 [atn] RECEIVED THE REMAINING ELEC WITH ID 7d871f53-a465-44f0-9ccc-c4c9141d0a62 -2025-01-03 21:16:16.812 [atn] RECEIVED THE REMAINING ELEC WITH ID b81bc637-d178-41e7-b178-0dba0d81e7f7 -2025-01-03 21:16:19.819 [atn] RECEIVED THE REMAINING ELEC WITH ID b72bb00f-c9f9-44da-b7f9-5e327911dc90 -2025-01-03 21:16:22.824 [atn] RECEIVED THE REMAINING ELEC WITH ID 444292c7-ea8a-432f-b9a4-d4b12377ca13 -2025-01-03 21:16:25.829 [atn] RECEIVED THE REMAINING ELEC WITH ID 983a883e-7e56-43b1-b725-f02b8a552696 -2025-01-03 21:16:28.832 [atn] RECEIVED THE REMAINING ELEC WITH ID 2f25f32a-77c7-4a40-a8a7-e9ec8627cd51 -2025-01-03 21:16:30.852 scada: active -- mqtt_disconnected --> connecting -2025-01-03 21:16:45.877 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 21:16:45.879 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 21:16:45.884 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:16:45.886 [atn] RECEIVED THE REMAINING ELEC WITH ID 3808d1a9-dbdc-4133-ad67-a5c03c577160 -2025-01-03 21:16:45.886 [atn] RECEIVED THE REMAINING ELEC WITH ID ca1ef516-f16e-4f7d-85af-1c7c81ec74a8 -2025-01-03 21:16:45.889 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:16:45.889 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:16:45.889 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:16:45.890 [atn] RECEIVED THE REMAINING ELEC WITH ID 534ad9fa-a6ac-47c2-b853-1d65955f4b24 -2025-01-03 21:16:45.891 [atn] RECEIVED THE REMAINING ELEC WITH ID 92c59643-e80a-4ae8-91b6-31e1dfdb55df -2025-01-03 21:16:45.891 [atn] RECEIVED THE REMAINING ELEC WITH ID a0cacf21-1ed3-485e-8207-f6463f35068c -2025-01-03 21:16:46.868 [atn] RECEIVED THE REMAINING ELEC WITH ID 434ffe30-8071-4bf6-b0cb-4d230c213c61 -2025-01-03 21:16:49.873 [atn] RECEIVED THE REMAINING ELEC WITH ID baa592e2-aa08-4d4d-916b-c63e4d459751 -2025-01-03 21:16:52.879 [atn] RECEIVED THE REMAINING ELEC WITH ID 10425bff-d66f-4cec-a440-1613757d0ac4 -2025-01-03 21:16:55.884 [atn] RECEIVED THE REMAINING ELEC WITH ID 8190f811-284d-42c0-93c6-8a09a455761b -2025-01-03 21:16:58.891 [atn] RECEIVED THE REMAINING ELEC WITH ID 9a0c08ef-eb22-44e7-9c07-6ef47945322a -2025-01-03 21:17:01.896 [atn] RECEIVED THE REMAINING ELEC WITH ID 2370aa66-2374-4f53-b9ad-fef926a38bcd -2025-01-03 21:17:04.899 [atn] RECEIVED THE REMAINING ELEC WITH ID 7be807cb-9486-4c18-9d72-a2eac5c6dc98 -2025-01-03 21:17:17.858 [atn] Minute 17 - not running Dijkstra -2025-01-03 21:18:09.903 scada: active -- response_timeout --> awaiting_peer -2025-01-03 21:18:23.861 [atn] Minute 18 - not running Dijkstra -2025-01-03 21:19:29.865 [atn] Minute 19 - not running Dijkstra -2025-01-03 21:20:35.869 [atn] Minute 20 - not running Dijkstra -2025-01-03 21:21:41.873 [atn] Minute 21 - not running Dijkstra -2025-01-03 21:22:47.876 [atn] Minute 22 - not running Dijkstra -2025-01-03 21:23:53.880 [atn] Minute 23 - not running Dijkstra -2025-01-03 21:24:59.883 [atn] Minute 24 - not running Dijkstra -2025-01-03 21:26:05.887 [atn] Minute 26 - not running Dijkstra -2025-01-03 21:26:24.179 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:26:24.190 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:26:24.190 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:26:24.190 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:26:26.266 [atn] RECEIVED THE REMAINING ELEC WITH ID 7234a13e-04c2-4e97-998b-2d161dee2697 -2025-01-03 21:26:29.269 [atn] RECEIVED THE REMAINING ELEC WITH ID da581712-a452-4ae7-818c-09d7e598f83e -2025-01-03 21:26:32.274 [atn] RECEIVED THE REMAINING ELEC WITH ID 57d5fb91-2ad9-4c57-8ee3-77cc0d40511a -2025-01-03 21:26:35.280 [atn] RECEIVED THE REMAINING ELEC WITH ID 17932721-c9fc-49be-8f00-a464ccfe29ec -2025-01-03 21:26:38.288 [atn] RECEIVED THE REMAINING ELEC WITH ID d26a675f-bf31-4a5e-a9db-249e2e4111c8 -2025-01-03 21:26:41.293 [atn] RECEIVED THE REMAINING ELEC WITH ID f5035f78-163b-43a3-bd61-3603be8488b2 -2025-01-03 21:26:44.298 [atn] RECEIVED THE REMAINING ELEC WITH ID bb158e9b-f9df-44f8-ab29-518686220321 -2025-01-03 21:26:47.302 [atn] RECEIVED THE REMAINING ELEC WITH ID 0c466aa9-4117-452e-91f7-b4d43fb7dbbb -2025-01-03 21:26:50.306 [atn] RECEIVED THE REMAINING ELEC WITH ID a6860847-dbcf-4cad-af3d-8084fc34c1ef -2025-01-03 21:26:53.311 [atn] RECEIVED THE REMAINING ELEC WITH ID d23cc960-a73e-494f-bc7f-1b0331b74be9 -2025-01-03 21:26:56.318 [atn] RECEIVED THE REMAINING ELEC WITH ID ea3fd898-5b80-40dd-a8ad-b1ddf0c0190b -2025-01-03 21:26:59.325 [atn] RECEIVED THE REMAINING ELEC WITH ID 08db2ae4-30bd-4891-b07f-fb3ded9c98b5 -2025-01-03 21:27:02.324 [atn] RECEIVED THE REMAINING ELEC WITH ID 2d30d68b-2744-416b-8eac-af17657934c3 -2025-01-03 21:27:05.331 [atn] RECEIVED THE REMAINING ELEC WITH ID c4647d07-c66c-4c83-85db-a00861a29749 -2025-01-03 21:27:08.335 [atn] RECEIVED THE REMAINING ELEC WITH ID 315aff79-4532-49cf-a81d-e785bc98de82 -2025-01-03 21:27:11.339 [atn] RECEIVED THE REMAINING ELEC WITH ID 5df03390-7aba-4a0a-bae9-3572b4aaca10 -2025-01-03 21:27:11.890 [atn] Minute 27 - not running Dijkstra -2025-01-03 21:27:14.345 [atn] RECEIVED THE REMAINING ELEC WITH ID ecdb8ad1-9d50-459e-9789-2bc13108f5e4 -2025-01-03 21:27:20.114 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 21:27:20.126 [atn] State is DispatchDormantScadaNotReady -2025-01-03 21:27:20.136 ++Proactor.join() proactor: -2025-01-03 21:27:20.136 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 21:27:20.136 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 21:27:20.137 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 21:27:20.137 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:27:20.137 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 21:27:20.137 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 21:27:20.137 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 21:27:20.138 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 21:27:20.355 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:25.138 [atn] Minute 27 -2025-01-03 21:27:28.068 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:28.074 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 21:27:28.075 [atn] State is now DispatchDormantScadaReady -2025-01-03 21:27:28.075 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 21:27:30.148 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:33.149 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:36.154 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:39.160 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:42.165 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:45.173 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:48.177 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:51.182 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:54.189 [atn] Received remaining electricity 99 Wh -2025-01-03 21:27:57.191 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:00.201 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:03.205 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:06.212 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:09.219 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:12.224 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:15.229 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:18.232 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:21.242 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:24.248 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:27.253 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:30.259 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:31.142 [atn] Minute 28 -2025-01-03 21:28:33.266 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:36.270 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:39.273 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:42.282 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:45.286 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:48.292 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:51.298 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:54.304 [atn] Received remaining electricity 99 Wh -2025-01-03 21:28:57.307 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:00.316 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:03.322 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:06.328 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:09.334 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:12.339 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:15.346 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:18.351 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:21.358 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:24.365 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:27.369 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:30.375 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:33.382 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:36.388 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:37.145 [atn] Minute 29 -2025-01-03 21:29:39.394 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:42.401 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:45.406 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:48.415 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:51.421 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:54.426 [atn] Received remaining electricity 99 Wh -2025-01-03 21:29:57.434 [atn] Received remaining electricity 99 Wh -2025-01-03 22:41:49.968 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 22:41:49.980 [atn] State is DispatchDormantScadaNotReady -2025-01-03 22:41:49.990 ++Proactor.join() proactor: -2025-01-03 22:41:49.990 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 22:41:49.990 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 22:41:49.991 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 22:41:49.991 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 22:41:49.991 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 22:41:49.991 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 22:41:49.992 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 22:41:49.993 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:41:49.994 ERROR in process_message -Traceback (most recent call last): - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 362, in process_messages - await self.process_message(message) - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 459, in process_message - self._process_mqtt_message(message) - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/venv/lib/python3.11/site-packages/gwproactor/proactor_implementation.py", line 578, in _process_mqtt_message - self._derived_process_mqtt_message( - File "/Users/thomas/github/gw-scada-spaceheat-python/gw_spaceheat/actors/atn.py", line 281, in _derived_process_mqtt_message - case ScadaInit(): - ^^^^^^^^^ -NameError: name 'ScadaInit' is not defined -2025-01-03 22:41:49.994 Stopping proactor -2025-01-03 22:41:49.994 Tasks: 5 [DONE] - 1/5 watchdog_manager.join done:True exception:None - 2/5 atn-main done:True exception: - 3/5 process_messages done:True exception: - 4/5 fake market maker done:True exception: - 5/5 send_ping done:True exception: - -2025-01-03 22:41:49.994 Tasks: 0 [PENDING] - -2025-01-03 22:41:49.994 --Proactor.join() proactor: -2025-01-03 22:42:38.179 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 22:42:38.191 [atn] State is DispatchDormantScadaNotReady -2025-01-03 22:42:38.201 ++Proactor.join() proactor: -2025-01-03 22:42:38.201 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 22:42:38.201 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 22:42:38.202 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 22:42:38.202 Tasks: 5 [PENDING] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 22:42:38.202 Tasks: 5 [WAITING FOR] - 1/5 watchdog_manager.join done:False exception:None - 2/5 atn-main done:False exception:None - 3/5 process_messages done:False exception:None - 4/5 fake market maker done:False exception:None - 5/5 send_ping done:False exception:None - -2025-01-03 22:42:38.202 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 22:42:38.202 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 22:42:38.204 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:42:38.206 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:42:38.206 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:42:38.206 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 22:42:41.065 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:42:41.065 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:42:41.065 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 22:42:43.202 [atn] Minute 42 -2025-01-03 22:43:35.580 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:43:35.580 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:43:35.580 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 22:43:49.205 [atn] Minute 43 -2025-01-03 22:44:55.208 [atn] Minute 44 -2025-01-03 22:45:11.422 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 22:45:11.435 [atn] State is DispatchDormantScadaNotReady -2025-01-03 22:45:11.445 ++Proactor.join() proactor: -2025-01-03 22:45:11.446 Tasks: 6 [Proactor.join() - all tasks] - 1/6 process_messages done:False exception:None - 2/6 fake market maker done:False exception:None - 3/6 Task-1 done:False exception:None - 4/6 send_ping done:False exception:None - 5/6 pat_watchdog done:False exception:None - 6/6 atn-main done:False exception:None - -2025-01-03 22:45:11.446 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 22:45:11.446 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 22:45:11.446 Tasks: 5 [PENDING] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 22:45:11.446 Tasks: 5 [WAITING FOR] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 22:45:11.446 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 22:45:11.447 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 22:45:13.462 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:45:13.471 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:45:13.472 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:45:13.472 [atn] ['buffer-depth1', 'buffer-depth2', 'buffer-depth3', 'buffer-depth4', 'tank1-depth1', 'tank1-depth2', 'tank1-depth3', 'tank1-depth4', 'tank2-depth1', 'tank2-depth2', 'tank2-depth3', 'tank2-depth4', 'tank3-depth1', 'tank3-depth2', 'tank3-depth3', 'tank3-depth4'] -2025-01-03 22:45:16.447 [atn] Minute 45 -2025-01-03 22:45:16.448 scada: active -- response_timeout --> awaiting_peer -2025-01-03 22:45:33.464 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:45:56.207 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 22:45:56.219 [atn] State is DispatchDormantScadaNotReady -2025-01-03 22:45:56.229 ++Proactor.join() proactor: -2025-01-03 22:45:56.229 Tasks: 6 [Proactor.join() - all tasks] - 1/6 fake market maker done:False exception:None - 2/6 Task-1 done:False exception:None - 3/6 send_ping done:False exception:None - 4/6 pat_watchdog done:False exception:None - 5/6 atn-main done:False exception:None - 6/6 process_messages done:False exception:None - -2025-01-03 22:45:56.230 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 22:45:56.230 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 22:45:56.230 Tasks: 5 [PENDING] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 22:45:56.230 Tasks: 5 [WAITING FOR] - 1/5 fake market maker done:False exception:None - 2/5 send_ping done:False exception:None - 3/5 watchdog_manager.join done:False exception:None - 4/5 atn-main done:False exception:None - 5/5 process_messages done:False exception:None - -2025-01-03 22:45:56.230 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 22:45:56.231 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 22:45:56.232 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:45:59.138 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:45:59.138 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:46:01.231 [atn] Minute 46 -2025-01-03 22:47:07.217 [atn] Minute 47 -2025-01-03 22:48:13.214 [atn] Minute 48 -2025-01-03 22:49:19.217 [atn] Minute 49 -2025-01-03 22:50:25.220 [atn] Minute 50 -2025-01-03 22:51:31.223 [atn] Minute 51 -2025-01-03 22:52:05.028 scada: active -- response_timeout --> awaiting_peer -2025-01-03 22:52:37.225 [atn] Minute 52 -2025-01-03 22:53:42.165 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:53:42.175 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:53:42.175 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:53:43.228 [atn] Minute 53 -2025-01-03 22:54:47.179 scada: active -- response_timeout --> awaiting_peer -2025-01-03 22:54:49.231 [atn] Minute 54 -2025-01-03 22:55:55.234 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 22:56:16.699 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:56:16.709 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:56:16.709 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:56:36.724 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:56:36.724 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:57:01.237 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 22:57:19.343 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:57:19.343 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:57:40.794 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:57:40.794 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:58:07.239 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 22:59:13.242 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 22:59:19.784 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 22:59:19.797 [atn] State is DispatchDormantScadaNotReady -2025-01-03 22:59:19.807 ++Proactor.join() proactor: -2025-01-03 22:59:19.807 Tasks: 6 [Proactor.join() - all tasks] - 1/6 pat_watchdog done:False exception:None - 2/6 atn-main done:False exception:None - 3/6 process_messages done:False exception:None - 4/6 fake market maker done:False exception:None - 5/6 Task-1 done:False exception:None - 6/6 send_ping done:False exception:None - -2025-01-03 22:59:19.808 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 22:59:19.808 Tasks: 2 [DONE] - 1/2 io_loop_manager.join done:True exception:None - 2/2 _WebManager.join done:True exception:None - -2025-01-03 22:59:19.808 Tasks: 5 [PENDING] - 1/5 atn-main done:False exception:None - 2/5 process_messages done:False exception:None - 3/5 fake market maker done:False exception:None - 4/5 send_ping done:False exception:None - 5/5 watchdog_manager.join done:False exception:None - -2025-01-03 22:59:19.808 Tasks: 5 [WAITING FOR] - 1/5 atn-main done:False exception:None - 2/5 process_messages done:False exception:None - 3/5 fake market maker done:False exception:None - 4/5 send_ping done:False exception:None - 5/5 watchdog_manager.join done:False exception:None - -2025-01-03 22:59:19.808 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 22:59:19.808 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 22:59:21.586 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:59:21.597 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:59:21.597 [atn] State is now DispatchDormantScadaReady -2025-01-03 22:59:24.810 scada: active -- response_timeout --> awaiting_peer -2025-01-03 22:59:24.811 [atn] In the last 5 minutes but not running d. State is DispatchDormantScadaReady -2025-01-03 22:59:31.590 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 22:59:57.183 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 22:59:57.183 [atn] State is now DispatchDormantScadaReady -2025-01-03 23:00:00.001 [atn] Trying to Broadcasting price(x1000) 589630 at the top of the hour. -2025-01-03 23:00:00.003 [atn] Received latest price -2025-01-03 23:00:00.004 [atn] Ignoring - no bid exists -2025-01-03 23:00:30.813 [atn] Minute 0 -2025-01-03 23:01:36.815 [atn] Minute 1 -2025-01-03 23:02:42.818 [atn] Minute 2 -2025-01-03 23:03:48.820 [atn] Minute 3 -2025-01-03 23:04:54.822 [atn] Minute 4 -2025-01-03 23:06:00.825 [atn] Minute 6 -2025-01-03 23:06:36.679 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 23:06:36.679 [atn] State is now DispatchDormantScadaReady -2025-01-03 23:07:06.827 [atn] Minute 7 -2025-01-03 23:08:12.830 [atn] Minute 8 -2025-01-03 23:09:18.832 [atn] Minute 9 -2025-01-03 23:10:24.835 [atn] Minute 10 -2025-01-03 23:11:30.836 [atn] Minute 11 -2025-01-03 23:12:16.703 Env file: [/Users/thomas/github/gw-scada-spaceheat-python/.env] -2025-01-03 23:12:16.715 [atn] State is DispatchDormantScadaNotReady -2025-01-03 23:12:16.726 ++Proactor.join() proactor: -2025-01-03 23:12:16.726 Tasks: 6 [Proactor.join() - all tasks] - 1/6 process_messages done:False exception:None - 2/6 fake market maker done:False exception:None - 3/6 Task-1 done:False exception:None - 4/6 send_ping done:False exception:None - 5/6 pat_watchdog done:False exception:None - 6/6 atn-main done:False exception:None - -2025-01-03 23:12:16.726 Tasks: 7 [WAITING FOR] - 1/7 process_messages done:False exception:None - 2/7 send_ping done:False exception:None - 3/7 atn-main done:False exception:None - 4/7 fake market maker done:False exception:None - 5/7 watchdog_manager.join done:False exception:None - 6/7 io_loop_manager.join done:False exception:None - 7/7 _WebManager.join done:False exception:None - -2025-01-03 23:12:16.726 Tasks: 2 [DONE] - 1/2 _WebManager.join done:True exception:None - 2/2 io_loop_manager.join done:True exception:None - -2025-01-03 23:12:16.726 Tasks: 5 [PENDING] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 23:12:16.727 Tasks: 5 [WAITING FOR] - 1/5 process_messages done:False exception:None - 2/5 fake market maker done:False exception:None - 3/5 send_ping done:False exception:None - 4/5 watchdog_manager.join done:False exception:None - 5/5 atn-main done:False exception:None - -2025-01-03 23:12:16.727 scada: connecting -- mqtt_connected --> awaiting_setup_and_peer -2025-01-03 23:12:16.727 scada: awaiting_setup_and_peer -- mqtt_suback --> awaiting_peer -2025-01-03 23:12:18.473 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 23:12:18.482 Just got layout: AlphaTimes10=55 BetaTimes100=-10 GammaEx6=0 IntermediatePowerKw=1.5 IntermediateRswtF=100 DdPowerKw=5.5 DdRswtF=150 DdDeltaTF=20 HpMaxKwTh=14.0 MaxEwtF=170 TypeName='ha1.params' Version='001' -2025-01-03 23:12:18.482 [atn] State is now DispatchDormantScadaReady -2025-01-03 23:12:20.544 [atn] Scada is on! -2025-01-03 23:12:21.728 scada: active -- response_timeout --> awaiting_peer -2025-01-03 23:12:21.729 [atn] Minute 12 -2025-01-03 23:12:33.483 scada: awaiting_peer -- message_from_peer --> active -2025-01-03 23:13:27.731 [atn] Minute 13 -2025-01-03 23:14:33.734 [atn] Minute 14 -2025-01-03 23:15:39.737 [atn] Minute 15 -2025-01-03 23:16:45.740 [atn] Minute 16 -2025-01-03 23:17:51.742 [atn] Minute 17 -2025-01-03 23:18:57.745 [atn] Minute 18 -2025-01-03 23:20:03.748 [atn] Minute 20 From fc83be1f31533ca20eb620e111ebe1e8bd35d873 Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 22:04:35 +0100 Subject: [PATCH 11/13] Moving ScadaInit from SynthGenerator to AA --- gw_spaceheat/actors/atomic_ally.py | 3 ++- gw_spaceheat/actors/scada.py | 5 +---- gw_spaceheat/actors/synth_generator.py | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/gw_spaceheat/actors/atomic_ally.py b/gw_spaceheat/actors/atomic_ally.py index 929c2581..98afd45d 100644 --- a/gw_spaceheat/actors/atomic_ally.py +++ b/gw_spaceheat/actors/atomic_ally.py @@ -21,7 +21,7 @@ from actors.scada_actor import ScadaActor from actors.scada_data import ScadaData from actors.synth_generator import WeatherForecast -from named_types import RemainingElec +from named_types import RemainingElec, ScadaInit class AtomicAllyState(GwStrEnum): @@ -315,6 +315,7 @@ def check_and_update_state(self) -> None: async def main(self): await asyncio.sleep(2) + self._send_to(self.primary_scada, ScadaInit(FromGNodeAlias=self.layout.atn_g_node_alias)) # SynthGenerator gets weather ASAP on boot, including various fallbacks # if the request does not work. So wait a bit if if self.weather is None: diff --git a/gw_spaceheat/actors/scada.py b/gw_spaceheat/actors/scada.py index 574f6105..0a59de99 100644 --- a/gw_spaceheat/actors/scada.py +++ b/gw_spaceheat/actors/scada.py @@ -756,10 +756,7 @@ def update_env_variable(self, variable, new_value) -> None: with open(dotenv_filepath, 'w') as file: line_exists = False for line in lines: - if (line.startswith(f"{variable}=") - or line.startswith(f"{variable}= ") - or line.startswith(f"{variable} =") - or line.startswith(f"{variable} = ")): + if line.strip().startswith(f"{variable}="): file.write(f"{variable}={new_value}\n") line_exists = True else: diff --git a/gw_spaceheat/actors/synth_generator.py b/gw_spaceheat/actors/synth_generator.py index 66dbf2e1..e5b0f28a 100644 --- a/gw_spaceheat/actors/synth_generator.py +++ b/gw_spaceheat/actors/synth_generator.py @@ -16,7 +16,7 @@ from actors.scada_actor import ScadaActor from data_classes.house_0_names import H0CN -from named_types import EnergyInstruction, Ha1Params, RemainingElec, ScadaInit +from named_types import EnergyInstruction, Ha1Params, RemainingElec from pydantic import Field # -------------- TODO: move to named_types ------------- @@ -130,7 +130,6 @@ async def main(self): async def main_loop(self, session: aiohttp.ClientSession) -> None: await self.get_weather(session) await asyncio.sleep(2) - self._send_to(self.primary_scada, ScadaInit(FromGNodeAlias=self.layout.atn_g_node_alias)) while not self._stop_requested: self._send(PatInternalWatchdogMessage(src=self.name)) From 48b1b8bead6fedb809e44b5c3d777f3117a25770 Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 22:06:10 +0100 Subject: [PATCH 12/13] Small mistake when updating env variables --- gw_spaceheat/actors/scada.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gw_spaceheat/actors/scada.py b/gw_spaceheat/actors/scada.py index 0a59de99..0e9b9953 100644 --- a/gw_spaceheat/actors/scada.py +++ b/gw_spaceheat/actors/scada.py @@ -756,7 +756,7 @@ def update_env_variable(self, variable, new_value) -> None: with open(dotenv_filepath, 'w') as file: line_exists = False for line in lines: - if line.strip().startswith(f"{variable}="): + if line.replace(' ','').startswith(f"{variable}="): file.write(f"{variable}={new_value}\n") line_exists = True else: From 22a85d4b4126dc7ae6cb9f54d32c1ccbdc223c6e Mon Sep 17 00:00:00 2001 From: thdfw Date: Mon, 6 Jan 2025 22:33:53 +0100 Subject: [PATCH 13/13] Hardcoding path to .env file --- gw_spaceheat/actors/scada.py | 35 +++++++++++++++++++++-------------- tests/actors/test_synth.py | 2 +- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/gw_spaceheat/actors/scada.py b/gw_spaceheat/actors/scada.py index 0e9b9953..c2793292 100644 --- a/gw_spaceheat/actors/scada.py +++ b/gw_spaceheat/actors/scada.py @@ -1,5 +1,6 @@ """Scada implementation""" +import os import asyncio import enum import uuid @@ -742,15 +743,21 @@ def _renew_admin_timeout(self, timeout_seconds: Optional[int] = None): self._admin_timeout_task.cancel() self._admin_timeout_task = asyncio.create_task(self._timeout_admin(timeout_seconds)) - def update_env_variable(self, variable, new_value) -> None: + def update_env_variable(self, variable, new_value, testing:bool=False) -> None: """ Updates .env with new Scada Params. TODO: move this somewhere else, like a local sqlite db """ - dotenv_filepath = dotenv.find_dotenv(usecwd=True) - if not dotenv_filepath: - self.logger.error("Couldn't find a .env file - perhaps because in CI?") - return + if testing: + dotenv_filepath = dotenv.find_dotenv(usecwd=True) + if not dotenv_filepath: + self.logger.error("Couldn't find a .env file - perhaps because in CI?") + return + else: + dotenv_filepath = "/home/pi/gw-scada-spaceheat-python/.env" + if not os.path.isfile(dotenv_filepath): + self.log("Did not find .env file") + return with open(dotenv_filepath, 'r') as file: lines = file.readlines() with open(dotenv_filepath, 'w') as file: @@ -764,7 +771,7 @@ def update_env_variable(self, variable, new_value) -> None: if not line_exists: file.write(f"\n{variable}={new_value}\n") - def _scada_params_received(self, message: ScadaParams) -> None: + def _scada_params_received(self, message: ScadaParams, testing:bool=False) -> None: if message.FromGNodeAlias != self.hardware_layout.atn_g_node_alias: return new = message.NewParams @@ -772,21 +779,21 @@ def _scada_params_received(self, message: ScadaParams) -> None: old = self.data.ha1_params self.data.ha1_params = new if new.AlphaTimes10 != old.AlphaTimes10: - self.update_env_variable('SCADA_ALPHA', new.AlphaTimes10 / 10) + self.update_env_variable('SCADA_ALPHA', new.AlphaTimes10 / 10, testing) if new.BetaTimes100 != old.BetaTimes100: - self.update_env_variable('SCADA_BETA', new.BetaTimes100 / 100) + self.update_env_variable('SCADA_BETA', new.BetaTimes100 / 100, testing) if new.GammaEx6 != old.GammaEx6: - self.update_env_variable('SCADA_GAMMA', new.GammaEx6 / 1e6) + self.update_env_variable('SCADA_GAMMA', new.GammaEx6 / 1e6, testing) if new.IntermediatePowerKw != old.IntermediatePowerKw: - self.update_env_variable('SCADA_INTERMEDIATE_POWER', new.IntermediatePowerKw) + self.update_env_variable('SCADA_INTERMEDIATE_POWER', new.IntermediatePowerKw, testing) if new.IntermediateRswtF != old.IntermediateRswtF: - self.update_env_variable('SCADA_INTERMEDIATE_RSWT', new.IntermediateRswtF) + self.update_env_variable('SCADA_INTERMEDIATE_RSWT', new.IntermediateRswtF, testing) if new.DdPowerKw != old.DdPowerKw: - self.update_env_variable('SCADA_DD_POWER', new.DdPowerKw) + self.update_env_variable('SCADA_DD_POWER', new.DdPowerKw, testing) if new.DdRswtF != old.DdRswtF: - self.update_env_variable('SCADA_DD_RSWT', new.DdRswtF) + self.update_env_variable('SCADA_DD_RSWT', new.DdRswtF, testing) if new.DdDeltaTF != old.DdDeltaTF: - self.update_env_variable('SCADA_DD_DELTA_T', new.DdDeltaTF) + self.update_env_variable('SCADA_DD_DELTA_T', new.DdDeltaTF, testing) response = ScadaParams( FromGNodeAlias=self.hardware_layout.scada_g_node_alias, diff --git a/tests/actors/test_synth.py b/tests/actors/test_synth.py index b91f79ef..5e5826a3 100644 --- a/tests/actors/test_synth.py +++ b/tests/actors/test_synth.py @@ -71,7 +71,7 @@ def test_ha1(monkeypatch, tmp_path): NewParams=new ) - s._scada_params_received(params_from_atn) + s._scada_params_received(params_from_atn, testing=True) assert synth.params.DdPowerKw == 10 # wrote the new parameter to .env