[APP][Pro] SolarEdge + Growatt TCP modbus

Do you still have 2 Solaredge devices? I see there is a conflict with something else.

Remove both - restart app - add 1 inverter

I will look into that app.
I had wanted to have it in one app so not have to switch for the info, but if it isn’t in de modbus data (I guess) then it won’t be possible I guess.

Hi Pieter. Sorry for my late reply. I have a new internet provider so I had to reconfigure my complete network. But it worked! Thanks!

I will upload an updated version to test soon which has the following new features:

These are advanced settings and at your own risk. (depreciation of battery, unplanned charging or discharging)

Nice to know:
This Solaredge app is currently one of the first to support these functions.
Not even the official SolarEdge app or website support these advanced configurations. (nor other domotica stuff)

Hi,

I want to use the values of the app for a Dashboard, MQTT based. For as I can see the MQTT topics are not created by the app. I use the MQTT Hub app at the Homey and MQTT Explorer.

These topics are made

  • homey/solarpanel/[location]/[name device]/$name
  • homey/solarpanel/[location]/[name device]/$type

And these topics are missing:

Solaredge - Solar Power
homey/solarpanel/[location]/[name device]/measure-power

Solaredge - Heatsink temperatuur
homey/solarpanel/[location]/[name device]/measure-temperature

Solaredge - DC Voltage
homey/solarpanel/[location]/[name device]/measure-voltagedc

Solaredge - Totale opbrengst
homey/solarpanel/[location]/[name device]/meter-power

Solaredge - Status
homey/solarpanel/[location]/[name device]/status

May be it is a feature request. Any help would be appreciated.

Kind regards,
Bert

Honestly I have no idea how to do this, but I think this something for the MQTT hub and not for the solaredge app.

The Solaredge uses some custom capabilities, maybe that is why.

I tried mqtt hub a couple of months ago and I could receive all the data in Home Assistant from Solaredge

Integration with my SE5K inverter is working great, much better than API integration.
Thanks for that :slight_smile:

I have only one question, is it possible to view AC voltage and generated current without the Energie meter?

Thanks!

I have to look into that.
According the manual it is possible, I will make a test version in the next week.

What you mean with current?

Have a look at this file, and tell me the parameter you want:
https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf

That’s great :grinning_face_with_smiling_eyes:

Would be nice to monitor the voltage of each phase:

Also for current of each of the fase and combined:

This one is nice to have:

Ah you have 3 phase?

Sorry then it will be for the ‘ future’
Currently the app is for 1-phase, as I need to rewrite the app for 3-phase.

So sorry, when I have some (or better a lot) of time, I will rewrite the app.

1 Like

I have 3 phase indeed.
Okay, will have to wait then :wink:

Thanks!

1 Like

Hi Pieter,

App is working great so thanks for that!!!

We have optimisers for each panel. Do you know if solar power for each panel is provided by modbus?

Hi

No this info is not in the modbus data.
You can check in the modbus documentation which info is available.

I know there are some unofficial ‘tools’ to get the data, but this requires you to ‘catch’ the data send to the Solaredge servers.
That’s not the purpose of the app.

1 Like

Ruben, if you have node-red you could read the values yourself. This video Obtén los datos de tu Inversor Solar shows how to read your inverter using node-red-contrib-modbustcp. You can figure out and read the values you want. It’s in spanish though.

the nodes required to read an process the values

this is an example how to read the buffer values

1 Like

This is great. Thank you.
Can you share the node-red code here so I scan use it as reference?

With home assistant, you can also get all the values.

I will try next week to release the 3-phase support

Arnold, below are the nodes I’m using to extract data from my SolarEdge Inverter every 30 seconds.

[{"id":"f3c2fd317aa56a7a","type":"modbus-read","z":"876db62c.d628f","name":"Read","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"40071","quantity":"38","rate":"30","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"db92a57b3119cab2","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":970,"y":780,"wires":[[],["53c6de8182c62fd2"]]},{"id":"53c6de8182c62fd2","type":"buffer-parser","z":"876db62c.d628f","name":"","data":"payload.buffer","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"uint16le","name":"ACI","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"ACI_SF","offset":8,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16le","name":"ACV","offset":10,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"ACV_SF","offset":22,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"ACW","offset":24,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"ACW_SF","offset":26,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16le","name":"ACF","offset":28,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"ACF_SF","offset":30,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16le","name":"DCI","offset":50,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"DCI_SF","offset":52,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16le","name":"DCV","offset":54,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"DCV_SF","offset":56,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"DCW","offset":58,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"DCW_SF","offset":60,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"TEMP","offset":64,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16le","name":"TEMP_SF","offset":70,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"output","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":1120,"y":790,"wires":[["e86e71c36d60ebc9"]]},{"id":"56478ebcc02294f7","type":"debug","z":"876db62c.d628f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1520,"y":830,"wires":[]},{"id":"e86e71c36d60ebc9","type":"function","z":"876db62c.d628f","name":"calculatie values","func":"result = {};\nresult.payload = {};\n\nresult.payload.ACI=msg.payload.ACI*Math.pow(10,msg.payload.ACI_SF);\nresult.payload.ACV=msg.payload.ACV*Math.pow(10,msg.payload.ACV_SF);\nresult.payload.ACW=msg.payload.ACW*Math.pow(10,msg.payload.ACW_SF);\nresult.payload.ACF=msg.payload.ACF*Math.pow(10,msg.payload.ACF_SF);\n\nresult.payload.DCI=msg.payload.DCI*Math.pow(10,msg.payload.DCI_SF);\nresult.payload.DCV=msg.payload.DCV*Math.pow(10,msg.payload.DCV_SF);\nresult.payload.DCW=msg.payload.DCW*Math.pow(10,msg.payload.DCW_SF);\n\nresult.payload.TEMP=msg.payload.TEMP*Math.pow(10,msg.payload.TEMP_SF);\n\nreturn result;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1300,"y":790,"wires":[["56478ebcc02294f7","03c63fa1208cc71d"]]},{"id":"9a2e3aef8c189951","type":"influxdb out","z":"876db62c.d628f","influxdb":"6996f3e5.22a7cc","name":"","measurement":"solar_edge_modbus","precision":"","retentionPolicy":"","x":1860,"y":760,"wires":[]},{"id":"692143e91f42a266","type":"comment","z":"876db62c.d628f","name":"Read SolarEdge Inverter using modbus","info":"","x":1050,"y":740,"wires":[]},{"id":"03c63fa1208cc71d","type":"function","z":"876db62c.d628f","name":"daytime check","func":"var date = new Date();\nvar sunrise = global.get('sun_events.sunrise');\nvar sunset = global.get('sun_events.sunset');\n\nmsg.daytime = false;\n\nif (sunrise && sunset ) {\n    if (date >= sunrise && date <= sunset) {\n        msg.daytime = true;\n    }\n}\n\nnode.status({text: 'Power: '+ msg.payload.ACW.toFixed(0) +'W - daytime: ' + msg.daytime + ' last checked (' + date.toLocaleString() + ')' });\n\nif (msg.daytime) {\n    return msg;\n}\nelse {\n    return null;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1530,"y":780,"wires":[["9a2e3aef8c189951"]]},{"id":"db92a57b3119cab2","type":"modbus-client","name":"Solar Edge","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.1.29","tcpPort":"1502","tcpType":"TPC-RTU-BUFFERED","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true},{"id":"6996f3e5.22a7cc","type":"influxdb","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"homey","name":"","usetls":false,"tls":""}]

below is the data as shown in Grafana

1 Like

Thanks :pray:

When sending the flow solaredge-set storage control mode-Time og use(profile)(0xE004 = 2) inverter goes to (0xE004 = 3 (Backup only). So it seems to be a writing error. can you pleass take a look at this

Do you have a Time of Use profile installed?
This has to be configured by Solaredge.

I don’t have this profile, so I cannot test this

https://www.solaredge.com/sites/default/files/storedge_charge_discharge_profile_programming.pdf