syssi / esphome-pace-bms

ESPHome component to monitor and control a PACE Battery Management System (PACE-BMS) via RS485 (Modbus)
Apache License 2.0
23 stars 6 forks source link

SOK 100ah 48v #35

Closed garylankford8 closed 2 days ago

garylankford8 commented 5 days ago

Works for SOK 100ah 48v server rack with version P16S100A-1B470-4.07 after reversing TX and RX pins from as shown in the example. tx_pin: GPIO17, rx_pin: GPIO16.

syssi commented 4 days ago

Which RS485 protocol did you select? PACE_MODBUS?

garylankford8 commented 4 days ago

Yes, PACE_MODBUS...

So, I seem to be only getting data from the #1 (0x01) of 3 batteries using the RS485 port next to the CAN port. I guess that makes sense given the batteries are networked through the other RS485 ports. To monitor the other 2 batteries, do I need to replicate this system for each, or can I use the network port?

Sorry, old guy here... I can barely follow instructions, much less understand what is happening here!

JFYI, I am also running Solar Assistant from the RS232.

syssi commented 4 days ago

Each battery pack should have a address selected by the dip switches. Please play around with this value at the YAML:

modbus_controller:
  - id: bms0
    # Slave address 0x01
    address: 0x01

Are you able to retrieve data from battery pack two if you use the slave address 0x02 here? If this is the case you can add additional modbus_controller instances to the YAML and additional sensor block.

This is a simple example how to monitor two battery packs:

substitutions:
  name: pace-bms
  bank0: pack1
  bank1: pack2

modbus:
  - id: modbus0
    uart_id: uart_0
    send_wait_time: 200ms

modbus_controller:
  - id: bms0
    # Slave address 0x01
    address: 0x01
    modbus_id: modbus0
    command_throttle: 200ms
    update_interval: 10s
  - id: bms1
    address: 0x02
    modbus_id: modbus0
    command_throttle: 200ms
    update_interval: 10s

sensor:
  - platform: modbus_controller
    modbus_controller_id: bms0
    name: "${bank0} total voltage"
    address: 1
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  - platform: modbus_controller
    modbus_controller_id: bms1
    name: "${bank1} total voltage"
    address: 1
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01
garylankford8 commented 2 days ago

YAML according to your example, I am now monitoring 3 SOK packs using one esp32/RS485 module in Home Assistant under esphome...

Still left to me to learn the complete utility, but all capabilities of pbmstools appear to be available.

I could hardly be more thrilled! Many thanks!

garylankford8 commented 2 days ago

Are you @syssi84 on PayPal?

syssi commented 2 days ago

Yes

syssi commented 2 days ago

Many thanks for your support!