# \[APP\]\[Pro\] SolarEdge + Growatt TCP modbus

**URL:** <https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487>\
**Category:** Apps\
**Tags:** app, pv-solar\
**Created:** [March 30, 2021, 10:17am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487 "2021-03-30T10:17:23Z")\
**Posts on this page:** 20\
**Page:** 8

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 2, 2022, 6:13pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/143 "2022-01-02T18:13:08Z")

</div>

mapping [solaredge\_modbus/src/solaredge\_modbus at 64b604487982c38a9af96b3513733497731a7c60 · nmakel/solaredge\_modbus · GitHub](https://github.com/nmakel/solaredge_modbus/blob/64b604487982c38a9af96b3513733497731a7c60/src/solaredge_modbus/) **init**.py#L120

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 7, 2022, 3:12pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/144 "2022-01-07T15:12:34Z")

</div>

do you have this enabled in your UI ? [https://www.solaredge.com/sites/default/files/storedge\_charge\_discharge\_profile\_programming.pdf](https://www.solaredge.com/sites/default/files/storedge_charge_discharge_profile_programming.pdf)  
on my device they say this is only enabled in the US and not in the EU plus I think you have a different device  
I have this [https://www.solaredge.com/nl/products/StorEdge-products-for-on-grid-applications#/](https://www.solaredge.com/nl/products/StorEdge-products-for-on-grid-applications#/).  
StorEdge 1-fase omvormer met HD-Wave technologie

Do you have some storedge api calls which I can try in postman. thanks

---

<div class="post-metadata">

**Author:** ![Pieterv123](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/pieterv123/32/13353_2.png) [@Pieterv123](https://community.homey.app/u/Pieterv123)\
**Post date:** [January 7, 2022, 4:07pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/145 "2022-01-07T16:07:53Z")

</div>

You don’t need the charge/ discharge profile.

There is no api for modbus, it is just raw data from the inverter. (Reading the registers)

I have no computer with me, I will check next week, and also upload the code to github

I have a separate inverter and battery (storedge module), so maybe there is a difference.

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 7, 2022, 4:47pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/146 "2022-01-07T16:47:26Z")

</div>

nice, will play with flows and with python to see if it works for me.

---

<div class="post-metadata">

**Author:** ![Pieterv123](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/pieterv123/32/13353_2.png) [@Pieterv123](https://community.homey.app/u/Pieterv123)\
**Post date:** [January 9, 2022, 4:50pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/147 "2022-01-09T16:50:50Z")

</div>

Repo is updated in the test branch.

I am still in doubt if I will continue the development of this app or not.  
I am planning to move to HA for reliability.

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 9, 2022, 4:56pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/148 "2022-01-09T16:56:50Z")

</div>

yes I saw it , thanks

I can understand also my wave + batt setup is very different. plus looks like solaredge don’t enable the same options as your setup.

Will probably make a new device or make yours compatible with mine.

thanks

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 9, 2022, 8:27pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/149 "2022-01-09T20:27:53Z")

</div>

So I got it working but looks like my values are a bit different

 ![Screen Shot 2022-01-09 at 21.13.28](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/5/e5eec1a985b3d0e3798ca6bde4becaed90bdd1c8.jpeg)

changing control does not work for wave , I made a support ticket for that. but I can try it now and home something to debug it.

```auto
git diff drivers/inverter/device.js
diff --git a/drivers/inverter/device.js b/drivers/inverter/device.js
index 22e0d84..03b8a28 100644
--- a/drivers/inverter/device.js
+++ b/drivers/inverter/device.js
@@ -288,9 +288,10 @@ this.setSettings({
 else {
   Promise.all([
     //Battery
- client.readHoldingRegisters(57716, 2), //0 battery power Watt
- client.readHoldingRegisters(57729, 2), //1 battery SOC %
- client.readHoldingRegisters(57732, 2), //2 Battery SOH %
+ client.readHoldingRegisters(57716, 2), //0 battery power Watt // E174
+ // client.readHoldingRegisters(57729, 2), //1 battery SOC %
+ client.readHoldingRegisters(57732, 2), //1 battery SOC % // E184
+ client.readHoldingRegisters(57730, 2), //2 Battery SOH % // E182
     client.readHoldingRegisters(57726, 2), //3 max Capacity Wh
     client.readHoldingRegisters(57728, 2), //4 available Capacity Wh
     client.readHoldingRegisters(57666, 2), //5 rated energy Wh
@@ -318,10 +319,12 @@ else {
     client.readHoldingRegisters(57357 , 1), //23 Storage remote control Command Mode uint16
     client.readHoldingRegisters(57358 , 2), //24 Storage remote control Charge limit Float32
     client.readHoldingRegisters(57360 , 2), //25 Storage remote control DischargeCharge limit Float32
+
+
   ]).then((results) => {
     let batterypower = results[0].response._body._valuesAsBuffer;
- var soh = results[1].response._body._valuesAsBuffer;
- var soc = results[2].response._body._valuesAsBuffer; //9280
+ var soc = results[1].response._body._valuesAsBuffer; //9280
+ var soh = results[2].response._body._valuesAsBuffer;
     var maxcap = results[3].response._body._valuesAsBuffer; //9800
     var cap = results[4].response._body._valuesAsBuffer; //9310
     var energy = results[5].response._body._valuesAsBuffer; //9310
@@ -437,20 +440,24 @@ else {
     //SOC
     var soc1 = Buffer.from(soc, 'hex').swap16().swap32().readFloatBE();
     this.setStoreValue('soc', soc1);
-
+ this.log('soc1 ',soc1 );
     //Max Capacity
     var maxcap1 = Buffer.from(maxcap, 'hex').swap16().swap32().readFloatBE();
-
+ this.log('maxcap ',maxcap1 );
     //Usable Capacity
     var cap1 = Buffer.from(cap, 'hex').swap16().swap32().readFloatBE();
+ this.log('cap ',cap1 );
+

     //SOH
- var soh = Buffer.from(soh, 'hex').readFloatBE();
- var currentenergy = (soc1 * soh) / 100000;
+ var soh = Buffer.from(soh, 'hex').swap16().swap32().readFloatBE();
+ this.log('soh ',soh );
+ // var currentenergy = (soc1 * soh) / 100000;
+ var currentenergy = cap1 / 1000;
     this.setStoreValue('currentenergy', currentenergy);
     // in percentage
- var soh1 = (soh / cap1) * 100;
- this.setStoreValue('soh', soh1);
+ // var soh1 = (soh / cap1) * 100;
+ this.setStoreValue('soh', soh);

 // Lifetime import export doesnt work
     //Battery lifetime export
@@ -460,7 +467,6 @@ else {
     this.log('export', battexport1);
     var battexport1 = battexport1;
     this.setStoreValue('battexport', battexport1);
-
     //Battery lifetime import
     var battimport1 = battimport.readUInt32LE();
     var battimport1 = battimport1;
@@ -513,6 +519,7 @@ else {

     //errors
   }).catch((err) => {
+ this.log('ccc');
 this.log(err);
 })
 //Write data to inverter
@@ -677,31 +684,33 @@ if (controlmodeset == storagecontrolget) {
 .then(function (resp) {
   console.log('controlmodewrite', resp)
 })}
-// dit is het schrijven voor remote control
-if (remotecontrolset == remotecontrolget) {
-} else {
- client.writeSingleRegister(57357, remotecontrolset)
- .then(function (resp) {
- console.log('remotecontrolwrite', resp)
- })
-}
-/// DIT is het regeltje om charge te beperken
-if (chargepower == chargeget) {
-} else {
- client.writeMultipleRegisters(57358, [chargehex1, chargehex2])
- .then(function (resp) {
- console.log('chargewrite', resp)
- })
-
-}
-/// DIT is het regeltje om discharge te beperken
-if (dischargepower == dischargeget) {
-} else {
- client.writeMultipleRegisters(57360, [dischargehex1, dischargehex2])
- .then(function (resp) {
- console.log('dischargewrite', resp)
- })
-}
+// // dit is het schrijven voor remote control
+// if (remotecontrolset == remotecontrolget) {
+// } else {
+// client.writeSingleRegister(57357, remotecontrolset)
+// .then(function (resp) {
+// console.log('remotecontrolwrite', resp)
+// })
+// }
+
+
+// /// DIT is het regeltje om charge te beperken
+// if (chargepower == chargeget) {
+// } else {
+// client.writeMultipleRegisters(57358, [chargehex1, chargehex2])
+// .then(function (resp) {
+// console.log('chargewrite', resp)
+// })
+
+// }
+// /// DIT is het regeltje om discharge te beperken
+// if (dischargepower == dischargeget) {
+// } else {
+// client.writeMultipleRegisters(57360, [dischargehex1, dischargehex2])
+// .then(function (resp) {
+// console.log('dischargewrite', resp)
+// })
+// }

 /*
 // if different write new setting

```

---

<div class="post-metadata">

**Author:** ![Pieterv123](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/pieterv123/32/13353_2.png) [@Pieterv123](https://community.homey.app/u/Pieterv123)\
**Post date:** [January 10, 2022, 8:59am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/150 "2022-01-10T08:59:22Z")

</div>

So you have different registers… that’s complicated 🙂

To control, you first have to put the battery in remote control, second you have to choose the mode

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 10, 2022, 9:29am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/151 "2022-01-10T09:29:23Z")

</div>

yeah, but mine matches the documentation and other github projects.

Also looks like you have more control over your setup. it looks likes for me the dealer has to create profiles for me. will check that.

thanks

---

<div class="post-metadata">

**Author:** ![Till](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/till/32/33841_2.png) [@Till](https://community.homey.app/u/Till)\
**Post date:** [January 21, 2022, 6:04pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/152 "2022-01-21T18:04:29Z")

</div>

Just wondering… I have a Solaredge SE12.5k without display…does it also work with the app?? Actually I can t retrieve any values

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 21, 2022, 6:13pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/153 "2022-01-21T18:13:36Z")

</div>

did you enable modbus ? or you can try this

```auto
python3 modbus.py --timeout 5 --unit 1 --json 192.168.107.25 1502

```

[solaredge\_modbus/src/solaredge\_modbus at 64b604487982c38a9af96b3513733497731a7c60 · nmakel/solaredge\_modbus · GitHub](https://github.com/nmakel/solaredge_modbus/blob/64b604487982c38a9af96b3513733497731a7c60/src/solaredge_modbus/) **init**.py#L120

to see more output.

---

<div class="post-metadata">

**Author:** ![Till](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/till/32/33841_2.png) [@Till](https://community.homey.app/u/Till)\
**Post date:** [January 21, 2022, 6:38pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/154 "2022-01-21T18:38:14Z")

</div>

That was the question…how to enable it…just checked… you can activate via setapp… but only the guys who installed it…will check with them if they can activate it

---

<div class="post-metadata">

**Author:** ![Pieterv123](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/pieterv123/32/13353_2.png) [@Pieterv123](https://community.homey.app/u/Pieterv123)\
**Post date:** [January 21, 2022, 6:49pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/155 "2022-01-21T18:49:29Z")

</div>

I think everyone can activate it, see the first post

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 21, 2022, 6:54pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/156 "2022-01-21T18:54:44Z")

</div>

did this

**Inverters with SetApp**

- Enable wifi direct on the inverter. ( switch the handle to P )
- Connect to the inverter access point like you would for a normal wifi network. The wifi password is published at the right side of the inverter. (check your wifi entries )
- Then open up a browser and go to [http://172.16.0.1](http://172.16.0.1/) .
- From this webpage you can enable modbus TCP without setApp or installer account.

I can show you my setting.

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 21, 2022, 6:56pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/157 "2022-01-21T18:56:34Z")

</div>

in my case in NL and hd wave , the installation guy will enable batt control tomorrow , all except in NL this need to be done by the installer.

---

<div class="post-metadata">

**Author:** ![Till](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/till/32/33841_2.png) [@Till](https://community.homey.app/u/Till)\
**Post date:** [January 21, 2022, 8:31pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/158 "2022-01-21T20:31:37Z")

</div>

Thanks Edwin…will try tomorrow… and inform if it worked out

---

<div class="post-metadata">

**Author:** ![Koaz74](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/koaz74/32/25814_2.png) [@Koaz74](https://community.homey.app/u/Koaz74)\
**Post date:** [January 22, 2022, 7:51am UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/159 "2022-01-22T07:51:01Z")

</div>

Since March 2021 my Solaredge 6000 Wave with meter has always worked well with Modbus Tcp. Yesterday I updated the firmware of the 6000 and I can no longer connect in Modbus Tcp …

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 22, 2022, 4:04pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/160 "2022-01-22T16:04:42Z")

</div>

even when it is enabled in the invertor/menu. I noticed when homey is connecting , I cannot do this from my laptop . had to remove it from homey and then I was able to connect.

---

<div class="post-metadata">

**Author:** ![Till](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/till/32/33841_2.png) [@Till](https://community.homey.app/u/Till)\
**Post date:** [January 23, 2022, 5:12pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/161 "2022-01-23T17:12:09Z")

</div>

Okay…I activated modbus TCP … got a port number… and now?? 🙂

---

<div class="post-metadata">

**Author:** ![Edwin\_Biemond](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/edwin_biemond/32/72686_2.png) [@Edwin\_Biemond](https://community.homey.app/u/Edwin_Biemond)\
**Post date:** [January 23, 2022, 5:16pm UTC](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487/162 "2022-01-23T17:16:26Z")

</div>

nice now you can add device in homey to check this , I had to use 1502 as port number.

[Previous page](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487.md?page=7)

[Next page](https://community.homey.app/t/app-pro-solaredge-growatt-tcp-modbus/45487.md?page=9)
