There are already various implementations for reading Delta Solivia inverter data over RS-485 (example), but there are dozens of Solivia models and about 10 different protocol variants.
My component supports the following models:
SOLIVIA 2.5 EU G3
SOLIVIA 3.0 EU G3
SOLIVIA 3.3 EU G3
SOLIVIA 3.6 EU G3
SOLIVIA 2.5 NA G4
SOLIVIA 3.0 NA G4
SOLIVIA 3.3 NA G4
SOLIVIA 3.6 NA G4
SOLIVIA 4.4 NA G4
SOLIVIA 5.0 NA G4
SOLIVIA 2.5 AP G3
SOLIVIA 3.0 AP G3
SOLIVIA 3.3 AP G3
SOLIVIA 3.6 AP G3
Support for the following models is implemented but (as of yet) untested:
RPI H3A
RPI H4A
RPI H5A
RPI M6A
RPI M8A
RPI M10A
PRI M50A
RPI M30A
RPI M15A
RPI M20A
RPI H3
This implementation is based on the document “Public Solar Inverter Communication Protocol (Version 1.2)”, published by Delta Energy Systems (Germany) GmbH, which documents all the different variants.
At the moment the component exposes 14 data fields (out of a total of 46), including DC voltage/current, AC voltage/current, grid voltage/current, current power output and total energy generated. See screenshot below.
It supports multiple inverters (I have two SOLIVIA 2.5 EU G3’s).
At the moment it relies on a Solivia Gateway to request updates from the inverter(s), but this requirement will hopefully be removed in the upcoming days, which means you’ll only need an ESP32 with an RS-485 board to read the inverter data.
It can run fully standalone, no Solivia gateway required.
Sorry for the noob question, but do you have a guide on how to get it to run on an ESP32? I got an ESP32 board up and running with esphome, but I have no idea of how to install your software on it.
@EeyoreDK ESPHome works with configuration files (in YAML format) that are used to load external components like mine.
I don’t know how exactly you’re installing ESPHome on the ESP32 so I cannot offer specific help, but the README provides the necessary parts specific to my module. I also included a full example file.
Also, aside from an ESP32 you need an RS-485-to-TTL board before this can work.
@robertklep I found the error. I was using the long ID strings of the inverters as address instead of just 1 and 2 (in my case). It seems to be working fine, now I just need some sun . Thanks for your work on this, it is much appreciated.
Hi Robert, I may have found a bug. I do not know if it is caused by your software or by HA energy. The accumulated energy from the previous day is not always reset and gets added to the following day.
I think you use the same filter? If so, you may want to try removing it. The difference will be that the sensor will keep the last value of the day until it starts again the next day.
I forgot to update HA energy when I moved from the scraper-based setup to this new setup, but I’m using the total energy sensors for that, not the today ones.
Yes, I use the same filter, I will try to play around with it.
My first thought was also to use the total energy, to avoid the issue with daily reset, but my total energy reading is not very detailed. Is there some interval setting that I can edit for this?
No, I think the inverter only updates the value towards the end of the day (probably when it notices that the input power is decreasing significantly).
Perhaps it’s possible to use another filter to prevent the peaks at the start: Sensor Component — ESPHome
That was what I was thinking too. I will see if removing the filter makes any changes. If not I will take a look at the sensor component. If I find a solution, I will let you know. Thanks for your help
Hi Robert,
I tried to understand which hardware you used and how to connect it to my network / homeassistant computer.
I found a RS485 device but it is not clear to me how to connect all te different wires.
My situation, I have 2 inverters on 2nd floor that are both right now connected via a single solivia gateway on a network switch on the second floor.
My homaassistant computer is connected somewere else to another network switch. I understand that I need to disconnect the existing gateway, but how do i connect the inverters to my Home assistant ?
Can you point me in the right direction ? (maybe you have a connection scheme ?)
I have a similar situation: two inverters that are daisy-chained together with the gateway (one cable going from inverter 1 to inverter 2, then a cable from inverter 2 to the gateway).
I removed the cable between inverter 2 and the gateway, and connected the RS485-module to inverter 1 (the RS485 ports are set up as a bus so it doesn’t matter which inverter you use to connect the module to, and which port you use also shouldn’t matter). The inverters do need to be connected to each other as well so you only need a single ESP32/RS485-module to read them both.
As for wiring, please see the README for the component. The inverter (or at least mine) has two regular RJ45 (“Ethernet”) ports that are used to connect to the RS485 module, but the exact wiring depends on the inverter model.
Also, be aware that my component only works with the inverter models that are listed in the README.
Tnx for your explanation.
If I am correct a esp32 is a wireless module ,that connects to the rs485 module ?
I am preferring a wired solution. Do you know this is possible ?
The ESP32’s usually come as a wireless module, although there are also wired boards available, like the WT32-ETH01 boards (I don’t have any experience with those in combination with the Solivia component though).
The connection between the RS475 and ESP32 modules is wired.
The flow control pin on the ESP32 should be connected to both RE and DE (or you can solder a bridge between those pins on the RS485 module and connect either one or the other to the ESP32).
FWIW, it’s not mandatory to use the same ESP32 pins as mentioned in the README, you can use most other ESP32 pins for each purpose if that’s more convenient. You do have to modify the YAML configuration if you choose other pins.
@robertklep - This was awesome to see.
I’ve looked at my inverter for 10 years and thought how good it would be to get data out of it, but never took it much further.
On my summer (Melbourne, Aus) holidays, I decided to give HomeAssistant another go and whilst adding devices thought I’d do a cheeky server for the Inverter and found your post.
After a few purchases, I’ve got a jerry rig running system. I couldn’t believe that I got it first go too. Great instructions… I thought I was going to be a little lost with all of the C code, but eventually realised I only needed the Yaml to get it going.