Python Plugin: Growatt Inverter

Python and python framework

Moderator: leecollings

User avatar
jacobsentertainment
Posts: 211
Joined: Thursday 01 October 2020 1:47
Target OS: Raspberry Pi / ODroid
Domoticz version: 2021-1
Location: Not @ home
Contact:

Re: Python Plugin: Growatt Inverter

Post by jacobsentertainment »

And some newer errors showing up I have never seen before.

Code: Select all

 2022-10-21 19:27:12.448 Error: Growatt: 'onMessage' failed 'KeyError':'('Data',)'.
2022-10-21 19:27:12.448 Error: Growatt: Exception traceback:
2022-10-21 19:27:12.448 Error: Growatt: ----> Line 276 in '/home/pi/domoticz/plugins/Domoticz-Growatt-Webserver-Plugin/plugin.py', function onMessage
2022-10-21 19:27:12.448 Error: Growatt: ----> Line 168 in '/home/pi/domoticz/plugins/Domoticz-Growatt-Webserver-Plugin/plugin.py', function onMessage
 2022-10-22 22:00:10.602 Error: EventSystem: Warning!, lua script /home/pi/domoticz/dzVents/runtime/dzVents.lua has been running for more than 10 seconds
2022-10-22 22:05:04.653 Error: Growatt: Google returned a Server Error.
2022-10-22 22:45:07.335 Error: Growatt: Google returned a Server Error.
2022-10-22 22:55:11.018 Error: Growatt: 'onMessage' failed 'KeyError':'('Data',)'.
2022-10-22 22:55:11.018 Error: Growatt: Exception traceback:
2022-10-22 22:55:11.018 Error: Growatt: ----> Line 276 in '/home/pi/domoticz/plugins/Domoticz-Growatt-Webserver-Plugin/plugin.py', function onMessage
2022-10-22 22:55:11.018 Error: Growatt: ----> Line 168 in '/home/pi/domoticz/plugins/Domoticz-Growatt-Webserver-Plugin/plugin.py', function onMessage
2022-10-22 23:45:03.327 Error: Growatt: Google returned a status: 502
2022-10-23 01:35:10.292 Error: Growatt: Google returned a Server Error.
2022-10-23 02:05:02.311 Error: Growatt: Google returned a status: 502
2022-10-23 02:35:12.295 Error: Growatt: Google returned a Server Error.
2022-10-23 02:45:12.299 Error: Growatt: Google returned a status: 502
2022-10-23 03:58:14.600 Error: Growatt: Google returned a status: 504
2022-10-23 04:40:05.665 Error: Growatt: Google returned a Server Error.
2022-10-23 05:20:05.270 Error: Growatt: Google returned a status: 502  
User avatar
jacobsentertainment
Posts: 211
Joined: Thursday 01 October 2020 1:47
Target OS: Raspberry Pi / ODroid
Domoticz version: 2021-1
Location: Not @ home
Contact:

Re: Python Plugin: Growatt Inverter

Post by jacobsentertainment »

Problem solved the hard way, installed a shelly em3 and deleted the growatt plugin. I know this is no solution to the plugin but it works for me enjoy the weekend :mrgreen:
User avatar
Rolandet
Posts: 95
Joined: Thursday 31 January 2019 21:11
Target OS: Raspberry Pi / ODroid
Domoticz version: 2021.1
Location: The Netherlands
Contact:

Re: Python Plugin: Growatt Inverter

Post by Rolandet »

Looks like I've got Growatt on the fritz again :(

SInce yesterday I'm not getting any data from the Growatt server to Domoticz

Log shows:

Code: Select all

 2022-11-20 12:11:35.192 Error: Growatt : Call to function 'onMessage' failed, exception details:
2022-11-20 12:11:35.194 Error: Growatt : Traceback (most recent call last):
2022-11-20 12:11:35.194 Error: Growatt : File "/home/pi/domoticz/plugins/domoticz-growatt-webserver-pvoutput-plugin/plugin.py", line 276, in onMessage
2022-11-20 12:11:35.194 Error: Growatt : _plugin.onMessage(Connection, Data)
2022-11-20 12:11:35.194 Error: Growatt : File "/home/pi/domoticz/plugins/domoticz-growatt-webserver-pvoutput-plugin/plugin.py", line 173, in onMessage
2022-11-20 12:11:35.194 Error: Growatt : apiResponse = json.loads(strData)
2022-11-20 12:11:35.194 Error: Growatt : File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
2022-11-20 12:11:35.194 Error: Growatt : return _default_decoder.decode(s)
2022-11-20 12:11:35.194 Error: Growatt : File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
2022-11-20 12:11:35.194 Error: Growatt : obj, end = self.raw_decode(s, idx=_w(s, 0).end())
2022-11-20 12:11:35.194 Error: Growatt : File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
2022-11-20 12:11:35.194 Error: Growatt : raise JSONDecodeError("Expecting value", s, err.value) from None
2022-11-20 12:11:35.194 Error: Growatt : json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

Does anyone have any idea what to make of this?

(or am I hijacking someones topic? )
Custodes Septentrionum
wifiminime
Posts: 4
Joined: Thursday 18 May 2017 22:06
Target OS: Linux
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by wifiminime »

i have the same issue for some time now...
Barneby
Posts: 1
Joined: Wednesday 07 March 2018 23:17
Target OS: -
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by Barneby »

I have to change the server address

in both Growatt Shinelink and Domoticz I'm using now server.growatt.com instead server-api.growatt.com

Maybe that will fix
User avatar
Rolandet
Posts: 95
Joined: Thursday 31 January 2019 21:11
Target OS: Raspberry Pi / ODroid
Domoticz version: 2021.1
Location: The Netherlands
Contact:

Re: Python Plugin: Growatt Inverter

Post by Rolandet »

Barneby wrote: Wednesday 30 November 2022 23:57 I have to change the server address

in both Growatt Shinelink and Domoticz I'm using now server.growatt.com instead server-api.growatt.com

Maybe that will fix
Is it possible you needed to use your emailadress instead of a username, and now it's username? (maybe that's what I got wrong, cause i've deleted and reinstalled, and now it works)
Custodes Septentrionum
janvdberg
Posts: 6
Joined: Friday 08 July 2022 18:25
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by janvdberg »

Anybody knows what's going on here?
Everything was working fine and now I get this error (I tried changing URLs and other settings to see if it triggered something, no success).

Code: Select all

2023-02-10 17:05:35 Queued asynchronous read aborted (server  . growatt . com:80), [2] End of file.
2023-02-10 17:05:35  GroWatt Web: Disconnect event received for 'server . growatt . com:80'.
2023-02-10 17:05:35 GroWatt Web: onDisconnect called for connection to: server . growatt . com:80
2023-02-10 17:06:35 GroWatt Web: Transport set to: 'TCP/IP', server . growatt . com:80.
2023-02-10 17:06:35 GroWatt Web: 38 38 30 66 33 64 30 38 30 64 36 38 31 61 62 64 61 39 38 37 880f3d080d681abda987
2023-02-10 17:06:35 GroWatt Web: --------['SERVERID=e2118838bdb1880f3d080d681abda987|1676045195|1676045195;Path=/']
2023-02-10 17:07:25 GroWatt Web: Processing 'onHeartbeatCallback' message
2023-02-10 17:07:25 GroWatt Web: Acquiring GIL for 'onHeartbeatCallback'
2023-02-10 17:07:25 GroWatt Web: Calling message handler 'onHeartbeat' on 'module' type object.
2023-02-10 17:07:25 GroWatt Web: onHeartbeat called, Connection is alive.
2023-02-10 17:07:25 GroWatt Web: Acquiring GIL for 'onHeartbeatCallback'
2023-02-10 17:07:35 Queued asynchronous read aborted (server . growatt . com:80), [2] End of file.
2023-02-10 17:07:35 GroWatt Web: Disconnect event received for 'server  .growatt . com:80'.
2023-02-10 17:07:35 GroWatt Web: onDisconnect called for connection to: server . growatt . com:80
(I editted the URLs so I could post this question)
janvdberg
Posts: 6
Joined: Friday 08 July 2022 18:25
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by janvdberg »

I did a little bit of debugging and the problem is that the Growatt plugin gets the following response:

Code: Select all

{"back":{"msg":"507","success":false}}
The result is that the plugin does nothing!

But the problem is not the plugin. The problem is the Growatt API.

Because this is the exact same response that I get when I curl the API:

Code: Select all

sudo curl -X POST -H "Content-Type': 'application/x-www-form-urlencoded; charset=utf-8" -d 'password=MYMD5PASSWORD&userName=MYNAME' http:// server-api . growatt . com / newTwoLoginAPI . do; echo
So either Growatt is ratelimiting? Or something else? Either way '507' is not a very descriptive API error.

If anyone knows what this means, I am happy to listen.
User avatar
Rolandet
Posts: 95
Joined: Thursday 31 January 2019 21:11
Target OS: Raspberry Pi / ODroid
Domoticz version: 2021.1
Location: The Netherlands
Contact:

Re: Python Plugin: Growatt Inverter

Post by Rolandet »

janvdberg wrote: Friday 10 February 2023 21:08 I did a little bit of debugging and the problem is that the Growatt plugin gets the following response:

Code: Select all

{"back":{"msg":"507","success":false}}
The result is that the plugin does nothing!

But the problem is not the plugin. The problem is the Growatt API.

Because this is the exact same response that I get when I curl the API:

Code: Select all

sudo curl -X POST -H "Content-Type': 'application/x-www-form-urlencoded; charset=utf-8" -d 'password=MYMD5PASSWORD&userName=MYNAME' http:// server-api . growatt . com / newTwoLoginAPI . do; echo
So either Growatt is ratelimiting? Or something else? Either way '507' is not a very descriptive API error.

If anyone knows what this means, I am happy to listen.
507 = insufficient storage on server side.

Totally no help to us as users, but just putting it out there :D
Custodes Septentrionum
janvdberg
Posts: 6
Joined: Friday 08 July 2022 18:25
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by janvdberg »

FWIW at EXACTLY 00:00 the plugin started receiving data again.

So I *think* the Growatt API does some kind of ratelimiting and resets this every day.
Screenshot 2023-02-11 11.33.41.png
Screenshot 2023-02-11 11.33.41.png (193.75 KiB) Viewed 2300 times
User avatar
waltervl
Posts: 5155
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2024.7
Location: NL
Contact:

Re: Python Plugin: Growatt Inverter

Post by waltervl »

See for example discussion here: https://github.com/indykoning/PyPi_Grow ... /issues/55
Seems 5 min polling is a good rate for keeping you unlocked.
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
User avatar
Rolandet
Posts: 95
Joined: Thursday 31 January 2019 21:11
Target OS: Raspberry Pi / ODroid
Domoticz version: 2021.1
Location: The Netherlands
Contact:

Re: Python Plugin: Growatt Inverter

Post by Rolandet »

At this very moment it seems the API is just not responding. The online dashboard is working fine, but with the same credentials I'm getting a 502 from the API

.
Custodes Septentrionum
janvdberg
Posts: 6
Joined: Friday 08 July 2022 18:25
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by janvdberg »

waltervl wrote: Saturday 11 February 2023 11:38 See for example discussion here: https://github.com/indykoning/PyPi_Grow ... /issues/55
Seems 5 min polling is a good rate for keeping you unlocked.
Where or how can I set the polling rate in Domoticz?
By inspecting the logs I can tell the polling occurs every 3 minutes, so I should be safe.

Three minutes is probably the default.
However I am still curious where you can change the polling interval in the Domoticz settings/interface?
User avatar
waltervl
Posts: 5155
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2024.7
Location: NL
Contact:

Re: Python Plugin: Growatt Inverter

Post by waltervl »

It cannot be changed, it is currently hardcoded in the plugin (6 heartbeats). The plugin author could add a setting parameter to be able to set polling to x minutes.
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
janvdberg
Posts: 6
Joined: Friday 08 July 2022 18:25
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by janvdberg »

waltervl wrote: Saturday 11 February 2023 23:19 It cannot be changed, it is currently hardcoded in the plugin (6 heartbeats). The plugin author could add a setting parameter to be able to set polling to x minutes.
I think I figured it out.

After a successful API call, the plugin does 12 heartbeats (10 seconds per beat = 2 minutes). After these hardcoded heartbeats the plugin uses the runAgain variable to determine after how many EXTRA beats it should do another API call. The default is 6 (6 x 10 = 1 minute). So effectively you get an API call every 3 minutes (2+1).

I changed the runAgain variable on line 83 and line 227 to 18 (=3 minutes): so now I get an API call every 5 minutes (2+3).

This can be observed in the logs:

Code: Select all

2023-02-12 21:45:45.089 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:45:55.065 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:05.092 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:15.070 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:25.090 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:35.057 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:45.088 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:55.070 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:05.093 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:15.064 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:25.083 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:35.059 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:45.083 GroWatt Web API: onHeartbeat called, run again in 17 heartbeats.
2023-02-12 21:47:55.059 GroWatt Web API: onHeartbeat called, run again in 16 heartbeats.
2023-02-12 21:48:05.080 GroWatt Web API: onHeartbeat called, run again in 15 heartbeats.
2023-02-12 21:48:15.053 GroWatt Web API: onHeartbeat called, run again in 14 heartbeats.
2023-02-12 21:48:25.076 GroWatt Web API: onHeartbeat called, run again in 13 heartbeats.
2023-02-12 21:48:35.099 GroWatt Web API: onHeartbeat called, run again in 12 heartbeats.
2023-02-12 21:48:45.067 GroWatt Web API: onHeartbeat called, run again in 11 heartbeats.
2023-02-12 21:48:55.096 GroWatt Web API: onHeartbeat called, run again in 10 heartbeats.
2023-02-12 21:49:05.065 GroWatt Web API: onHeartbeat called, run again in 9 heartbeats.
2023-02-12 21:49:15.090 GroWatt Web API: onHeartbeat called, run again in 8 heartbeats.
2023-02-12 21:49:25.070 GroWatt Web API: onHeartbeat called, run again in 7 heartbeats.
2023-02-12 21:49:35.094 GroWatt Web API: onHeartbeat called, run again in 6 heartbeats.
2023-02-12 21:49:45.069 GroWatt Web API: onHeartbeat called, run again in 5 heartbeats.
2023-02-12 21:49:55.093 GroWatt Web API: onHeartbeat called, run again in 4 heartbeats.
2023-02-12 21:50:05.070 GroWatt Web API: onHeartbeat called, run again in 3 heartbeats.
2023-02-12 21:50:15.091 GroWatt Web API: onHeartbeat called, run again in 2 heartbeats.
2023-02-12 21:50:25.059 GroWatt Web API: onHeartbeat called, run again in 1 heartbeats.
2023-02-12 21:50:35.095 GroWatt Web API: Transport set to: 'TCP/IP', server-api . growatt . com : 80.
2023-02-12 21:50:35.105 GroWatt Web API: Connect directive received, action initiated successfully.
2023-02-12 21:50:35.155 GroWatt Web API: Growatt connected successfully.
Pvhpsb
Posts: 15
Joined: Tuesday 20 January 2015 13:38
Target OS: NAS (Synology & others)
Domoticz version:
Location: Prinsenbeek
Contact:

Re: Python Plugin: Growatt Inverter

Post by Pvhpsb »

Thanks works fine.
Hemingr
Posts: 1
Joined: Tuesday 09 May 2023 20:23
Target OS: -
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by Hemingr »

Hello everyone,

I hope I am not intruding as a new user. I found this plugin after configuring my new PV into Domoticz and I can't get the right output I think.


As you can see on the devices page the correct total generation is given (116kWh) but on the dashboard I get a duplication of the current wattage.

Am I doing something wrong? I tried reinstalling the plugin but to no avail.

I was hoping one of you experts could shed light on this?
Attachments
Screenshot 2023-05-09 at 20.26.16.png
Screenshot 2023-05-09 at 20.26.16.png (80.55 KiB) Viewed 1893 times
Screenshot 2023-05-09 at 20.26.33.png
Screenshot 2023-05-09 at 20.26.33.png (43.07 KiB) Viewed 1893 times
User avatar
waltervl
Posts: 5155
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2024.7
Location: NL
Contact:

Re: Python Plugin: Growatt Inverter

Post by waltervl »

This is normal behavior, just let it run a couple of days and you will see how it works.
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
rensbr
Posts: 61
Joined: Friday 27 July 2018 19:01
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin: Growatt Inverter

Post by rensbr »

janvdberg wrote: Monday 13 February 2023 7:51
waltervl wrote: Saturday 11 February 2023 23:19 It cannot be changed, it is currently hardcoded in the plugin (6 heartbeats). The plugin author could add a setting parameter to be able to set polling to x minutes.
I think I figured it out.

After a successful API call, the plugin does 12 heartbeats (10 seconds per beat = 2 minutes). After these hardcoded heartbeats the plugin uses the runAgain variable to determine after how many EXTRA beats it should do another API call. The default is 6 (6 x 10 = 1 minute). So effectively you get an API call every 3 minutes (2+1).

I changed the runAgain variable on line 83 and line 227 to 18 (=3 minutes): so now I get an API call every 5 minutes (2+3).

This can be observed in the logs:

Code: Select all

2023-02-12 21:45:45.089 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:45:55.065 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:05.092 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:15.070 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:25.090 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:35.057 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:45.088 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:46:55.070 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:05.093 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:15.064 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:25.083 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:35.059 GroWatt Web API: onHeartbeat called, Connection is alive.
2023-02-12 21:47:45.083 GroWatt Web API: onHeartbeat called, run again in 17 heartbeats.
2023-02-12 21:47:55.059 GroWatt Web API: onHeartbeat called, run again in 16 heartbeats.
2023-02-12 21:48:05.080 GroWatt Web API: onHeartbeat called, run again in 15 heartbeats.
2023-02-12 21:48:15.053 GroWatt Web API: onHeartbeat called, run again in 14 heartbeats.
2023-02-12 21:48:25.076 GroWatt Web API: onHeartbeat called, run again in 13 heartbeats.
2023-02-12 21:48:35.099 GroWatt Web API: onHeartbeat called, run again in 12 heartbeats.
2023-02-12 21:48:45.067 GroWatt Web API: onHeartbeat called, run again in 11 heartbeats.
2023-02-12 21:48:55.096 GroWatt Web API: onHeartbeat called, run again in 10 heartbeats.
2023-02-12 21:49:05.065 GroWatt Web API: onHeartbeat called, run again in 9 heartbeats.
2023-02-12 21:49:15.090 GroWatt Web API: onHeartbeat called, run again in 8 heartbeats.
2023-02-12 21:49:25.070 GroWatt Web API: onHeartbeat called, run again in 7 heartbeats.
2023-02-12 21:49:35.094 GroWatt Web API: onHeartbeat called, run again in 6 heartbeats.
2023-02-12 21:49:45.069 GroWatt Web API: onHeartbeat called, run again in 5 heartbeats.
2023-02-12 21:49:55.093 GroWatt Web API: onHeartbeat called, run again in 4 heartbeats.
2023-02-12 21:50:05.070 GroWatt Web API: onHeartbeat called, run again in 3 heartbeats.
2023-02-12 21:50:15.091 GroWatt Web API: onHeartbeat called, run again in 2 heartbeats.
2023-02-12 21:50:25.059 GroWatt Web API: onHeartbeat called, run again in 1 heartbeats.
2023-02-12 21:50:35.095 GroWatt Web API: Transport set to: 'TCP/IP', server-api . growatt . com : 80.
2023-02-12 21:50:35.105 GroWatt Web API: Connect directive received, action initiated successfully.
2023-02-12 21:50:35.155 GroWatt Web API: Growatt connected successfully.
That seems to do the trick. But I still had problems with locking accounts. So I changed the value to 24 today. Now wait and see if that will work better.
woppybob
Posts: 2
Joined: Saturday 10 February 2018 19:07
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Hoogeveen The Netherlands
Contact:

Re: Python Plugin: Growatt Inverter

Post by woppybob »

I have the same problem, keeps getting blocked by Growatt. Is there a solution for this as well. Have changed the setting to 24.

Verstuurd vanaf mijn Pixel 6 met Tapatalk

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests