Renogy DCC50S Display

For those who are still interested in reading informations from Renogys Smart Battery with RS485 Modbus. Yesterday I got the Modbus Mapping for the Smart Battery from Renogy.
 

Attachments

  • Lithium Iron Battery BMS Modbus Protocol V1.7.zh-CN.en(1).pdf
    421.8 KB · Views: 96
RJ-45 pin 7 says O/F for modbus, what does this mean? I would like to get 12V power from an RJ-45 cable.
 
Last edited:
Is there a PDF showing the modbus registers for the dcc50s ?
Bear in mind that it's 2 years since Renogy gave this to me, it may not be 100% correct.
 

Attachments

  • MODBUS PROTOCAL DATA FOR DC DC battery charger with MPPT.xlsx
    19.8 KB · Views: 61
YAML:
modbus:
  - name: renogy_charge_controller
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    port: /dev/ttyUSB0
    stopbits: 2
    parity: N
    timeout: 1
    sensors:

    - name: errorstatehigh
      unique_id: errorstatehigh
      address: 290
      input_type: holding
      slave: 1
      
    - name: errorstatelow
      unique_id: errorstatelow
      address: 289
      input_type: holding
      slave: 1

    - name: chargeState
      unique_id: chargeState_sensor
      address: 288
      input_type: holding
      slave: 1

    - name: workingDays
      unique_id: working_days
      address: 277
      input_type: holding
      slave: 1
      

    - name: totalPower
      unique_id: totalPower_acc
      address: 275
      input_type: holding
      slave: 1
      unit_of_measurement: Wh
      device_class: energy
      state_class: measurement
      scan_interval: 5
      scale: 0.001
      precision: 3


    - name: solWatts
      unique_id: solWatts_sensor
      address: 265
      input_type: holding
      slave: 1
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      scan_interval: 5

    - name: solAmps
      unique_id: solAmps_sensor
      address: 264
      input_type: holding
      slave: 1
      unit_of_measurement: A
      device_class: current
      state_class: measurement
      scale: 0.01
      precision: 1
      scan_interval: 5
      
    - name: solVoltage
      unique_id: solVoltage_sensor
      address: 263
      input_type: holding
      slave: 1
      unit_of_measurement: V
      device_class: voltage
      state_class: measurement
      scan_interval: 5
      scale: 0.1
      precision: 1

    - name: altWatts
      unique_id: altWatts_sensor
      address: 262
      input_type: holding
      slave: 1
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      scan_interval: 5
      
    - name: altAmps
      unique_id: altAmps_sensor
      address: 261
      input_type: holding
      slave: 1
      unit_of_measurement: A
      device_class: current
      state_class: measurement
      scan_interval: 5
      precision: 2
      scale: 0.01
      
    - name: altVolt
      unique_id: altVolt_sensor
      address: 260
      input_type: holding
      slave: 1
      unit_of_measurement: V
      device_class: voltage
      state_class: measurement
      scan_interval: 5
      precision: 1
      scale: 0.1

    - name: auxTemp
      unique_id: auxTemp_sensor
      address: 259
      input_type: holding
      slave: 1
      unit_of_measurement: '°C'
      device_class: temperature
      state_class: measurement
      scan_interval: 5

    - name: maxAmps
      unique_id: maxAmps_sensor
      address: 258
      input_type: holding
      slave: 1
      unit_of_measurement: A
      device_class: current
      state_class: measurement
      scale: 0.01
      precision: 1
      scan_interval: 5
      
    - name: auxVolt
      unique_id: auxVolt_sensor
      address: 257
      input_type: holding
      slave: 1
      unit_of_measurement: V
      device_class: battery
      state_class: measurement
      scale: 0.1
      precision: 1

    - name: auxSoc
      unique_id: auxSoc_sensor
      address: 256
      input_type: holding
      slave: 1
      unit_of_measurement: '%'
      device_class: battery
      state_class: measurement

That will work in home assistant using https://www.amazon.co.uk/DSD-TECH-S...pd_rd_i=B078X5H8H7&psc=1&ref_=pd_bap_d_rp_1_t
 
Ooh. Thanks. I've got a python script pulling data from my dcc50s but it needs an AT command to wake it up!
 
Not a T6 owner but I've just installed the DCC30s and have decided it's now essential :p to connect it to Home Assistant, maybe along with OBD data and GPS . Thanks all, for the head start!

I spent half a day trying to figure out why I couldn't get a response from the DCC30s, turns out the clue was above from @busbus. So I hope this helps someone. Even if you only have one device, once you connect via the DC Home app and BT-2, it will change the slave ID. No idea how it decides but in my case it was 96.

Now I can poll for data, although my mappings don't seem to match up with the ones supplied by @ma33er for the DCC50s so a little more investigation to go.
 
Hi ,
I know, confirmed by renogy support,
id modbus is 1 initially, once you connect with the BT-2, BT-2 change the modbus id to 96.
 
Beware that the DCC30 might not respond without a magic wake up message on the RS483 bus ... my DCC50 doesn't!

My current (python) code is here; GitHub - opless/renogy-solar-dcc50-100ah-battery

I throw it through MQTT and have a bunch of sensors in the YML to get the values.

I'd spam them here, but I'm still making my battery box.

HTH!
nice work! I imagined having a pip package where you specify your device and it caters for all (DCC50S, DCC30, Battery) but just havent had the time.
 
Beware that the DCC30 might not respond without a magic wake up message on the RS483 bus ... my DCC50 doesn't!

My current (python) code is here; GitHub - opless/renogy-solar-dcc50-100ah-battery

I throw it through MQTT and have a bunch of sensors in the YML to get the values.

I'd spam them here, but I'm still making my battery box.

HTH!

Interesting about the magic wake up message! I've got one of the Bluetooth batteries, and I noticed the app sends a reset command when it first connects. Since it's Bluetooth and to a different service than the RX/TX I wasn't sure what it was for, but now I assume it sends a break signal on the RS485 (since internally there just seems to be a BLE -> RS485 module that Renogy buys).

If anyone is interested, I just finally got around to converting my messy Arduino C++ to Python that runs on a Raspberry Pi. GitHub - mackmgg/VanScripts/Python/battery.py
 
I came across this thread whilst googling for Renogy + Modbus
Thank you to all those who have shared their work & code! as a result I've cobbled together a ESP8266 & MAX 485 and used Arduino to read the registers from my DCC50S and output the variables dynamically to a webserver. It still needs plenty of work but it's mostly functional.

I have come across a few odditites I can't get my head around though... maybe those of you who have far more coding skill and those been playing with this for longer may have some ideas?

As per the screenshot Register 0109 (Solar Charging Power) always shows an input power when the alternator is running, it's actually slightly higher than Alternator Charging Power (0106) value ---- I have no solar panels connected! Solar Voltage and Solar Current as expected remain at 0. I think this may explain? why for the last few months I have been unable to get to the bottom of a sudden charging issue whereby the DCC50S no longer charges at 50amps from the alternator and instead maxes out at near 15amps (is it thinking there are solar panels connected hence the 15amp limit?) a full reset has not helped.

There are other issues I have come across but until I get to the bottom of this one their not important.

Does anyone have any ideas?

RenogyModbus.jpg

RenogyModbus2.jpg

P.S. I will happily upload the code to Github and post here when it's far more complete just incase it's of any use to anyone else in future! I'm no coder though... it'll be rough and ready but maybe a start for those going down a micro controller / Arduino route rather than Rpi / Python route.
 
P.S. I will happily upload the code to Github and post here when it's far more complete just incase it's of any use to anyone else in future! I'm no coder though... it'll be rough and ready but maybe a start for those going down a micro controller / Arduino route rather than Rpi / Python route.

Any chance you can upload the code to GitHub? I'm trying to get my DCC50S to work with an esp32.
 
Wow. I guess this will be extremely useful when complete. It would need to be plug and play for people like me, with no knowledge of programming etc.
 
Any chance you can upload the code to GitHub? I'm trying to get my DCC50S to work with an esp32.
Yes that was / is still my plan when it's a bit more complete...

tbh having used it in the above, very rough, buggy, unfinished state it did it's job and I confirmed my suspicions that I had there definitely was an issue with my DCC50S.

It's literally only the last week I have revisited the project with a view to getting it to a more finished state, with my efforts, so far being spent on the hardware... I had hoped to power the project directly from the RS485 port but the stated 250mA max current supplied by the DCC50S isn't enough as is and makes for very unstable running! I've reached the end of my electrical ability and came to the conclusion that it's just too easy to use a USB cable!

Code wise it needs much more work... the basic (more useful) registers are read correctly but others definitely are not! I am working on it but I'm no coder so progress is slow!
 
Back
Top