Answered

Renogy Rover and 8266

Just installed a couple of panels on my RV and wanted to connect the Rover to my data system through an esp8266.  I will be making a cable based on info found in this forum and was thinking of direct connecting it to the esp.  They are reported to be 5V tolerant but I read that TX is at 5.6V.  Has anyone tried to direct connect Rover TX/RX/GND to a 8266 (or arduino)?

Thanks.  Mike.

  • That would be a big NO.  I finally got a cable and confirmed that it is true RS232 coming out of the Rover.  For instance, I measure -5.7 volts on TX which seems to indicate a use of +/- voltages.  A RS232 to ttl converter is required

  • For anyone looking for an easy way to transfer data from the Rover (and I suspect similar hardware) using MQTT take a look at Tasmota and the associated Smart Meter Modbus extension..  All you need is the 232 to ttl converter and a esp8266 based controller - I used a Wemos Mini.  Everything else is available at no cost.

  • @michael Ramsey


    How did you get it all working? do you have a code repo somewhere? trying to replace the raspi that is reading my rover with an esp8266 and mqtt and i've ordered the parts but i figure the code is going to be a bit of a pain.

  • It worked very well but quit after a week - no idea why but I am awaiting another RS232 to ttl converter to see if that is the problem.  It really could not be easier to do - just look at https://tasmota.github.io/docs/Smart-Meter-Interface/#modbus-devices.

    Here is one the first scripts I used (it may not be exact but it will get you going):

    >D

    >B

    =>sensor53 r

    >M 1


    +1,3,m,0,9600,MODBUS,1,1,01030107,01030101
    1,010304UUuuxxxx@i0:10,Voltage,V,sv,2
    1,010304xxxxUUuu@i0:100,Current,A,sc,3
    1,010304UUuuxxxx@i2:10,Bat Voltage,V,svb,2
    1,010304xxxxUUuu@i3:100,Bat Current,A,scb,2
    #

    This returned the voltage and current of the panels and output.

    It is very impressive just how easy this is to use.  If you are new to Tasmota it may take a bit to get up to speed but there are plenty of guides available.  Good luck.  Let me know how you make out!

  • Awesome thank you so much, I should have all the parts in by monday but my rover 40 is getting replaced for an issue with battery voltage readings, so not sure when ill be able to test but i'll let you know how things go!

  • Good news - the new ttl converter did the trick and we are back in business,  Don't know about your application - mine is in an RV - but you may be interested in other uses of Tasmota.  I use it extensively to monitor DC power (PZEM-017), AC power (PZEM-004) as well as several channels of temperature and other data.  Everything is stored in a database managed with OpenHAB running on an old Chromebook (GalliumOS-linux).  Take a look - it is just amazing how versatile these little 8266 devices are.

  • I'm running an old chevy express van conversion. I'm linking mine up to home assistant running on my servers at home. going to try and eventually tie into the shunt i have so i can monitor actual battery voltage vs what the charge controller is reporting. I'll have to take a look at those pzem devices if that doesnt work

  • Alright I got my charge controller back today and hooked up the serial converter. Currently I don't think it is working, I don't get any readout on the tasmota webgui. going to try the other converter I got but i'm not sure how to debug because i'm not seeing any output.

  • I had similar problems,  It either worked or it didn't.  The only thing I did was to reverse RX/TX - just in case.  And I did not have any luck finding any useful way to debug the system.  You can turn logging to 'more debug'  and check the console for any unusual messages but I never saw anything useful.  Good luck.

  • If it helps, here are my connections - Rover from the right to DB9  1 - 3. 2 - 2, 3 - 5. Serial to wemos mini  VCC - 3.3V, GND - G,  TXD - TX, RXD - RX. Wemos to power 5V - 5V, G - G using a 12V to 5V converter.

    I assume that you can see and change the script.  

  • I think that's how I have it wired up, I'll have to double-check today. I was able to hook up the serial converter to another serial cable and used serial send to send a message that was received on the other side, but I wasn't able to receive any messages. Not sure if I would need to do anything specific to receive them on rasmota but I figured they should just show up in console. So I'm thinking my serial converter isn't working on the receive side and I ordered some different ones.
  • I've got everything setup now and verified the serial converters are working, still not getting any data. reading through the rover modbus doc, i don't quite understand where the registers you have in the command come from? I'm new to modbus  and i dont quite understand the formatting in the script, i understand to read battery voltage i need to read 01030101 and is see that referenced on the first line of the modbus portion but what do the following lines signify? I can't find out what the U,u, and x refer too, is that something for the expected response formatting?(high byte/low byte/crc?)


    1,010304UUuuxxxx@i0:10,Voltage,V,sv,2

  • THe registers come from the Renogy Rover MODBUS Protocol map.  Take a look at https://github.com/wildmountainfarms/solarthing/raw/master/other/solar/resources/renogy_rover_modbus.doc - it explains everything. It is important to remember that the program always reads 2 sequential registers.  It does this to work with many instruments that return 32 bits (2 MODBUS registers) for some data elements.  The map states that register 0101 contains the battery voltage as a 16 bits or 2 bytes  unsigned integer,  The UU refers to the most significant byte and uu to the least.  It is essentially pulling the data out of the 32 bit response from the 2 registers.  You use xxxx to signify bits that don't matter.  So the first 2 bytes of the response belong to register 0101 (voltage) read as most significant byte first.  THe second 2 bytes don't matter (xxxx) as they refer to register 0102 (charging current to battery) The next line is used to pull the data from register 0102 that is read at the same time.  In this case we only are interested in the last 2 bytes thus the first 2 are don't care xxxx.

    The @i0;10 refers to the scaling of the data - so divide the first element returned by 10.  And as we are using the second element of the same response the index remains 0 but it is divided by 100. 


    I suggest you start with just one register.  I got everything from the Tasmota doc.  I don't have it here but I will send you the exact script that is working for me.  I hope that helps.....

  • I see I got confused with the registers - 0107 - 0108 > solar panel voltage and current,  0101, 0102 > battery voltage and charging current.  I'm a little confused about the scaling myself but I can confirm that it works fine,....Mike


    Remember that each read is always 2 registers,..

Login or Signup to post a comment