From 282a459ef0b2d9f9019fb462058e824ce04fa104 Mon Sep 17 00:00:00 2001 From: Stefan Allius Date: Sun, 19 May 2024 12:23:58 +0200 Subject: [PATCH] add Modbus response forwarding --- app/src/gen3/talent.py | 13 ++++++------- app/src/gen3plus/solarman_v5.py | 12 ++++-------- app/src/modbus.py | 7 ++++++- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/gen3/talent.py b/app/src/gen3/talent.py index 12fcf6c..c76c775 100644 --- a/app/src/gen3/talent.py +++ b/app/src/gen3/talent.py @@ -42,7 +42,6 @@ class Talent(Message): self.contact_name = b'' self.contact_mail = b'' self.db = InfosG3() - self.forward_modbus_resp = False self.switch = { 0x00: self.msg_contact_info, 0x13: self.msg_ota_update, @@ -124,7 +123,6 @@ class Talent(Message): return def send_modbus_cb(self, modbus_pdu: bytearray): - self.forward_modbus_resp = False self.__build_header(0x70, 0x77) self._send_buffer += b'\x00\x01\xa3\x28' # fixme self._send_buffer += struct.pack('!B', len(modbus_pdu)) @@ -394,11 +392,11 @@ class Talent(Message): self.header_len+self.data_len] if self.ctrl.is_req(): - if not self.remoteStream.mb.recv_req(data[hdr_len:]): + if not self.remoteStream.mb.recv_req(data[hdr_len:], + self.msg_forward): self.inc_counter('Invalid_Msg_Format') else: self.inc_counter('Modbus_Command') - self.remoteStream.forward_modbus_resp = True elif self.ctrl.is_ind(): # logger.debug(f'Modbus Ind MsgLen: {modbus_len}') self.modbus_elms = 0 @@ -408,14 +406,15 @@ class Talent(Message): if update: self.new_data[key] = True self.modbus_elms += 1 # count for unit tests - - if not self.forward_modbus_resp: - return + return else: logger.warning('Unknown Ctrl') self.inc_counter('Unknown_Ctrl') self.forward(self._recv_buffer, self.header_len+self.data_len) + def msg_forward(self): + self.forward(self._recv_buffer, self.header_len+self.data_len) + def msg_unknown(self): logger.warning(f"Unknow Msg: ID:{self.msg_id}") self.inc_counter('Unknown_Msg') diff --git a/app/src/gen3plus/solarman_v5.py b/app/src/gen3plus/solarman_v5.py index f744951..2d61b68 100644 --- a/app/src/gen3plus/solarman_v5.py +++ b/app/src/gen3plus/solarman_v5.py @@ -60,7 +60,6 @@ class SolarmanV5(Message): self.snr = 0 self.db = InfosG3P() self.time_ofs = 0 - self.forward_modbus_resp = False self.forward_at_cmd_resp = False self.switch = { @@ -303,7 +302,6 @@ class SolarmanV5(Message): self.__finish_send_msg() def send_modbus_cb(self, pdu: bytearray): - self.forward_modbus_resp = False self.__build_header(0x4510) self._send_buffer += struct.pack(' bool: return 0 == self.__calc_crc(msg)