# SolarEdge ModBus Registers - SunSpec

**URL:** <https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683>\
**Category:** General\
**Created:** [17 December 2020 22:19 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683 "2020-12-17T22:19:03Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [17 December 2020 22:19 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/1 "2020-12-17T22:19:03Z")

</div>

With fantastic help from two of the contributors I have now learned how to decode the ModBus registers from the SolarEdge inverter. It is fitted with a WattNode meter which also uses ModBus.

Following the

> **[sunspec-implementation-technical-note.pdf](https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf)**
>
> 1639.75 KB

I have so far decoded as far as register 40189 on page 19 successfully. The main data I need is in the Export+Import section but all the registers beyond 400189 appear to be either zero or 32780. As far as its worth empty.

Ive seen a few posts about SolarEdge Modbus and was hoping someone's got any further than this.

Has anyone successfully decoded

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [15 February 2021 17:25 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/2 "2021-02-15T17:25:30Z")

</div>

Hi @lanmidd

Did you get any further?, I am trying to read how much solar is being generated and the battery state, have this all figured out on my Victron system but no luck on solar edge

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [15 February 2021 18:49 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/3 "2021-02-15T18:49:18Z")

</div>

Some progress. I will know more on Thursday after Solaredge help me check / set the Modbus correctly.

Regards,

Ian

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [15 February 2021 19:02 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/4 "2021-02-15T19:02:13Z")

</div>

Thanks, I'll eagerly await anything your good enough to post.

Cheers

Dave

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [18 February 2021 15:10 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/5 "2021-02-18T15:10:22Z")

</div>

Just got off the phone with Solaredge. They changed the Meter to ID as you suggested and I’m getting data now.

Block 40188 is showing 203 and I think it should be 201.

I’m looking at the other fields now. They seem to be populated now.

Regards,

Ian

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [18 February 2021 15:51 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/6 "2021-02-18T15:51:33Z")

</div>

Ian

Any chance I could get a copy of you flow please, if I go to block 40188 I get out of range - I'll be honest I don't totally know what I am doing!!

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [3 March 2021 08:02 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/7 "2021-03-03T08:02:46Z")

</div>

@Ianmidd Did you every get the solar edge, so very close to get it working. Would really appreciate any help you can offer.

 ![Untitled 5](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/1/f11df933e972b21e7c3d1ba46ab0ec162b5a5c64.jpeg) or share what i have done if you need it.

thanks

Dave

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [3 March 2021 14:25 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/8 "2021-03-03T14:25:11Z")

</div>

I’ll be back on this at the weekend.

I have finished up with a combination of API, Modbus and eMonTx.

I’ll send some stuff over.

Regards,

Ian

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [3 March 2021 14:54 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/9 "2021-03-03T14:54:50Z")

</div>

very kind, thanks

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [6 March 2021 13:51 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/10 "2021-03-06T13:51:10Z")

</div>

```auto
[{"id":"9ad5eb66.99dcc8","type":"function","z":"cafd2af1.b44da8","name":"Solaredge TCP modbus -> JSON","func":"// Create new Buffer based on array bytes\nconst buf = Buffer.from(msg.payload.buffer);\n\n// Create influxdb JSON\nmsg.payload = [\n [{\n 'AC Total Current 40072': round(uint16(40072) * scalefactor(40076),1),\n 'AC Voltage phase AB 40077': round(uint16(40077) * scalefactor(40083),1),\n 'AC Power 40083': round(uint16(40083) * scalefactor(40084),1),\n 'AC Power output Watts 40084': round(int16(40084) * scalefactor(40085), 1),\n 'AC Frequency Hz 40086': round(uint16(40086) * scalefactor(40087),1),\n 'AC Apparent Power 40088': round(uint16(40088) * scalefactor(40089),1),\n 'AC Reactive Power 40090': round(uint16(40090) * scalefactor(40091),1),\n 'AC Power Factor 40092': round(uint16(40092) * scalefactor(40093),1),\n 'DC Current': round(int16(40097) * scalefactor(40098),1),\n 'DC Current Factor': round(int16(40098),2),\n 'DC Voltage': round(uint16(40099) * scalefactor(40100),1),\n 'DC Volt Factor': round(int16(40100),2),\n 'DC Power': round(int16(40101) * scalefactor(40102),1),\n 'Status 40108': round(uint16(40108), 2),\n time: new Date()\n },\n {\n inverter: '1'\n }]\n];\n\nreturn msg;\n\nfunction word(address) {\n // Find the correct offset in bytes\n // 40070 is the starting address we fetch from SolarEdge inverter\n return (address-40070) * 2;\n}\n\nfunction scalefactor(address) {\n return Math.pow(10, buf.readInt16BE(word(address)));\n}\n\nfunction int16(address) {\n return buf.readInt16BE(word(address))\n}\n\nfunction uint16(address) {\n return buf.readUInt16BE(word(address));\n}\n\nfunction int32(address) {\n return buf.readInt32BE(word(address))\n}\n\nfunction uint32(address) {\n return buf.readUInt32BE(word(address))\n}\n\nfunction round(value, decimals) {\n return Number(Math.round(value+'e'+decimals)+'e-'+decimals);\n} \n\n \n// 'Single Phase 101 40070': round(int16(40070),2),\n// 'Sunspec Length 40071': round(uint16(40071),2),\n// 'AC Current phase A 40073': round(uint16(40073) * scalefactor(40076), 2),\n// 'AC Current phase B 40074': round(uint16(40074) * scalefactor(40076), 2),\n// 'AC Current phase C 40075': round(uint16(40075) * scalefactor(40076), 2),\n// 'AC Current scale 40076': round(int16(40076), 2),\n// 'AC Voltage phase BC 40077': round(uint16(40078) * scalefactor(40083), 2),\n// 'AC Voltage phase CA 40078': round(uint16(40079) * scalefactor(40083), 2),\n// 'AC Voltage phase AN 40079': round(uint16(40080) * scalefactor(40083), 2),\n// 'AC Voltage phase BN 40080': round(uint16(40081) * scalefactor(40083), 2),\n// 'AC Voltage Scale 40083': round(int16(40083), 2),\n// 'AC Power Scale 40085': round(int16(40085), 2), \n// 'AC Frequency Scale 40087': round(int16(40087), 2),\n// 'AC A/Power Scale 40089': round(int16(40089), 2), \n// 'AC R/Power Scale 40091': round(int16(40091), 2), \n// 'AC P/F Scale 40093': round(int16(40093), 2), \n// 'AC Lifetimeproduction 40094': round(uint32(40094) * scalefactor(40096), 2),\n// 'Heat sink temp': round(int16(40104) * scalefactor(40107), 2),\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":560,"y":300,"wires":[["f2b18b54.e946c8","8a92ecec.f736c"]]}]

```

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [6 March 2021 14:03 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/11 "2021-03-06T14:03:53Z")

</div>

This is my Modbus decode function thus far. Problems I have encountered are:-

1. The Inverter/s were incorrectly configured so Modbus values were missing or incorrect.
2. The SolarEdge document has errors and is generally unhelpful.
3. The Flex Getter Node causes errors so I use only yet Modbus Getter.
4. I have also installed eMonTx units (2 of them because my system is in a annex and the main CB panel is in the main house) in an attempt to gather reliable data.
5. It is difficult (almost impossible) to reconcile the data with SolarEdge monitor because of the time lag so independent measurements have to be made onsite.
6. The turnaround time for a Support "case" with SolarEdge is measured in weeks.
7. Much of the values we actually need have to calculated or deduced form other data.
8. The eMonTx vales need to be subjected to a calibration depending on the prevailing mans voltage which varies constantly.
9. SolarEdge API is unusable due to the limit of 300 squawks per day.
10. I wanted to fit a supplemental API init so my old Inverters could be interrogated locally. The Newer inverters are (so-say) incompatible with Taels batteries. This is because Tesla got pissed of with Solaredge and went their own way in my opinion. So if you have Tesla batteries do not expect any help from SolarEdge are monitoring.
11. As far as I can tell theStarage LEVEL (Battery %) is not even implemented in the Modbus version used by SolarEdge. If it is they won't tell me the register number despite many requests.

My conclusion is any salesman who sells a SolarEdge system based on User monitoring is being deceitful. And finally there is no way the User can alter the Charge profiles themselves whatever the salesman tells you.

I have spent many many hours on this and the results are borderline adequate to unusable.

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [9 March 2021 12:51 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/12 "2021-03-09T12:51:09Z")

</div>

@Ianmidd about the same conclusion i came to. I have a victron system and a soloredge system and the victron is so much nicer to work with. All i have tried to get it the generater solar power and will they help? will they bugger. I'm looking at putting a meter on the connection to the solaredge that will give me much of what i need fed into my victron system.

I have reasonably big system with 149 panels and 40kw avaliable inverter power mainly needed as i can get three phase electric to the property and when i add up the hot tub coming on charging the car 12 kw water heater the fuse blows if the wife cooks a roast!!

if i get anywhere i will gladly share it

cheers

dave

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [9 March 2021 13:24 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/13 "2021-03-09T13:24:00Z")

</div>

I think I’ve more or less mastered the Modbus part. The actual relevance of the fields decoded is far from clear and very difficult to correlate with the Portal due to time delay and poll limit.

I asked Solaredge to explain the fields and so far they have refused. I think I will end up changing the inverters as I suspect they are very inefficient anyway.

Regards,

Ian

---

<div class="post-metadata">

**Author:** ![davenrea](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/davenrea/32/32842_2.png) [@davenrea](https://discourse.nodered.org/u/davenrea)\
**Post date:** [9 March 2021 19:30 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/14 "2021-03-09T19:30:58Z")

</div>

I've looked at replacing mine with a fronius inverter as that is compatible with my victron stuff but the LG Chem battery I have would go to waste also all the panels have optimisers on them but totally in agreement with you,

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [11 March 2021 19:37 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/15 "2021-03-11T19:37:42Z")

</div>

It turns out the WattNode meter was incorrectly configured in the Inverter thus contained no actual data.

Now that’s fixed. There is some data. I have asked Solaredge to clarify 👎

What is meant by DC Current? Is the Panel output, Battery Input/Output or the sum of all those +/-.

What is meant by AC Current ? Is it Inverter production or Grid Flow +/-?

Where is Storage Charge Level % stored ?

So far I have had 2 responses both not referring to Modbus so no use at all.

I really do not understand how they can claim that the System can be monitored if it’s all so vague.

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [11 March 2021 19:38 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/16 "2021-03-11T19:38:53Z")

</div>

I have also installed eMonTX in an effort to get progress but so far I have done data but no means to verify.

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [1 May 2021 17:34 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/17 "2021-05-01T17:34:18Z")

</div>

Ok, current state of play is: Because I have two inverters I need to read both Modbusses which explains why all the date I had was not credible. Also because each inverter has its own battery I need to pick up Battery 1 from Inverter 1 and Battery ONE from Inverter 2. (Doh!).

So far I now have all the data coming in with reasonable values with the exception of PV Output. Still searching for this. I have Total AC Output and Total DC Output but is seems to be referring only to the passage from Inverter/s to House and not from PV to Battery. Still waiting from Solaredge Technical support who seem to be almost further in the dark than I am at the moment.

---

<div class="post-metadata">

**Author:** ![jack\_kelly](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jack_kelly/32/43339_2.png) [@jack\_kelly](https://discourse.nodered.org/u/jack_kelly)\
**Post date:** [15 June 2021 11:31 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/18 "2021-06-15T11:31:58Z")

</div>

This is a super-interesting discussion!

I'm about to install solar PV on our (small) roof. I'm a real data geek, so I want to get my hands on as much data as possible, ideally at the level of the individual PV modules 🙂 Would you folks recommend _against_ SolarEdge? In which case, it looks like my only choice is Enphase micro-inverters if I want module-level data; is that right?

---

<div class="post-metadata">

**Author:** ![Ianmidd](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@Ianmidd](https://discourse.nodered.org/u/Ianmidd)\
**Post date:** [15 June 2021 14:05 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/19 "2021-06-15T14:05:33Z")

</div>

I’ve pretty much found all the inputs I need despite SolarEdge. Their manuals are incorrect and the support with one exception openly admit I know more than they do.

The problem I’m struggling with atm is the Modbus keeps collapsing. It’ll work for several hours and then just stop.

I’ve tried eMonTx units but they’re not stable and drop off the network from time to time.

I can keep the roof panels but it looks as if I’ll need to sell the SE Inverters and Tesla PW1s.

I just need inverters that provide proper power tracking and data feed and suitable batteries to go with them.

I’m at the point where I can track the data and can show that the SE inverters are Exporting when there is no need and Importing when there is no need. Wasting me money unless I could get Netmetering instead.

Regards,

Ian

---

<div class="post-metadata">

**Author:** ![freds](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/freds/32/43247_2.png) [@freds](https://discourse.nodered.org/u/freds)\
**Post date:** [1 July 2021 05:31 UTC](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683/20 "2021-07-01T05:31:58Z")

</div>

I actually want to go the other direction and start with a dumb inverter and implement a flow that mimic's the Sunspec ModbusTCP compliant inverter profile for the Victron CCGX display device.

Any pointers?

[Next page](https://discourse.nodered.org/t/solaredge-modbus-registers-sunspec/37683.md?page=2)
