From 1674db113b56408bd4f33102bbc8accc378211f9 Mon Sep 17 00:00:00 2001 From: Jakub Ranosz <55526725+JakubRanosz@users.noreply.github.com> Date: Wed, 17 Dec 2025 13:38:28 +0100 Subject: [PATCH] Fix: Enable WebSocket updates for custom Modbus register devices --- evok/modbus_slave.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/evok/modbus_slave.py b/evok/modbus_slave.py index 72dd1ce..4c2c691 100644 --- a/evok/modbus_slave.py +++ b/evok/modbus_slave.py @@ -450,6 +450,7 @@ def parse_feature_register(self, max_count, m_feature): else: _reg = Register("%s_%d" % (self.circuit, board_val_reg + counter), self, counter, board_val_reg + counter, major_group=self.major_group, legacy_mode=self.legacy_mode) + self.__register_eventable_device(_reg) Devices.register_device(REGISTER, _reg) counter+=1 @@ -1186,6 +1187,12 @@ def __init__(self, circuit, arm, post, reg, reg_type="holding", major_group=0, l self.legacy_mode = legacy_mode self.valreg = reg self.reg_type = reg_type + self._cached_value = None + + async def check_new_data(self): + old_value = self._cached_value + self._cached_value = self.regvalue() + return old_value != self._cached_value def regvalue(self): try: @@ -1212,6 +1219,8 @@ def simple(self): @property def value(self): + if self._cached_value is not None: + return self._cached_value try: if self.regvalue(): return self.regvalue()