improve modbus trace
This commit is contained in:
@@ -392,7 +392,7 @@ class Talent(Message):
|
||||
elif self.ctrl.is_ind():
|
||||
logger.debug(f'Modbus Ind MsgLen: {modbus_len}')
|
||||
for key, update in self.mb.recv_resp(self.db, self._recv_buffer[
|
||||
self.header_len + hdr_len:]):
|
||||
self.header_len + hdr_len:], self.new_data):
|
||||
if update:
|
||||
self.new_data[key] = True
|
||||
|
||||
|
||||
@@ -434,11 +434,12 @@ class SolarmanV5(Message):
|
||||
elif ftype == self.MB_RTU_CMD:
|
||||
valid = data[1]
|
||||
modbus_msg_len = self.data_len - 14
|
||||
logger.info(f'modbus_len:{modbus_msg_len} accepted:{valid}')
|
||||
logger.debug(f'modbus_len:{modbus_msg_len} accepted:{valid}')
|
||||
if valid == 1 and modbus_msg_len > 4:
|
||||
logger.info(f'first byte modbus:{data[14]}')
|
||||
inv_update = False
|
||||
for key, update in self.mb.recv_resp(self.db, data[14:-2]):
|
||||
for key, update in self.mb.recv_resp(self.db, data[14:-2],
|
||||
self.node_id):
|
||||
if update:
|
||||
if key == 'inverter':
|
||||
inv_update = True
|
||||
|
||||
@@ -93,8 +93,8 @@ class Modbus():
|
||||
self.last_len = res[2]
|
||||
return True
|
||||
|
||||
def recv_resp(self, info_db, buf: bytearray) -> Generator[tuple[str, bool],
|
||||
None, None]:
|
||||
def recv_resp(self, info_db, buf: bytearray, node_id: str) -> \
|
||||
Generator[tuple[str, bool], None, None]:
|
||||
logging.info(f'recv_resp: first byte modbus:{buf[0]} len:{len(buf)}')
|
||||
if not self.check_crc(buf):
|
||||
logging.error('Modbus: CRC error')
|
||||
@@ -136,8 +136,9 @@ class Modbus():
|
||||
name = str(f'info-id.0x{addr:x}')
|
||||
update = False
|
||||
|
||||
info_db.tracer.log(level, f'GEN3PLUS: {name} : {result}{unit}'
|
||||
f' update: {update}')
|
||||
info_db.tracer.log(level,
|
||||
f'MODBUS({node_id}): {name} : {result}'
|
||||
f'{unit} update: {update}')
|
||||
|
||||
def check_crc(self, msg) -> bool:
|
||||
return 0 == self.__calc_crc(msg)
|
||||
|
||||
Reference in New Issue
Block a user