Reading data from Solaredge directly using TCP

My first post here, and right away a question, to get started. My ultimate goal is to read the register values in my SolarEdge15K inverter over the local in-home Ethernet into a small computer (Arduino) and activate/stop loads based on the excess energy being produced.
My inverter has a meter connected to one of its RS485 ports. As it is a SetApp configurable only inverter, it should have two Modbus/RS485 interfaces. (according to https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf, page 3).
All telemetry data over the solaredge monitoring server works, so the connectivity is ok. But I do not want to incur the complexity, dependency and latency involved with going through this monitoring server using the available API.

First step is to get into my SolarEdge with a python program, from my laptop, e.g. solaredge-modbus · PyPI . Of course, this did not work from the outset. I diagnosed the problem to the fact that my SolarEdge is totally closed. Using Angry IP Scanner over the IP address of my SolarEdge I see zero open ports and although ping works, any other communication fails. (ftp / http(s) etc.). Page 11 of the above mentioned document says: Modbus over TCP is by default disabled.
So how do I open a port? And as mentioned on Page 12 of the above document, I need to send in a request into the SolarEdge inverter within 2 minutes?

  1. Anybody out here who has experience / has done this?
  2. Do I need to get an installer account to be able to open the TCP connection from my mobile with SetApp,
  3. and from there on I need to poll every two minutes to prevent the port from shutting down again? Guess that is a tall order, especially when something goes down …
  1. Yes
  2. It depends. If you will use modbus over tcp yes, you will need to use Setapp and an installer account
  3. You have two options, depending on your setup,
    3.1 Modbus rtu (If this is the communication option selected for communication of the inverter with the meter. You will need an installer account and setapp if you want to change it from solaredge protocol to modbus protocol). Using a (twisted pair) cable to connect to the meter and a modbus addon or a modbus to usb to your arduino. This way you could poll both the meter and the inverter as they should have different mobus ids.
    3.2 Use Modus over TCP. You need to activate it through Setapp, Communication settings. You need to have the inverter connected to your router (or a switch) with an ethernet cable. The default port is 1502 by default, but you can change it eg to 502. Set your application to poll the inverter every some seconds so not to miss the first 2 minutes window. If I remember well, if you establish connection before the first 2 minutes Modbus TCP does not shut down later, but you could test it.
2 Likes