Community
OpenEnergyMonitor

Community

SolarEdge Node-Red node

solaredge
nodered
Tags: #<Tag:0x00007f16a16c8608> #<Tag:0x00007f16a16c84a0>

(Matt Galloway) #1

I’ve created a Node-RED node for picking up SolarEdge inverter data from their monitoring API. I thought it might be of use to other people here.

You can find the NPM module here:
https://www.npmjs.com/package/node-red-contrib-solaredge

And here is a Node-RED configuration for you to import if you want to use it:

[{"id":"9531130f.3ba4c","type":"emoncms-server","z":"","server":"http://127.0.0.1/emoncms","name":"emonPi"},{"id":"a356b54c.3c9828","type":"solaredge-site","z":"a5ce04b2.5a31f8","siteid":"XXXXXX","apikey":"XXXXX"},{"id":"6b057a74.1c5464","type":"debug","z":"a5ce04b2.5a31f8","name":"","active":false,"console":"false","complete":"false","x":568.5,"y":945,"wires":[]},{"id":"32ba255.ff3ddda","type":"function","z":"a5ce04b2.5a31f8","name":"get Data","func":"msg.time = '' + Math.round((Date.now() / 1000));\n\nvar str = \"\";\nstr += \"power:\" + msg.payload.overview.currentPower.power;\nstr += \",\"\nstr += \"lifetimeenergy:\" + msg.payload.overview.lifeTimeData.energy / 1000;\nmsg.payload = str;\n\nreturn msg;\n","outputs":"1","noerr":0,"x":408,"y":944,"wires":[["6b057a74.1c5464","44a9d4fb.0c84cc"]]},{"id":"bbaf87bc.77b808","type":"solaredge","z":"a5ce04b2.5a31f8","site":"a356b54c.3c9828","interval":900,"command":"overview","x":255.5,"y":944,"wires":[["32ba255.ff3ddda"]]},{"id":"ec333946.aa9828","type":"comment","z":"a5ce04b2.5a31f8","name":"SolarEdge","info":"","x":255.5,"y":892,"wires":[]},{"id":"44a9d4fb.0c84cc","type":"emoncms","z":"a5ce04b2.5a31f8","name":"emonPi emonCMS","emonServer":"9531130f.3ba4c","nodegroup":"17","x":588,"y":997,"wires":[]}]

This spits out 2 inputs into node 17:

  • power: The current power detected by the inverter.
  • lifetimeenergy: The amount of kWh the inverter has output during its lifetime.

@lake - might be of interest to you.


(Wabiloo) #2

Hi,
Very interested about this, as I’m looking into installing a new Solar PV system (3 arrays on 3 elevations) and I am trying to convince the company to let me add CTs to the electric installation to monitor the system.
We are thinking of using SolarEdge inverter and optimisers. I know they can then provide an online system for tracking per-panel performance, but really wanted some data coming through the emonPi.
Did you find the API publicly documented anywhere?


(Matt Galloway) #3

Excellent! Yes, you could use this to grab the data. The big downside to their data is the power feed only updates every 15 minutes, which kinda sucks. But it’s great for the overall power, since that is accurate coming direct from the inverter. I’m not sure how often individual panel data updates as I don’t grab it. But probably every 15 minutes too.

Yep: https://www.solaredge.com/sites/default/files/se_monitoring_api.pdf


(Wabiloo) #4

I see. The low frequency of update is disappointing. And from reading that doc, there doesn’t seem to be any way to monitor individual panels through the API. Also disappointing.
Out of interest, did you use CTs to monitor your installation instead of / alongside the node-red integration?


(Matt Galloway) #5

It is :-(.

Yep. I just have one array, one inverter. So I have a “standard” set up really. But I still log my SolarEdge data as I like having it as a second source, mainly for the overall kWh feed I get from SolarEdge.


(Doug) #6

SolarEdge monitoring is the pits! If you get the data from the server, you really only get updates every 1/2 Hour. However, the data is read more frequently from the inverter (I think possibly every 30S) It is possible to ‘sniff’ this data by either running a server before the web interface, or by capturing the data on the RS485 link to the Energy meter (difficult).
There is a project on GitHub for the data-sniffing.

Personally, I thought it easier to use an EmonTx to do the job. Besides, I have 2 solaredge inverters & 2 circuits to monitor, which I could not do with the SolarEdge option.

regards, Doug