Renogy DCC50S Display

I don't know anything about the battery, but of course if it has modbusRTU and it is (or can be) 9600/8/N/2, and its' node number can be changed (I guess the default will be 1, same as the DCC50S) then it can be a slave.

I got the modbus map directly from renogy here; supportuk@renogy.com
So you just emailed and asked for it? And they gave it? If they did then that's very cool.

Edit:
Have just emailed to see if they give up the mappings for the battery
 
Last edited:
Support came back and said because theres the potential to change voltages on the BMS that they wouldnt be willing to give out the mappings. Which to be honest we can get the stuff we need from the charge controller like voltages and SoC.

Also I asked when the BT-2 and Smart Lithium display were in the UK and they said they were due to be shipped August! So we'll have to keep an eye out on the website.
 
I can see their point. I was a little surprised that they gave out the DCC50S map.

If you had the Smart Lithium Display it would be easy enough to reverse engineer it and find the map yourself. I guess you've had this thought already?
 
Yes I was surprised when you said you'd got it from them! And yeh had this thought but I wonder how much extra would be get considering we get most of the stats from the Charge Controller (voltage, amps and SOC) I guess we'd get fault codes
 
Thought Id send a cheeky taster of what I've been doing. Have got a pretty basic Python driver to send a few stats to an MQTT server. These then get picked up Telegraf which imports the time-series data into InfluxDB. I can then query the DB via Grafana to give some very nice looking graphs. I need to clean up the Python and add in options for all the variables before I release any code but here's my Grafana dashboard. I need to sort the altAmps out as its incorrect and I need a way to show direction (charging starter or pulling from Alt).
1593181215377.png
 
this is great!

I'm about 1/3 of the way through my build but this will be going in for sure! I've already got a travel router with hotspot ready to go once I get all my electrics sorted over the next couple of weeks. This has made my day for the Renogy DCC50S! This thing keeps getting better and better!

I was planning on having a van server on probably a raspberry pi possibly running some docker containers. Most probably some sort of media function but most definitely graphana to see some of these stats!

I'll try and chip in when I can with some guides!
Hey, This is very impressive. I’m considering/planning something similar, have you looked at Home Assistant? I’ve had great fun with it and it’s integrated ESPHome For all ESP8266/ESP32 based devices and I think this is the way for me to go. Hassio for RPi 4 uses docker and comes with my favourite, Node RED. Plus InfluxDB, Kapacitor, Grafana, MotionEye, etc. Invest in an industrial uSD card, the read/write of a developed system is too much for most SD cards, mine lasted 6 months, I caned it during lockdown was controlling house and garden. Now I’m considering ‘Motorhome Assistant’ good look with your project, I am interested in your approach, and I’d like to see it, if I may? Matt
 
I have looked at Home Assistant and looks very featureful but not quite what I want/need/looking for. NodeRED however is amazing and I know they work very well together. Yeh the SD cards weren't made for the applications that the Pi's are finding themselves in! I've bought a USB SSD drive, my thinking was no mechanical platter to get bashed about as I'm driving along! The link to the repo for the python driver is below, its a little raw and I'm in the process of having an ansible playbook that would standup docker containers on the raspberry pi. When it's a little closer I'll drop a post on these forums.

 
Great thanks
I am now looking at the RS485 hat for the PiZeroW. What is your preferred hardware interface?
 
I just picked up a super cheap USB modbus interface from eBay. I picked up one that had 4 block terminals. It was only £3 so most probably a lot cheaper than a hat!
 
Boopzz, I just got my modbus USB stick in for my rpi4 and making the cable tonight. I have the BT-2 and bluetooth hub from Renogy already, and have my paralleled bank of 100Ah smart lifepo4's connected up to an RMS-LFPS. My dcc50s is reporting stats through the BT-2+bluetooth hub, but it appears that the RMS-LFPS gives the user error codes, ability to "shelf mode" the entire bank, etc...

I'd like to be able to get all stats from both the batt bank that the RMS-LFPS is getting as well as the charging stats from the dcc50s into the rpi, and programatically sending/bringing the bank into/out of shelf mode remotely would be pretty damn cool.

Can I help contribute or debug anything for you with the equipment that I have? My "day job" involves me writing ansible scripts to stand up kubernetes infrastructure, so maybe I can help in some form or fashion.

This is great work, BTW. I am not a T6 enthusiast like you all, but have built a DC fridge/freezer, LTE Booster, LTE router, Ubiquiti Nano AP, rpi4, 1000W GoPower Industrial Pure Sine inverter, dcc50s, vent/cooling fans, and 2x100Ah renogy smart lifepo4's into a construction job box and mounted it into my truck bed - I need mobile power and food storage that is bearproof during elk hunting and dispersed camping/overlanding and use 500W of portable panels when the truck isn't running. Would love to get my charge and system stats from my phone via a simple webpage running on the rpi4 so I can just check from camp how the system is without physically visiting the truck.

Again, great work and looking forward to hearing from you!
 
Last edited:
Nice! I'm currently migrating a load balancer estate from F5 to AVI and am using Ansible for the lot. Have written a load of playbooks that you can pass a config that contains a service to stand up. I'd like to know more about k8 just because Im a bit of a geek :). Sure dive, I have given you Dev access but you can just fork, and then create a PR to contribute. What is the RMS-LFPS you're referring to?

Also your use case is pretty much the exact reason I wanted to create this :)
 
Good to hear from you boopzz. :)

So I have spent the past two days working ansible and microk8s on my rpi4 and made some good progress. I have your python script working on my rpi with eclipse mosquitto running as a container in a microk8s single node cluster.

I'm gonna be really pissed off if Renogy keeps denying requests for the smart LiFePO4 battery modbus mappings. :mad: I have the following complete:

Automated standup of rpi4 based on raspi-imager Ubuntu 20 64-bit image with:
- customization of the rpi using cloud-init (network, passwords, ssh config, etc..)
- ansible scripts which:
- Install microk8s and necessary addons
- programatically configure microk8s for the rpi environment
- install containerized eclipse-mosquitto into microk8s and expose via IP on local LAN

I had to go drop my truck off to have new sway bar end links, ball joints, etc... installed but it should be back in a couple of days and I'll have access to my rpi again.

Until then, I'll work on:
- integration of containerized telegraf, influxdb, and grafana pods in microk8s via ansible
- general massaging of scripts so that user only has one file to edit in the raspi-imager image for IP/network info, passwords, etc... before turning on the rpi4

A few opportunities I see:
- @T6Jay , can you send the excel file for the dcc50s modbus mappings directly to me? I am having a hard time seeing some of the hex and don't really want to guess. :)
- @T6Jay , you mention if you have the smart lithium display you can reverse engineer the modbus mappings for the smart lithium battery. I have it (@boopzz , this is the "RMS-LFPS"). Educate me please! I used mbpoll before I took my truck down and that would seem like a decent way to do it, but how do we map the registers returned from a poller like that into accurate data without the modbus mappings from Renogy? It seems like a guess on alot of data coming from an expensive battery (again why I'm upset with Renogy - spend thousands on their products and they hamstring you).
- @boopzz , let's work on finishing out the main.py with all of the registers listed in the spreadsheet that T6Jay provided. Theres a bunch of opportunity to add mappings to human-readable data (i.e., battery type 4=LiFePO4, etc....) from values that are returned

Ok I gotta go back to work but thanks for responding @boopzz and thanks in advance @T6Jay for your help!
 
Wow. I enjoy mucking around with Pis and arduinos and Blynk automations, but this is way above my pay grade :oops:
 
Well, the plan is to have something so easy to setup that you can just run the script and it should stand everything up for you so that you dont really need to know how!
 
- @TD21 I have the modbus mappings so can get those across, just PM me your email.
- I have asked for the Smart Battery mappings and got refused, so assume they will stick to this. Realistically it shouldnt be too hard with the right kit. We need some kind of device that can sniff the data channels for the RS485. This depends on how the display polls. If it polls everything it could be time consuming, if it polls when the screen is selected then it should be ok. If its the latter you select the field on the display, the sniffer should capture the request address and the reply, you can then input into a spreadsheet what the request, reply and also what the display shows and this should show you the unit. In the modbus mappings for temp for example its a 7 bit register and the 7th bit is the polarity so that throws into a mix some complexity!
- Yes I'd like to complete the python script and turn it into a proper driver with every value available, partly why I tried to keep the repo seperate from a full stack for the van but pull from it
 
@TD21 also great work on standing up a microk8 node! My idea was to spin up seperate docker containers but this seems to work just as well (it also gets me into the k8 world!). Shoot me a link for the repo if you have one?
 
- @T6Jay , can you send the excel file for the dcc50s modbus mappings directly to me? I am having a hard time seeing some of the hex and don't really want to guess. :)
- @T6Jay , you mention if you have the smart lithium display you can reverse engineer the modbus mappings for the smart lithium battery. I have it (@boopzz , this is the "RMS-LFPS"). Educate me please! I used mbpoll before I took my truck down and that would seem like a decent way to do it, but how do we map the registers returned from a poller like that into accurate data without the modbus mappings from Renogy? It seems like a guess on alot of data coming from an expensive battery (again why I'm upset with Renogy - spend thousands on their products and they hamstring you).

If boopzz didn't already send you the DCC50S spreadsheet, send me your email address and I'll help.

On the reverse engineering, what boopzz said makes sense to me; to test my arduino (master) I used a program called 'simply modbus slave', it will show you the entire message frame, and attempt to interpret it. Maybe you can unpick the read requests sent out by the smart lithium display. Additionally, you could try using modbus poll to grab a set of data from the battery, and see how this data correlates with the data on the display. It's gonna be like doing a jigsaw with pieces missing.

For the laptop you'll need a RS485/usb converter, something like this maybe; DSD TECH USB to RS485 RS422 Converter with FTDI FT232 Chip Compatible with Windows 10, 8, 7, XP and Mac OS X: Amazon.co.uk: Computers & Accessories

Good luck!
 
@T6Jay and @boopzz , I got the spreadsheet off of one of Renogy's support forums (probably your post, T6Jay). I've not spent any time on getting data from the dcc50s since we have the spreadsheet and it's simply time necessary to flesh out the driver for that device. I spent a lot of time figuring out the "magic" slave ID changing that the Renogy DC Home app does when you hook up multiple devices (I'm a complete newbie to modbus). Once my batteries and dcc50s all three had different slave devices, I could query them all in one shot (I have the bluetooth hub - my battery bank and dcc50s RS485 connections are plugged into the "secondary" ports along with my homemade RS485 USB<->RJ45 cable for the rpi4, and the BT-2 plugged into the "primary port"). Once I was getting all my stats from DC Home, I knew I was good and simply had to find the proper registers for the batts.

@T6Jay , I'll have to look at simply modbus software this week, it's Windows only so I'll have to spin up a VM. But maybe that is the method for me to capture everything that the Renogy DC Home app is sending across the wire to the battery bank so I can sniff out all the specific register traffic. I've been using mbpoll and some shell scripts I wrote to scan all of the registers on the smart batteries, and with the "help" of comparing values in the Renogy DC Home app on my phone with the output of mbpoll I've at least been able to get individual cell voltage out of the 100aH smart LiFePO4 batts by extending @boopzz Python code:

port=download&id=13tSglabZR1QxX6TMq8Hldy01xQYJ0C5S.jpg

I really don't want to spend the time to reverse engineer these modbus mappings (there's about 120-125 registers I've been able to uncover and I scanned all 65,535 of them), so I'll throw one last request to Renogy onto their forums requesting the actual mapping spreadsheet before I release the register numbers to the community for us to start reverse hacking.

At least this is possible, I was getting a bit frustrated that I would not be able to get the data I wanted from the batteries based on some previous experiences I've read about.


:sleep:
 
@TD21 also great work on standing up a microk8 node! My idea was to spin up seperate docker containers but this seems to work just as well (it also gets me into the k8 world!). Shoot me a link for the repo if you have one?

PM'd you
 
Ok after mucking around with a bunch of different data types and draining/charging my bank while sniffing the batteries, I think I have a minimal set of registers and valid data types coming back. I've emailed Renogy support asking them to release the modbus mappings, or the community can continue to reverse engineer the mappings. We'll see what they say, as this finally gives me 100% shuntless monitoring of my entire setup now that I have this data. Sure would be nice for them to give up the mapping info so we know exactly what we are working with... :thumbsdown:

renogy_modbus.jpg
 
Back
Top