Hello experts
Has anyone managed to address the V3 yet? Here I have a log from the communication between the Seplos BMS software and a V3 BMS. I would like to connect this in Node Red with RS485 Serial but at the moment I don't understand what I have to send so that the BMS answers me.
I guess you were looking for text. The v3 talks modbus RTU. So you will ahve to find some block for nodered that can decode modbus.
In python this works to talk to seplos v3
# --------------------------------------------------------------------------- #
# import the various client implementations
# --------------------------------------------------------------------------- #
import pymodbus.client as ModbusClient
from pymodbus import (ExceptionResponse, Framer, ModbusException,
pymodbus_apply_logging_config)
client = ModbusClient.ModbusSerialClient(
'COM3',
framer='rtu',
# timeout=10,
# retries=3,
# retry_on_empty=False,
# strict=True,
baudrate=19200,
bytesize=8,
parity="N",
stopbits=1,
# handle_local_echo=False,
)
print("connect to server")
client.connect()
print("get and verify data")
try:
rr = client.read_input_registers(0x1700, 0x33, slave=0)
print ("client.read_input_registers(0x1700, 0x33, slave=0):")
print(rr)
rr = client.read_input_registers(0x1301, 0x01, slave=0)
print ("client.read_input_registers(0x1301, 0x01, slave=0):")
print(rr)
rr = client.read_input_registers(0x1000, 0x12, slave=0)
print ("client.read_input_registers(0x1000, 0x12, slave=0):")
print(rr)
rr = client.read_input_registers(0x1100, 0x1a, slave=0)
print ("client.read_input_registers(0x1100, 0x1a, slave=0):")
print(rr)
rr = client.read_input_registers(0x1300, 0x6a, slave=0)
print ("client.read_input_registers(0x1300, 0x6a, slave=0):")
print(rr)
rr = client.read_input_registers(0x1500, 0x04, slave=0)
print ("client.read_input_registers(0x1500, 0x04, slave=0):")
print(rr)
rr = client.read_coils(0x1200, 0x90, slave=0)
print ("client.read_coils(0x1200, 0x90, slave=0):")
print(rr)
rr = client.read_coils(0x1400, 0x50, slave=0)
print ("client.read_coils(0x1400, 0x50, slave=0):")
print(rr)
except ModbusException as exc:
print(f"Received ModbusException({exc}) from library")
client.close()
return
if rr.isError():
print(f"Received Modbus library error({rr})")
client.close()
return
if isinstance(rr, ExceptionResponse):
print(f"Received Modbus library exception ({rr})")
# THIS IS NOT A PYTHON EXCEPTION, but a valid modbus message
client.close()
print("close connection")
client.close()