Close
0%
0%

Solar inverter datalogger improvements

Reverse engineering of a wireless datalogger for solar micro inverters.

Public Chat
Similar projects worth following
We recently got two solar panels together with a SG600 micro inverter from all of solar, we also bought their DataBox24G which communicates with the inverter over 2.4Ghz. When connected to a computer running their software NETMS you can monitor and log data like power generation, in- and output voltages and currents. The thing that I didn't like about this setup was that the software needs to be running all the time in order for it to log data.
The idea is to either reverse engineer the communication between the data box and the computer, in order to make my own software I can run on a raspberry pi inside a docker container in combination with an actual database like influxDB
OR create my own device using the the same wireless module found inside the data box and have it either send the data over wifi to the raspberry pi or log it onto an SD card maybe even an esp32 with its own webserver to monitor the data and current status.

I haven't done a ton of so if you have any ideas/improvements I always love to learn and improve.

Downloads of the datasheets for the inverter and databox as well as the software used to control it can be found here.

Software

When plugging in to the computer the data box shows up as a "Prolific USB-to-Serail Comm Port" with a baud rate of 9600.

I have tried various programs but haven't found something to listen to the serial communication between the data box and the computer without blocking its own program NETMS to still talk to it.

The next step I will try is to make a cable with the data lines exposed so I can use a logic analyzer to listen in.
Or maybe someone else knows a better software?

Hardware

The hardware is quite simple and only consists of a single PCB with a pic16f1947 microcontroller and a LC12S off the shelf 2.4Ghz wireless module. The external antenna is only necessary with the case on or for greater distances.

Translated Datasheet LC12S

Some more useful links about the LC12S module:

https://www.iot-rf.com/2.4g-uart-wireless-module-bk2461.html
https://forum.arduino.cc/t/lc12s-explained/695700/3
https://www.satistronics.com/shop/product/180300-lc12s-uart-wireless-serial-transparent-transmition-128-channel-module-9312
http://arduinolab.pw/index.php/2016/11/13/radiomoduli-na-24ggc-c-uart-interfejsom-lc12s/
http://user.cavenet.com/jgurley/lc12s/
https://www.pcbway.com/project/shareproject/LC12S_wireless_transceiver_module.html

I have already tied into the communication between microcontroller and wireless module and have successfully decoded the signal transmitted by the databox in order to get a response from a specific inverter. The inverter is selected by an id written on its backside. This is also the id entered in the software NETMS to add a new inverter. Check out the decoded Signals on the first project log.

I have successfully decoded most of the signals and managed to send the data to a database as well as visualize it with influxdb v2 build in dashboard. The next step for me is to package the hardware into a neat little box maybe even with a custom pcb and then I'm done. 

I was also thinking about packaging everything into a single box, either with a rpi zero w that is doing the communication with the transceiver,  db and data visualization on some web interface 

OR

add a SD card to the esp have it store all the data on there and host a lightweight web interface displaying the current values and a short history. 

Please give me feedback about what you would like to see or even use in your own setup.

  • Cracked the signal

    Robin Dorst10/17/2022 at 13:29 0 comments

    I managed to decode the signal. The main problem was, I had some of the logic analyzers settings wrong and the signal got inverted. But the lc12s transceivers I ordered finally arrived and I was just able to sniff both the signal from the data box and the inverter with it.

    Normally the lc12s can be configured to work on different channels and at different baud rates, but all of solar decided to just stick with the default settings. So after sniffing a few the signals send by the box I found this Pattern:

    0x43 0xC0 BoxID BoxID 0x00 0x00 ID ID ID ID 0x00 0x00 0x00 0x00 Checksum

    An important note is that both the inverters and the box's id's are already in hex and don't need to be converted.

    Also I am not quite sure what the box id is for but I think as long as you are always using the same one it should be fine and is only needed if there are multiple boxes close to each other.

    The response from the inverter looks as follows:

    0x43 0xC0 BoxID BoxID 00 00 ID ID ID ID XX XX XX 00 XX VDC VDC DC DC VAC VAC AC AC 00 XX XX XX

    VDC = Voltage DC

    DC = Current on DC side

    VAC = Voltage AC

    AC = Current on AC side

    ID = Inverter id

    All places marked with an XX Iam not yet sure what they mean if anything at all.

    There are still two parameters missing, the inverter type and the daily/total power generation.

    But I have already written some code for the ESP32 to get all the values every Minute and upload them to an influxdb instance running on my Raspberry Pi server. Check it out on my GitHub.

View project log

Enjoy this project?

Share

Discussions

t wrote 09/07/2022 at 18:11 point

Hi, have the same inverter with databox. think the last two numbers could be some kinde of checksum?! any other ideas?

  Are you sure? yes | no

Robin Dorst wrote 10/23/2022 at 17:28 point

This is a response from the inverter:
43 C0 13 84 00 00 38 00 41 46 41 EA 1F 00 A3 07 C5 02 E8 5A 9F 00 3A 00 EF 42 2F

But I can't find a way that either the last two or just the last byte could be a checksum.

  Are you sure? yes | no

Tom Nardi wrote 08/16/2022 at 05:01 point

Fascinating project, eager to see how it develops.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates