jblance / mpp-solar

Python package to communicate to MPP Solar PIP-4048MS inverters (and similar)
MIT License
365 stars 151 forks source link

Fragmented cellVoltage serial response with Daly BMS #516

Open klvbdmh opened 1 month ago

klvbdmh commented 1 month ago

Occasionally, reported cellVoltage values are outside of the norm. The app and the UART monitor show correct values all of the time.

Setup

I connected my Daly BMS (16S 48V 250A) to Raspberry Pi 4B through the UART to USB cable.

mpp-solar --version
Solar Device Command Utility, version: 0.16.39, python version: 3.11.2

Input

mpp-solar -n DalyBMS -p /dev/ttyUSB0 -b 9600 -P DALY --porttype=dalyserial -c cellVoltages -D

Output (debug)

2024-10-07 07:50:31,025:INFO:__init__:main@216: Solar Device Command Utility, version: 0.16.39, python version: 3.11.2
2024-10-07 07:50:31,025:DEBUG:mqttbrokerc:__init__@29: mqttbroker config: {'name': 'localhost', 'port': 1883, 'user': None, 'pass': None}
2024-10-07 07:50:31,025:DEBUG:__init__:main@251: MqttBroker name: localhost, port: 1883, user: None
2024-10-07 07:50:31,025:DEBUG:__init__:main@253: udp port 5555
2024-10-07 07:50:31,025:DEBUG:__init__:main@255: Using Postgres None
2024-10-07 07:50:31,026:DEBUG:__init__:main@258: Using Mongo None with mppsolar
2024-10-07 07:50:31,027:INFO:__init__:main@275: Daemon DISABLED
2024-10-07 07:50:31,027:INFO:__init__:main@379: Creating device "DalyBMS" (type: "mppsolar") on port "/dev/ttyUSB0 (porttype=dalyserial)" using protocol "DALY"
2024-10-07 07:50:31,030:DEBUG:__init__:main@383: device_class <class 'mppsolar.devices.mppsolar.mppsolar'>
2024-10-07 07:50:31,030:DEBUG:device:__init__@34: __init__ args ()
2024-10-07 07:50:31,030:DEBUG:device:__init__@35: __init__ kwargs {'name': 'DalyBMS', 'port': '/dev/ttyUSB0', 'protocol': 'DALY', 'baud': 9600, 'porttype': 'dalyserial', 'mqtt_broker': <mppsolar.libs.mqttbrokerc.MqttBroker object at 0x7f8d379b10>, 'udp_port': 5555, 'mongo_url': None, 'mongo_db': 'mppsolar', 'push_url': 'http://localhost:9091/metrics/job/pushgateway', 'prom_output_dir': '/var/lib/node_exporter'}
2024-10-07 07:50:31,031:INFO:__init__:get_port@81: Port overide - using port 'dalyserial'
2024-10-07 07:50:31,031:DEBUG:__init__:get_port_type@57: port matches daly
2024-10-07 07:50:31,031:INFO:__init__:get_port@117: Using dalyserialio for communications
2024-10-07 07:50:31,038:DEBUG:__init__:get_protocol@13: Protocol DALY
2024-10-07 07:50:31,327:DEBUG:device:__init__@39: __init__ name DalyBMS, port <mppsolar.inout.dalyserialio.DalySerialIO object at 0x7f8d37b0d0>, protocol Daly BMS protocol handler
2024-10-07 07:50:31,327:DEBUG:__init__:main@430: Commands [(<mppsolar.devices.mppsolar.mppsolar object at 0x7f8d379fd0>, 'cellVoltages', 'cellVoltages', 'screen', None, None)]
2024-10-07 07:50:31,327:INFO:__init__:main@435: Looping 1 commands
2024-10-07 07:50:31,328:INFO:__init__:main@441: Getting results from device: mppsolar device - name: DalyBMS, port: <mppsolar.inout.dalyserialio.DalySerialIO object at 0x7f8d37b0d0>, protocol: Daly BMS protocol handler for command: cellVoltages, tag: cellVoltages, outputs: screen
2024-10-07 07:50:31,328:INFO:device:run_command@51: Running command cellVoltages
2024-10-07 07:50:31,328:INFO:daly:get_full_command@212: Using protocol b'DALY' with 7 commands
2024-10-07 07:50:31,328:DEBUG:abstractprotocol:get_command_defn@71: Processing command 'cellVoltages'
2024-10-07 07:50:31,328:DEBUG:abstractprotocol:get_command_defn@73: Found command cellVoltages in protocol b'DALY'
2024-10-07 07:50:31,328:DEBUG:daly:get_full_command@231: full command: b'\xa5\x80\x95\x08\x00\x00\x00\x00\x00\x00\x00\x00\xc2\n'
2024-10-07 07:50:31,328:INFO:device:run_command@81: full command b'\xa5\x80\x95\x08\x00\x00\x00\x00\x00\x00\x00\x00\xc2\n' for command cellVoltages
2024-10-07 07:50:31,328:DEBUG:abstractprotocol:get_command_defn@71: Processing command 'cellVoltages'
2024-10-07 07:50:31,328:DEBUG:abstractprotocol:get_command_defn@73: Found command cellVoltages in protocol b'DALY'
2024-10-07 07:50:31,328:DEBUG:dalyserialio:send_and_receive@19: port /dev/ttyUSB0, baudrate 9600
2024-10-07 07:50:31,335:DEBUG:dalyserialio:send_and_receive@22: Executing command via dalyserialio...
2024-10-07 07:50:31,836:DEBUG:dalyserialio:send_and_receive@32: bytes waiting 92
2024-10-07 07:50:32,336:DEBUG:dalyserialio:send_and_receive@32: bytes waiting 0
2024-10-07 07:50:32,337:DEBUG:dalyserialio:send_and_receive@38: serial response was: b'{\xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{'
2024-10-07 07:50:32,340:DEBUG:device:run_command@98: Send and Receive Response b'{\xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{'
2024-10-07 07:50:32,341:DEBUG:abstractprotocol:decode@238: response passed to decode: b'{\xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{'
2024-10-07 07:50:32,341:DEBUG:abstractprotocol:get_command_defn@71: Processing command 'cellVoltages'
2024-10-07 07:50:32,341:DEBUG:abstractprotocol:get_command_defn@73: Found command cellVoltages in protocol b'DALY'
2024-10-07 07:50:32,341:DEBUG:daly:check_response_valid@245: checking validity of b'{\xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{'
2024-10-07 07:50:32,342:INFO:daly:check_response_valid@251: is multiframe response - assuming ok for now
2024-10-07 07:50:32,342:DEBUG:abstractprotocol:decode@283: Processing response of type MULTIFRAME-POSITIONAL
2024-10-07 07:50:32,342:INFO:daly:get_responses@292: Multi frame response with 8 frames
2024-10-07 07:50:32,343:DEBUG:abstractprotocol:decode@287: trimmed and split responses: [[b'{', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x06\x0c', b'\xce\x0c', b'\xd0\x0c', b'\xd0', b'\xa0'], [b'{', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x01\x0c', b'\xd1\x0c', b'\xd0\x0c', b'\xce', b'\xa0'], [b'w', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x02\x0c', b'\xd0\x0c', b'\xcf\x0c', b'\xd0', b'\xa0'], [b'x', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x03\x0c', b'\xcf\x0c', b'\xd0\x0c', b'\xcf', b'\xa0'], [b'x', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x04\x0c', b'\xd0\x0c', b'\xcf\x0c', b'\xd0', b'\xa0'], [b'z', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x05\x0c', b'\xcf\x0c', b'\xd0\x0c', b'\xcf', b'\xa0'], [b'z', b'\xa5', b'\x01', b'\x95', b'\x08', b'\x06\x0c', b'\xcf\x0c', b'\xd0\x0c', b'\xcf', b'\xa0'], [b'{', b'', b'', b'', b'', b'', b'', b'', b'', b'']]
2024-10-07 07:50:32,343:DEBUG:abstractprotocol:decode@411: Processing MULTIFRAME-POSITIONAL type responses
2024-10-07 07:50:32,344:DEBUG:abstractprotocol:decode@415: got 8 frames
2024-10-07 07:50:32,344:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,344:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,345:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'{'
2024-10-07 07:50:32,345:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'{'
2024-10-07 07:50:32,345:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,345:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,346:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,346:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,346:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,347:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,347:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,347:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,347:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,348:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,348:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,348:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,348:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,349:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,349:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,349:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,349:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,350:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,350:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x06\x0c'
2024-10-07 07:50:32,350:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x06\x0c'
2024-10-07 07:50:32,351:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,351:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x06\x0c' 2 byte decoded to 1548
2024-10-07 07:50:32,352:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,352:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,353:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xce\x0c'
2024-10-07 07:50:32,353:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xce\x0c'
2024-10-07 07:50:32,353:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,354:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xce\x0c' 2 byte decoded to -12788
2024-10-07 07:50:32,354:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,355:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,355:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,355:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,356:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,356:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,357:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,357:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,357:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xd0'
2024-10-07 07:50:32,357:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xd0'
2024-10-07 07:50:32,357:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,358:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,358:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,358:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,358:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,359:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,359:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'{'
2024-10-07 07:50:32,359:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'{'
2024-10-07 07:50:32,359:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,360:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,360:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,360:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,360:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,361:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,361:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,361:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,361:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,362:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,362:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,362:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,362:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,362:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,363:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,363:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,363:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,363:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,364:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x01\x0c'
2024-10-07 07:50:32,364:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x01\x0c'
2024-10-07 07:50:32,364:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,364:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x01\x0c' 2 byte decoded to 268
2024-10-07 07:50:32,365:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,365:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,366:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xd1\x0c'
2024-10-07 07:50:32,366:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xd1\x0c'
2024-10-07 07:50:32,366:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,367:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd1\x0c' 2 byte decoded to -12020
2024-10-07 07:50:32,367:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,367:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,368:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,368:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,368:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,369:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,369:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,369:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,370:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xce'
2024-10-07 07:50:32,370:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xce'
2024-10-07 07:50:32,370:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,370:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,371:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,371:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,371:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,371:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,372:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'w'
2024-10-07 07:50:32,372:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'w'
2024-10-07 07:50:32,372:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,373:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,373:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,373:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,373:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,374:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,374:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,374:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,374:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,375:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,375:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,375:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,375:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,376:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,376:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,376:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,377:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,377:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,377:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x02\x0c'
2024-10-07 07:50:32,377:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x02\x0c'
2024-10-07 07:50:32,378:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,378:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x02\x0c' 2 byte decoded to 524
2024-10-07 07:50:32,379:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,379:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,379:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,379:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,380:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,380:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,381:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,381:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,381:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xcf\x0c'
2024-10-07 07:50:32,381:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xcf\x0c'
2024-10-07 07:50:32,382:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,382:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xcf\x0c' 2 byte decoded to -12532
2024-10-07 07:50:32,383:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,383:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,383:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xd0'
2024-10-07 07:50:32,383:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xd0'
2024-10-07 07:50:32,384:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,384:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,384:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,384:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,385:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,385:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,385:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'x'
2024-10-07 07:50:32,385:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'x'
2024-10-07 07:50:32,385:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,386:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,386:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,386:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,386:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,387:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,387:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,387:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,387:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,388:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,388:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,388:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,388:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,389:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,389:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,389:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,389:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,389:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,390:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x03\x0c'
2024-10-07 07:50:32,390:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x03\x0c'
2024-10-07 07:50:32,390:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,390:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x03\x0c' 2 byte decoded to 780
2024-10-07 07:50:32,391:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,391:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,392:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xcf\x0c'
2024-10-07 07:50:32,392:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xcf\x0c'
2024-10-07 07:50:32,392:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,393:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xcf\x0c' 2 byte decoded to -12532
2024-10-07 07:50:32,393:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,393:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,394:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,394:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,394:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,394:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,395:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,395:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,396:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xcf'
2024-10-07 07:50:32,396:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xcf'
2024-10-07 07:50:32,396:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,396:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,396:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,397:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,397:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,397:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,397:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'x'
2024-10-07 07:50:32,398:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'x'
2024-10-07 07:50:32,398:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,398:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,398:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,398:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,399:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,399:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,399:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,400:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,400:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,400:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,400:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,400:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,401:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,401:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,401:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,401:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,402:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,402:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,402:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x04\x0c'
2024-10-07 07:50:32,402:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x04\x0c'
2024-10-07 07:50:32,403:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,403:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x04\x0c' 2 byte decoded to 1036
2024-10-07 07:50:32,403:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,404:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,404:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,404:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,404:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,404:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,404:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xcf\x0c'
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xcf\x0c'
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,405:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xcf\x0c' 2 byte decoded to -12532
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xd0'
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xd0'
2024-10-07 07:50:32,405:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'z'
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'z'
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,406:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x05\x0c'
2024-10-07 07:50:32,407:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x05\x0c'
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,408:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x05\x0c' 2 byte decoded to 1292
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xcf\x0c'
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xcf\x0c'
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,408:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xcf\x0c' 2 byte decoded to -12532
2024-10-07 07:50:32,408:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,409:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xcf'
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xcf'
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,409:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'z'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'z'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b'\xa5'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@124: Discarding module address:b'\xa5'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b'\x01'
2024-10-07 07:50:32,410:DEBUG:abstractprotocol:process_response@124: Discarding command id:b'\x01'
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b'\x95'
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:process_response@124: Discarding data length:b'\x95'
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b'\x08'
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b'\x08'
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b'\x06\x0c'
2024-10-07 07:50:32,411:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b'\x06\x0c'
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,412:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\x06\x0c' 2 byte decoded to 1548
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b'\xcf\x0c'
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b'\xcf\x0c'
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,412:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xcf\x0c' 2 byte decoded to -12532
2024-10-07 07:50:32,412:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b'\xd0\x0c'
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b'\xd0\x0c'
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,413:DEBUG:protocol_helpers:BigHex2Short@146: Hex b'\xd0\x0c' 2 byte decoded to -12276
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b'\xcf'
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b'\xcf'
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b'\xa0'
2024-10-07 07:50:32,413:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b'\xa0'
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'start flag', '']
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: start flag, raw_value b'{'
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:process_response@124: Discarding start flag:b'{'
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'module address', '']
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: module address, raw_value b''
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:process_response@124: Discarding module address:b''
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'command id', '']
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: command id, raw_value b''
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:process_response@124: Discarding command id:b''
2024-10-07 07:50:32,414:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'data length', '']
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: data length, raw_value b''
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@124: Discarding data length:b''
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, "f'Frame Number {f:02d}'", '']
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: f'Frame Number {f:02d}', raw_value b''
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@124: Discarding f'Frame Number {f:02d}':b''
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+1:02d} Voltage'", 'V']
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+1:02d} Voltage' b''
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+1:02d} Voltage', raw_value b''
2024-10-07 07:50:32,415:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,416:INFO:protocol_helpers:BigHex2Short@143: Hex encoded value must be 2 bytes long. Was 0 length
2024-10-07 07:50:32,416:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,416:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+2:02d} Voltage'", 'V']
2024-10-07 07:50:32,416:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+2:02d} Voltage' b''
2024-10-07 07:50:32,416:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+2:02d} Voltage', raw_value b''
2024-10-07 07:50:32,416:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,416:INFO:protocol_helpers:BigHex2Short@143: Hex encoded value must be 2 bytes long. Was 0 length
2024-10-07 07:50:32,416:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:decode@523: Got defn ['BigHex2Short:r/1000', 2, "f'Cell {3*f+3:02d} Voltage'", 'V']
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@117: Got template r/1000 for f'Cell {3*f+3:02d} Voltage' b''
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@118: Processing data_type: BigHex2Short for data_name: f'Cell {3*f+3:02d} Voltage', raw_value b''
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@203: Processing format string: 'BigHex2Short(raw_value)'
2024-10-07 07:50:32,417:INFO:protocol_helpers:BigHex2Short@143: Hex encoded value must be 2 bytes long. Was 0 length
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'Reserved', '']
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: Reserved, raw_value b''
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@124: Discarding Reserved:b''
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:decode@496: Processing POSITIONAL type responses
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:decode@523: Got defn ['discard', 1, 'checksum', '']
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@118: Processing data_type: discard for data_name: checksum, raw_value b''
2024-10-07 07:50:32,417:DEBUG:abstractprotocol:process_response@124: Discarding checksum:b''
2024-10-07 07:50:32,418:INFO:device:run_command@116: Decoded response {'_command': 'cellVoltages', '_command_description': 'Cell Voltages Information', 'raw_response': ['{¥\x01\x95\x08\x06\x0cÎ\x0cÐ\x0cÐ\xa0{¥\x01\x95\x08\x01\x0cÑ\x0cÐ\x0cÎ\xa0w¥\x01\x95\x08\x02\x0cÐ\x0cÏ\x0cÐ\xa0x¥\x01\x95\x08\x03\x0cÏ\x0cÐ\x0cÏ\xa0x¥\x01\x95\x08\x04\x0cÐ\x0cÏ\x0cÐ\xa0z¥\x01\x95\x08\x05\x0cÏ\x0cÐ\x0cÏ\xa0z¥\x01\x95\x08\x06\x0cÏ\x0cÐ\x0cÏ\xa0{', ''], 'Cell 01 Voltage': [1.548, 'V'], 'Cell 02 Voltage': [-12.788, 'V'], 'Cell 03 Voltage': [-12.276, 'V'], 'Cell 04 Voltage': [0.268, 'V'], 'Cell 05 Voltage': [-12.02, 'V'], 'Cell 06 Voltage': [-12.276, 'V'], 'Cell 07 Voltage': [0.524, 'V'], 'Cell 08 Voltage': [-12.276, 'V'], 'Cell 09 Voltage': [-12.532, 'V'], 'Cell 10 Voltage': [0.78, 'V'], 'Cell 11 Voltage': [-12.532, 'V'], 'Cell 12 Voltage': [-12.276, 'V'], 'Cell 13 Voltage': [1.036, 'V'], 'Cell 14 Voltage': [-12.276, 'V'], 'Cell 15 Voltage': [-12.532, 'V'], 'Cell 16 Voltage': [1.292, 'V'], 'Cell 17 Voltage': [-12.532, 'V'], 'Cell 18 Voltage': [-12.276, 'V'], 'Cell 19 Voltage': [1.548, 'V'], 'Cell 20 Voltage': [-12.532, 'V'], 'Cell 21 Voltage': [-12.276, 'V'], 'Cell 22 Voltage': [0.0, 'V'], 'Cell 23 Voltage': [0.0, 'V'], 'Cell 24 Voltage': [0.0, 'V']}
2024-10-07 07:50:32,418:DEBUG:__init__:main@443: results: {'_command': 'cellVoltages', '_command_description': 'Cell Voltages Information', 'raw_response': ['{¥\x01\x95\x08\x06\x0cÎ\x0cÐ\x0cÐ\xa0{¥\x01\x95\x08\x01\x0cÑ\x0cÐ\x0cÎ\xa0w¥\x01\x95\x08\x02\x0cÐ\x0cÏ\x0cÐ\xa0x¥\x01\x95\x08\x03\x0cÏ\x0cÐ\x0cÏ\xa0x¥\x01\x95\x08\x04\x0cÐ\x0cÏ\x0cÐ\xa0z¥\x01\x95\x08\x05\x0cÏ\x0cÐ\x0cÏ\xa0z¥\x01\x95\x08\x06\x0cÏ\x0cÐ\x0cÏ\xa0{', ''], 'Cell 01 Voltage': [1.548, 'V'], 'Cell 02 Voltage': [-12.788, 'V'], 'Cell 03 Voltage': [-12.276, 'V'], 'Cell 04 Voltage': [0.268, 'V'], 'Cell 05 Voltage': [-12.02, 'V'], 'Cell 06 Voltage': [-12.276, 'V'], 'Cell 07 Voltage': [0.524, 'V'], 'Cell 08 Voltage': [-12.276, 'V'], 'Cell 09 Voltage': [-12.532, 'V'], 'Cell 10 Voltage': [0.78, 'V'], 'Cell 11 Voltage': [-12.532, 'V'], 'Cell 12 Voltage': [-12.276, 'V'], 'Cell 13 Voltage': [1.036, 'V'], 'Cell 14 Voltage': [-12.276, 'V'], 'Cell 15 Voltage': [-12.532, 'V'], 'Cell 16 Voltage': [1.292, 'V'], 'Cell 17 Voltage': [-12.532, 'V'], 'Cell 18 Voltage': [-12.276, 'V'], 'Cell 19 Voltage': [1.548, 'V'], 'Cell 20 Voltage': [-12.532, 'V'], 'Cell 21 Voltage': [-12.276, 'V'], 'Cell 22 Voltage': [0.0, 'V'], 'Cell 23 Voltage': [0.0, 'V'], 'Cell 24 Voltage': [0.0, 'V']}
2024-10-07 07:50:32,418:INFO:__init__:get_output@40: attempting to create output processor: screen
2024-10-07 07:50:32,419:DEBUG:screen:__init__@17: processor.screen __init__ args: (), kwargs: {}
2024-10-07 07:50:32,419:DEBUG:__init__:main@449: Using output filter: None
2024-10-07 07:50:32,419:INFO:screen:output@23: Using output processor: screen
2024-10-07 07:50:32,420:DEBUG:screen:output@24: kwargs {'data': {'_command': 'cellVoltages', '_command_description': 'Cell Voltages Information', 'raw_response': ['{¥\x01\x95\x08\x06\x0cÎ\x0cÐ\x0cÐ\xa0{¥\x01\x95\x08\x01\x0cÑ\x0cÐ\x0cÎ\xa0w¥\x01\x95\x08\x02\x0cÐ\x0cÏ\x0cÐ\xa0x¥\x01\x95\x08\x03\x0cÏ\x0cÐ\x0cÏ\xa0x¥\x01\x95\x08\x04\x0cÐ\x0cÏ\x0cÐ\xa0z¥\x01\x95\x08\x05\x0cÏ\x0cÐ\x0cÏ\xa0z¥\x01\x95\x08\x06\x0cÏ\x0cÐ\x0cÏ\xa0{', ''], 'Cell 01 Voltage': [1.548, 'V'], 'Cell 02 Voltage': [-12.788, 'V'], 'Cell 03 Voltage': [-12.276, 'V'], 'Cell 04 Voltage': [0.268, 'V'], 'Cell 05 Voltage': [-12.02, 'V'], 'Cell 06 Voltage': [-12.276, 'V'], 'Cell 07 Voltage': [0.524, 'V'], 'Cell 08 Voltage': [-12.276, 'V'], 'Cell 09 Voltage': [-12.532, 'V'], 'Cell 10 Voltage': [0.78, 'V'], 'Cell 11 Voltage': [-12.532, 'V'], 'Cell 12 Voltage': [-12.276, 'V'], 'Cell 13 Voltage': [1.036, 'V'], 'Cell 14 Voltage': [-12.276, 'V'], 'Cell 15 Voltage': [-12.532, 'V'], 'Cell 16 Voltage': [1.292, 'V'], 'Cell 17 Voltage': [-12.532, 'V'], 'Cell 18 Voltage': [-12.276, 'V'], 'Cell 19 Voltage': [1.548, 'V'], 'Cell 20 Voltage': [-12.532, 'V'], 'Cell 21 Voltage': [-12.276, 'V'], 'Cell 22 Voltage': [0.0, 'V'], 'Cell 23 Voltage': [0.0, 'V'], 'Cell 24 Voltage': [0.0, 'V']}, 'tag': 'cellVoltages', 'name': 'DalyBMS', 'mqtt_broker': <mppsolar.libs.mqttbrokerc.MqttBroker object at 0x7f8d379b10>, 'udp_port': 5555, 'postgres_url': None, 'mongo_url': None, 'mongo_db': 'mppsolar', 'push_url': 'http://localhost:9091/metrics/job/pushgateway', 'prom_output_dir': '/var/lib/node_exporter', 'mqtt_topic': None, 'filter': None, 'excl_filter': None, 'keep_case': False}
2024-10-07 07:50:32,420:DEBUG:screen:output@68: displayData: {'cell_01_voltage': [1.548, 'V'], 'cell_02_voltage': [-12.788, 'V'], 'cell_03_voltage': [-12.276, 'V'], 'cell_04_voltage': [0.268, 'V'], 'cell_05_voltage': [-12.02, 'V'], 'cell_06_voltage': [-12.276, 'V'], 'cell_07_voltage': [0.524, 'V'], 'cell_08_voltage': [-12.276, 'V'], 'cell_09_voltage': [-12.532, 'V'], 'cell_10_voltage': [0.78, 'V'], 'cell_11_voltage': [-12.532, 'V'], 'cell_12_voltage': [-12.276, 'V'], 'cell_13_voltage': [1.036, 'V'], 'cell_14_voltage': [-12.276, 'V'], 'cell_15_voltage': [-12.532, 'V'], 'cell_16_voltage': [1.292, 'V'], 'cell_17_voltage': [-12.532, 'V'], 'cell_18_voltage': [-12.276, 'V'], 'cell_19_voltage': [1.548, 'V'], 'cell_20_voltage': [-12.532, 'V'], 'cell_21_voltage': [-12.276, 'V'], 'cell_22_voltage': [0.0, 'V'], 'cell_23_voltage': [0.0, 'V'], 'cell_24_voltage': [0.0, 'V']}
Command: cellVoltages - Cell Voltages Information
--------------------------------------------------------------------------------
Parameter       Value          Unit
cell_01_voltage 1.548          V
cell_02_voltage -12.788        V
cell_03_voltage -12.276        V
cell_04_voltage 0.268          V
cell_05_voltage -12.02         V
cell_06_voltage -12.276        V
cell_07_voltage 0.524          V
cell_08_voltage -12.276        V
cell_09_voltage -12.532        V
cell_10_voltage 0.78           V
cell_11_voltage -12.532        V
cell_12_voltage -12.276        V
cell_13_voltage 1.036          V
cell_14_voltage -12.276        V
cell_15_voltage -12.532        V
cell_16_voltage 1.292          V
cell_17_voltage -12.532        V
cell_18_voltage -12.276        V
cell_19_voltage 1.548          V
cell_20_voltage -12.532        V
cell_21_voltage -12.276        V
cell_22_voltage 0.0            V
cell_23_voltage 0.0            V
cell_24_voltage 0.0            V
--------------------------------------------------------------------------------

2024-10-07 07:50:32,420:DEBUG:__init__:main@476: Not daemon, so not looping

Notes

This is the serial response, broken down in chunks:

{\
xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\
xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\
xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\
xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\
xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\
xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\
xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{

Based on the frame_number (the fifth byte) it looks like two readings where the first one is cut off right before the 6th chunk.

Relevant dalyserialio logs:

2024-10-07 07:50:31,836:DEBUG:dalyserialio:send_and_receive@32: bytes waiting 92
2024-10-07 07:50:32,336:DEBUG:dalyserialio:send_and_receive@32: bytes waiting 0

Here's another example, same command:

                        \xd4\x0c\xd3\x0c\xd4\x82g
\xa5\x01\x95\x08\x04\x0c\xd3\x0c\xd4\x0c\xd3\x82g
\xa5\x01\x95\x08\x05\x0c\xd4\x0c\xd3\x0c\xd4\x82i
\xa5\x01\x95\x08\x06\x0c\xd2\x0c\xd3\x0c\xd4\x82h
\xa5\x01\x95\x08\x01\x0c\xd5\x0c\xd4\x0c\xd3\x82f
\xa5\x01\x95\x08\x02\x0c\xd4\x0c\xd3\x0c\xd4\x82f
\xa5\x01\x95\x08\x03\x0c\xd3\x0c\xd4\x0c\xd3\x82f
\xa5\x01\x95\x08\x04\x0c\xd4\x0c\xd3\x0c\xd4\x82h
\xa5\x01\x95\x08\x05\x0c\xd3\x0c\xd4\x0c\xd3\x82h
\xa5\x01\x95\x08\x06\x0c\xd2\x0c\xd4\x0c\xd3\x82h
\xa5\x01\x93\x08\x02\x01\x01\x1f\x00\x01\xa60;
\xa5\x01\x96\x08\x017\x00\x00\x00\x00\x000\xac
\xa5\x01\x94\x08\x10\x01\x00\x00\x00\x00\x0fT\xb6

Here we have more fragmented outputs. There are also chunks from different command_ids (\x93, \x96, \x94).

I observed that the correct readings have exactly 78 bytes (6 * 13). Anything else results in incorrect readings.

Things I've tried

jblance commented 1 month ago

I've got this working in powermon code, I'll see if I can backport to mppsolar (but i might not be able to easily)

➜ /workspaces/powermon (master) $ powermon -C tests/config/ble_daly.yaml -I
2024-10-15 21:27:52,231:INFO:runner:main@108: Power Device Monitoring Utility, version: 1.0.10-dev, python version: 3.11.7
2024-10-15 21:27:52,231:INFO:runner:main@120: Using config file: tests/config/ble_daly.yaml
2024-10-15 21:27:52,233:INFO:runner:main@131: Config validation successful
2024-10-15 21:27:52,233:INFO:runner:main@147: config: {'device': {'name': 'BLE_Advertising', 'serial_number': 'SmartShunt Bat2', 'model': 'SmartShunt 500A/50mV', 'manufacturer': 'Victron', 'port': {'type': 'test', 'protocol': 'DALY', 'response_number': 3}}, 'commands': [{'command': 'cell_voltages', 'outputs': [{'type': 'screen', 'format': {'type': 'table', 'draw_lines': True}}]}], 'loop': 'once', 'debuglevel': 20}
2024-10-15 21:27:52,233:INFO:runner:main@151: MqttBroker DISABLED
2024-10-15 21:27:52,237:INFO:abstractprotocol:check_definitions_count@123: Using protocol:b'DALY' with 6 commands (SOC, cell_voltage_range, temperatures, mosfet, status, cell_voltages)
2024-10-15 21:27:52,237:INFO:runner:main@174: Adding command, config: {'command': 'cell_voltages', 'outputs': [{'type': 'screen', 'format': {'type': 'table', 'draw_lines': True}}]}
2024-10-15 21:27:52,238:INFO:runner:main@176: Device: BLE_Advertising, self.device_info.serial_number='SmartShunt Bat2', self.device_info.model='SmartShunt 500A/50mV', self.device_info.manufacturer='Victron', port: Test port, mqtt_broker: MqttBroker DISABLED, commands:[<powermon.commands.command.Command object at 0x7426300382d0>]
2024-10-15 21:27:52,238:INFO:runner:main@180: Daemon DISABLED
2024-10-15 21:27:52,238:INFO:apicoordinator:from_config@49: No api definition in config
2024-10-15 21:27:52,238:INFO:runner:main@186: ApiCoordinator DISABLED
2024-10-15 21:27:52,238:INFO:device:initialize@153: initializing device
2024-10-15 21:27:52,238:INFO:device:run@196: Running command: Command: self.code='cell_voltages' self.full_command=None, self.command_type='basic',             [_outs='outputs.Screen: outputs the results to the screen as per the formatter supplied'], last_run='Not yet run', next_run='15 Oct 2024 21:27:52', trigger: every 60 loops togo: 0, CommandDefinition: self.code='cell_voltages', self.description='cell_voltages', self.result_type=<ResultType.CONSTRUCT: 8>, reading_definition count: 30, self.command_code='95', self.command_type=<CommandType.SERIAL_READ_UNTIL_DONE: 'serial_read_util_done'>, self.command_data=None self.override=None self.template=None
2024-10-15 21:27:52,239:INFO:daly:get_full_command@297: Using protocol b'DALY' with 6 commands
2024-10-15 21:27:52,239:INFO:testport:send_and_receive@68: Selected response number 3:, b'{\xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{'
2024-10-15 21:27:52,239:INFO:result:decode_responses@105: result.response passed to decode: [('cell_16_voltage', 3278), ('cell_17_voltage', 3280), ('cell_18_voltage', 3280), ('cell_01_voltage', 3281), ('cell_02_voltage', 3280), ('cell_03_voltage', 3278), ('cell_04_voltage', 3280), ('cell_05_voltage', 3279), ('cell_06_voltage', 3280), ('cell_07_voltage', 3279), ('cell_08_voltage', 3280), ('cell_09_voltage', 3279), ('cell_10_voltage', 3280), ('cell_11_voltage', 3279), ('cell_12_voltage', 3280), ('cell_13_voltage', 3279), ('cell_14_voltage', 3280), ('cell_15_voltage', 3279), ('cell_16_voltage', 3279), ('cell_17_voltage', 3280), ('cell_18_voltage', 3279)], result_type ResultType.CONSTRUCT
2024-10-15 21:27:52,239:INFO:device:run@200: Got result: Result: self.command.command_definition.description='cell_voltages': self.is_valid=True, self.error=False - self.error_messages=[], self.raw_response=b'{\xa5\x01\x95\x08\x06\x0c\xce\x0c\xd0\x0c\xd0\xa0{\xa5\x01\x95\x08\x01\x0c\xd1\x0c\xd0\x0c\xce\xa0w\xa5\x01\x95\x08\x02\x0c\xd0\x0c\xcf\x0c\xd0\xa0x\xa5\x01\x95\x08\x03\x0c\xcf\x0c\xd0\x0c\xcf\xa0x\xa5\x01\x95\x08\x04\x0c\xd0\x0c\xcf\x0c\xd0\xa0z\xa5\x01\x95\x08\x05\x0c\xcf\x0c\xd0\x0c\xcf\xa0z\xa5\x01\x95\x08\x06\x0c\xcf\x0c\xd0\x0c\xcf\xa0{', Reading: self.data_name='cell_16_voltage', self.data_value=3.278, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_17_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_18_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_01_voltage', self.data_value=3.281, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_02_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_03_voltage', self.data_value=3.278, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_04_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_05_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_06_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_07_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_08_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_09_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_10_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_11_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_12_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_13_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_14_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_15_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_16_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_17_voltage', self.data_value=3.28, self.data_unit='V', self.is_valid=True,Reading: self.data_name='cell_18_voltage', self.data_value=3.279, self.data_unit='V', self.is_valid=True
2024-10-15 21:27:52,240:INFO:screen:process@19: Using output sender: screen
2024-10-15 21:27:52,240:INFO:table:format@29: Using output formatter: table
╔════════════════════════════════════════╗
║ Command: cell_voltages - cell_voltages ║
╠═════════════════╤═══════╤══════════════╣
║ Parameter       │ Value │ Unit         ║
╟─────────────────┼───────┼──────────────╢
║ cell_16_voltage │ 3.278 │ V            ║
║ cell_17_voltage │ 3.28  │ V            ║
║ cell_18_voltage │ 3.28  │ V            ║
║ cell_01_voltage │ 3.281 │ V            ║
║ cell_02_voltage │ 3.28  │ V            ║
║ cell_03_voltage │ 3.278 │ V            ║
║ cell_04_voltage │ 3.28  │ V            ║
║ cell_05_voltage │ 3.279 │ V            ║
║ cell_06_voltage │ 3.28  │ V            ║
║ cell_07_voltage │ 3.279 │ V            ║
║ cell_08_voltage │ 3.28  │ V            ║
║ cell_09_voltage │ 3.279 │ V            ║
║ cell_10_voltage │ 3.28  │ V            ║
║ cell_11_voltage │ 3.279 │ V            ║
║ cell_12_voltage │ 3.28  │ V            ║
║ cell_13_voltage │ 3.279 │ V            ║
║ cell_14_voltage │ 3.28  │ V            ║
║ cell_15_voltage │ 3.279 │ V            ║
║ cell_16_voltage │ 3.279 │ V            ║
║ cell_17_voltage │ 3.28  │ V            ║
║ cell_18_voltage │ 3.279 │ V            ║
╚═════════════════╧═══════╧══════════════╝
2024-10-15 21:27:52,240:INFO:device:finalize@157: finalizing device
klvbdmh commented 1 month ago

When I have some free time over the weekend, I'll check out powermon. I like the table formatter.

Offtopic, but I see you're using construct for parsing. That's awesome, I used it too when I was troubleshooting my issue (and on some other projects).

klvbdmh commented 1 month ago

I ran the powermon overnight and reported voltage values were within the norm. It works well so far. Thank you.

I had one hiccup with the abnormal values elsewhere (soc, current), but I don't have any debug log. I'll see if I can reproduce it - anyway, that's for another repo.

jblance commented 1 month ago

good news it would be good to see the debug for other abnormal value - as it shouldnt pass crc if the data is corrupt...

klvbdmh commented 1 month ago

I'm not sure exactly what caused it. I noticed the powermon was sending mqtt data (confirmed with MQTT Explorer), but Home Assistant wasn't updating the sensors for a few minutes. I restarted the services and there was a single update with abnormal values - but not all of them. Interestingly, individual cell voltages, capacity_ah, and cycles were fine.

It hasn't happened again so far, so it might be tricky to catch it again with debug. Maybe I can edit my install files so it writes a detailed log if SOC is over 100%.