johanmeijer / grott Goto Github PK
View Code? Open in Web Editor NEWGrowatt inverter monitor
Home Page: https://github.com/johanmeijer/grott/wiki
Growatt inverter monitor
Home Page: https://github.com/johanmeijer/grott/wiki
It would be nice to be able to store the Growatt data locally.
Adding and maintaining a file structure for this is complex. With the InfluxDB time series Database (Open Source, also available on docker: https://www.influxdata.com/products/influxdb/ ) it is very easy to store unstructured (JSON) data. With INFLUXDB policies the data can easily be reduced (by continuous queries) or expired (retention policies) .
It also provides easy reporting with tools like Grafana (https://grafana.com/).
Can an interface to influxdb be added to Grott?
The docker support wiki entry is incorrect (https://github.com/johanmeijer/grott/wiki/Docker-support)
docker run -d --network=host --restart on-failure -e gnomqtt="True" -e gblockcmd="True" -e pvoutput="True" -e gpvapikey="apikey" -e pvsystemid="systemid" ledidobe/grott
should read
docker run -d --network=host --restart on-failure -e gnomqtt="True" -e gblockcmd="True" -e gpvoutput="True" -e gpvapikey="apikey" -e gpvsystemid="systemid" ledidobe/grott
(note the missing leading "g" on pvoutput and pvsystemid).
Johan,
Every day I god a time error. Bad request 400
After restart van Gott the problem is (for 1 day) over.
wat can i do?
see:
2020-11-02 10:12:58,stdout, - Bad request 400: Invalid Time [39:77]
2020-11-02 10:12:58,stdout, - Grott PVOutput response:
2020-11-02 10:12:57,stdout," - {'d': '20330000', 't': '39:77', 'v1': 800, 'v2': 1848.1, 'v6': 412.3}
"
2020-11-02 10:12:57,stdout, - Grott send data to PVOutput :
2020-11-02 10:12:57,stdout," - No MQTT message sent, MQTT disabled
"
2020-11-02 10:12:57,stdout, "pvipmtemperature": 349}}
2020-11-02 10:12:57,stdout," 3673, "pv1current": 36, "pv2current": 35, "pvtemperature": 323,
"
2020-11-02 10:12:57,stdout," "pvenergytoday": 8, "pvenergytotal": 2659, "pv1voltage": 3001, "pv2voltage":
"
2020-11-02 10:12:57,stdout," 23658, "pvpowerout": 18481, "pvfrequentie": 5001, "pvgridvoltage": 4123,
"
2020-11-02 10:12:57,stdout," "values": {"pvstatus": 1, "pv1watt": 10803, "pv2watt": 12855, "pvpowerin":
"
2020-11-02 10:12:57,stdout," {"device": "HVE3A21041", "time": "2033-00-00T39:77:77", "buffered": "no",
"
2020-11-02 10:12:57,stdout, - MQTT jsonmsg:
2020-11-02 10:12:57,stdout, - pvipmtemperature: 34.9
2020-11-02 10:12:57,stdout, - pvtemperature: 32.3
2020-11-02 10:12:57,stdout, - pv2current: 3.5
2020-11-02 10:12:57,stdout, - pv2voltage: 367.3
2020-11-02 10:12:57,stdout, - pv1current: 3.6
2020-11-02 10:12:57,stdout, - pv1voltage: 300.1
2020-11-02 10:12:57,stdout, - pvgridvoltage: 412.3
2020-11-02 10:12:57,stdout, - pvfrequentie: 50.01
2020-11-02 10:12:57,stdout, - pv2watt: 1285.5
2020-11-02 10:12:57,stdout, - pv1watt: 1080.3
2020-11-02 10:12:57,stdout, - pvenergytotal: 265.9
2020-11-02 10:12:57,stdout, - pvenergytoday: 0.8
2020-11-02 10:12:57,stdout, - pvpowerout: 1848.1
2020-11-02 10:12:57,stdout, - pvpowerin: 2365.8
2020-11-02 10:12:57,stdout, - pvstatus: 1
2020-11-02 10:12:57,stdout, - pvserial: HVE3A21041
2020-11-02 10:12:57,stdout, - Grott values retrieved:
2020-11-02 10:12:57,stdout, - 2033-00-00T39:77:77
2020-11-02 10:12:57,stdout, - Grott data record date/time processing started
2020-11-02 10:12:57,stdout,
2020-11-02 10:12:57,stdout, - record layout : T060104
2020-11-02 10:12:57,stdout, - offset : 6
2020-11-02 10:12:57,stdout, - decrypt : True
2020-11-02 10:12:57,stdout, - Growatt new layout processing
2020-11-02 10:12:57,stdout, 000000000000000000000000000000000000000000000000000000000000000071d4
2020-11-02 10:12:57,stdout, 0051600000b220000000000000000000000000000000000230001117000000000000000000000
2020-11-02 10:12:57,stdout, 00000000000000015d0c280bff0000002d00594e2000000000000000040000060c00000005000
2020-11-02 10:12:57,stdout, 043002000001dfb1015002100001e930000000800000a63001e5e2b0143000000000000000000
2020-11-02 10:12:57,stdout, 002c000100005c6a0bb9002400002a330e59002300003237000048311389101b002200001f8c1
2020-11-02 10:12:57,stdout, 85645334132313034310000000000000000000000000000000000000000210000274d4d020000
2020-11-02 10:12:57,stdout, 005d0006010101044a50433641323731583200000000000000000000000000000000000000004
2020-11-02 10:12:57,stdout, - Growatt plain data:
2020-11-02 10:12:57,stdout, - Growatt data decrypted V2
2020-11-02 10:12:57,stdout, - decrypt : True
2020-11-02 10:12:57,stdout, - layout : T060104
2020-11-02 10:12:57,stdout, - Grott data record length 265
2020-11-02 10:12:57,stdout, - Grott automatic protocol detection
2020-11-02 10:12:57,stdout, \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x06\xb5
2020-11-02 10:12:57,stdout, \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
2020-11-02 10:12:57,stdout, \x74\x74\x47\x72\x6f\x77\x61\x57\x74\x46\x63\x1f\x77\x61\x74\x74\x47\x72\x6f
2020-11-02 10:12:57,stdout, \x42\x72\x6f\x72\x77\x74\x74\x4c\x50\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
2020-11-02 10:12:57,stdout, \x6f\x2e\x2f\x54\x74\x47\x72\x6f\x77\x61\x74\x70\x47\x72\x69\x7b\x61\x74\x74
2020-11-02 10:12:57,stdout, \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x75\x1a\x7e\x47\x7c\x9e\x74\x74\x47\x5f
2020-11-02 10:12:57,stdout, \x74\x4f\x72\x6f\x7d\x02\x74\x6a\x19\x59\x6e\x34\x61\x74\x74\x47\x72\x6f\x77
2020-11-02 10:12:57,stdout, \xfe\x7f\x34\x61\x54\x74\x47\x6f\x94\x67\x74\x74\x55\x47\x72\x71\xe4\x61\x74
2020-11-02 10:12:57,stdout, \x77\x42\x74\x74\x75\x45\x6f\x77\x29\x45\x67\xce\x62\x74\x77\x43\x74\x74\x58
2020-11-02 10:12:57,stdout, \x74\x74\x6b\x72\x6e\x77\x61\x28\x1e\x4c\xcb\x6f\x53\x61\x74\x5e\x74\x7c\x36
2020-11-02 10:12:57,stdout, \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x40\x74\x74\x60\x3f\x22\x75\x61
2020-11-02 10:12:57,stdout, \x27\x21\x24\x47\x35\x75\x43\x5f\x43\x50\x74\x74\x47\x72\x6f\x77\x61\x74\x74
2020-11-02 10:12:57,stdout, \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
2020-11-02 10:12:57,stdout, \x00\x5d\x00\x06\x01\x01\x01\x04\x0d\x22\x2c\x41\x20\x46\x43\x76\x2a\x5d\x77
2020-11-02 10:12:57,stdout, - Growatt original Data:
2020-11-02 10:12:57,stdout," <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.17.0.3', 56008), raddr=('47.91.67.66', 5279)>
"
2020-11-02 10:12:57,stdout, - Growatt packet received:
As mentioned before I'm trying to get grott running on my hassnuc with Ubuntu Server 18.04. On that system I have also Home Asssistant and two seperate other docker programs running. Adding grott to this should be great, because the nuc is already running.
I didn't got this working earlier, so I opted for the easy way out by starting my Pizero W and adding grott. That went smoothly :)
Now I've tried to start it on my nuc again by following your tutorial for the Pi. I've got this far:
/proc/sys/net/ipv4/ip_forward
exists and contains a 0 initially. Changed that to 1/etc/sysctl.conf
exists and I've rempved the # before the line that says net.ipv4.ip_forward = 1
sudo iptables -t nat -A PREROUTING -p tcp --dport 5279 -j DNAT --to-destination 47.91.67.66:5279
is also done nicelysudo iptables -t nat -A POSTROUTING -j MASQUERADE
can also be added, but slows the response of the NUC way down.After adding the POSTROUTING rule the NUC response is very slow and the data isn't send through to server.growatt.com. Therefore no communication is set up which can be sniffed on the NUC> Data from the ShineWifi stick is sent to the NUC as can be seen during the -t option output.
Since I have no knowledge of routing the data. I have no idea what's going on and where to search for the solution.
Home Assistant also adds rules to the iptables. Don't know if they might be conflicting.
Can someone with more knowledge of iptables help me?
Hi just signed up to github downloaded the grott-2.1.1-Beta- and extracted it i have a shinwifi-x and im just wondering if someone can help run me through setting this up end goal is to have pvoutput website running with automatic data update im using windows 10 for now..
Hi All, do you have any plan to support Shinemaster?
I just got my pv panels installed and turned on this morning and am finally generating power! As part of my install, I setup grott to output my generation data to pvoutput but am not seeing any generation data show up at pvoutput.
I configured my Growatt Shinelink to point my my internal docker image. This appears to be working because when I check the logs of my docker image, I'm receiving packets and they appear to be getting parsed. I'm also receiving generation data at server.growatt.com and can monitor production there so it looks like the proxy functionality is working properly.
The docker-compose.yml file I'm using is:
version: "2"
services:
grott:
image: ledidobe/grott
container_name: grott
network_mode: host
environment:
- gblockcmd=False
- gnomqtt=True
- gpvoutput=True
- gpvapikey=**********************
- gpvsystemid=*****
ports:
- 5279:5279
restart: unless-stopped
The Growatt Shinelink Logger is a GKB4827095; Hardware Version V1.0, Firmware Version 1.0.6.9.
I have two inverters, both are 10000MTLP-US, S/N: DAA*****
Here is the last 100 lines of the log file:
2020-11-13T16:37:49.449568608Z ,
2020-11-13T16:37:49.449606710Z - Growatt packet received:,
2020-11-13T16:37:49.449739339Z <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 5279), raddr=('192.168.1.146', 1029)>,
2020-11-13T16:37:49.449778208Z - Data less then minimum record length, data not processed,
2020-11-13T16:40:49.751385564Z ,
2020-11-13T16:40:49.751430171Z - Growatt packet received:,
2020-11-13T16:40:49.751488636Z <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 58996), raddr=('47.91.67.66', 5279)>,
2020-11-13T16:40:49.751504195Z - Data less then minimum record length, data not processed,
2020-11-13T16:40:49.893665673Z ,
2020-11-13T16:40:49.893683926Z - Growatt packet received:,
2020-11-13T16:40:49.893739657Z <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 5279), raddr=('192.168.1.146', 1029)>,
2020-11-13T16:40:49.893756849Z - Data less then minimum record length, data not processed,
2020-11-13T16:41:55.186392530Z ,
2020-11-13T16:41:55.186438547Z - Growatt packet received:,
2020-11-13T16:41:55.186474763Z <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 58996), raddr=('47.91.67.66', 5279)>,
2020-11-13T16:41:55.186552207Z - Growatt original Data:,
2020-11-13T16:41:55.187840927Z \x00\x0f\x00\x05\x01\x37\x51\x04\x00\x39\x2d\x43\x59\x46\x43\x77\x4b\x5a\x33,
2020-11-13T16:41:55.187878863Z \x20\x35\x47\x7f\x46\x5c\x47\x56\x37\x74\x47\x72\x6f\x77\x61\x77\x74\x47\x72,
2020-11-13T16:41:55.187892258Z \x43\x77\x60\x74\x74\xcf\x46\x65\x85\x61\x48\x74\x47\x36\x10\x7c\x37\x74\x6f,
2020-11-13T16:41:55.187904246Z \x47\x72\x4f\xd2\x61\x74\xf1\x3c\x65\x03\x7e\xf3\x74\xff\x47\x72\xea\xfd\x61,
2020-11-13T16:41:55.187916082Z \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x12,
2020-11-13T16:41:55.187927775Z \x77\x61\x75\xc6\x47\x73\x7d\xf5\x60\x52\x74\x47\x71\xf4\x77\x61\x74\x74\x47,
2020-11-13T16:41:55.187939558Z \x72\x6f\x77\x61\x74\x74\x47\x73\x4a\x79\xa8\x74\x74\x47\x72\x6f\x5a\x61\x2d,
2020-11-13T16:41:55.187952048Z \x3a\x67\x72\x6f\x77\x61\x74\x74\x47\x33\x6f\x77\x61\xab\x74\x47\x72\x70\x77,
2020-11-13T16:41:55.187963898Z \x61\x74\x19\x47\x72\x6e\xcd\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72,
2020-11-13T16:41:55.187975680Z \x6f\x77\x61\x74\x74\x66\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74,
2020-11-13T16:41:55.187987503Z \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61,
2020-11-13T16:41:55.187999156Z \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x2e\x47\xf4\x6f,
2020-11-13T16:41:55.188010742Z \x6e\x75\x7e\x65\x55\x60\x6f\x77\x61\x74\x6d\x56\x73\x6b\x74\x64\x69\x74\x47,
2020-11-13T16:41:55.188022338Z \x72\x76\x66\x60\x70\x76\x75\x49\x6f\x77\x61\x6d\x65\x46\x73\x6f\x77\x6e\x74,
2020-11-13T16:41:55.188033849Z \x74\x47\x72\x7e\x76\x60\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77,
2020-11-13T16:41:55.188045333Z \x61\x74\x7f\x10\x72\x4b\x77\x61\x5a\x1f\x47\x72\x6f\x57\x61\x74\x74\x29\x72,
2020-11-13T16:41:55.188056946Z \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x6a\x90,
2020-11-13T16:41:55.188089910Z - Grott automatic protocol detection,
2020-11-13T16:41:55.188100267Z - Grott data record length 319,
2020-11-13T16:41:55.188109417Z - layout : T055104,
2020-11-13T16:41:55.189989192Z - Growatt data decrypted V2,
2020-11-13T16:41:55.190024257Z - Growatt plain data:,
2020-11-13T16:41:55.190431429Z 000f000501375104474b423438323730393544414133383433303743000000000000030000002,
2020-11-13T16:41:55.190472412Z c0001000088340af2003c0000447f0b56001b000020a50000857b176c0992008b0000858a0000,
2020-11-13T16:41:55.190485001Z 00000000000000000000000000000000007d000001b20001128201260000039b0000000000000,
2020-11-13T16:41:55.190495671Z 0000000000001250ec900000000002d00594e200000000000000041000000df0000001f000000,
2020-11-13T16:41:55.190506525Z 6d000001ba0000000000000000000000000000000000210000000000000000000000000000000,
2020-11-13T16:41:55.190517170Z 0000000000000000000000000000000000000000000000000000000000000005a00860019140a,
2020-11-13T16:41:55.190528000Z 111212000000001911010403051d0000001911010402323b0000001911010100000f000000001,
2020-11-13T16:41:55.190552220Z 101010000000000000000000000000000000b57002400002e6b000000200000006e0000000000,
2020-11-13T16:41:55.190562869Z 00000000000000000018ff,
2020-11-13T16:41:55.190573363Z - Grott data ack record or data record not defined no processing done,
2020-11-13T16:41:55.297328057Z ,
2020-11-13T16:41:55.297365012Z - Growatt packet received:,
2020-11-13T16:41:55.297399471Z <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 5279), raddr=('192.168.1.146', 1029)>,
2020-11-13T16:41:55.297508029Z - Data less then minimum record length, data not processed,
2020-11-13T16:41:59.837971594Z ,
2020-11-13T16:41:59.838014141Z - Growatt packet received:,
2020-11-13T16:41:59.838218504Z <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 58996), raddr=('47.91.67.66', 5279)>,
2020-11-13T16:41:59.838243631Z - Growatt original Data:,
2020-11-13T16:41:59.839572777Z \x00\x10\x00\x05\x01\x37\x52\x04\x00\x39\x2d\x43\x59\x46\x43\x77\x4b\x5a\x33,
2020-11-13T16:41:59.839613154Z \x20\x35\x47\x7f\x46\x5c\x46\x50\x36\x74\x47\x72\x6f\x77\x61\x77\x74\x47\x72,
2020-11-13T16:41:59.839627136Z \x43\x77\x60\x74\x74\xdb\x5a\x64\xb6\x61\x4b\x74\x47\x20\x39\x7e\x0c\x74\x56,
2020-11-13T16:41:59.839639495Z \x47\x72\x4c\x9e\x61\x74\xfb\x28\x65\x01\x7e\xf4\x74\xe3\x47\x72\xe0\x09\x61,
2020-11-13T16:41:59.839651487Z \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x17,
2020-11-13T16:41:59.839663219Z \x77\x61\x75\x54\x47\x73\x7d\xee\x60\x53\x74\x47\x71\x06\x77\x61\x74\x74\x47,
2020-11-13T16:41:59.839693989Z \x72\x6f\x77\x61\x74\x74\x47\x73\x4a\x79\xaf\x74\x74\x47\x72\x6f\x5a\x61\x2d,
2020-11-13T16:41:59.839706538Z \x3a\x67\x72\x6f\x77\x61\x74\x74\x47\x4d\x6f\x77\x61\x3a\x74\x47\x72\x72\x77,
2020-11-13T16:41:59.839718150Z \x61\x74\x19\x47\x72\x6e\x52\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72,
2020-11-13T16:41:59.839730037Z \x6f\x77\x61\x74\x74\x64\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74,
2020-11-13T16:41:59.839741779Z \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61,
2020-11-13T16:41:59.839753410Z \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x2e\x47\xf4\x6f,
2020-11-13T16:41:59.839765152Z \x6e\x75\x7e\x65\x55\x63\x55\x77\x61\x74\x6d\x56\x73\x66\x77\x6c\x64\x74\x47,
2020-11-13T16:41:59.839776634Z \x72\x76\x66\x60\x71\x61\x4c\x63\x6f\x77\x61\x6d\x65\x46\x73\x6f\x77\x6e\x74,
2020-11-13T16:41:59.839788085Z \x74\x47\x72\x7e\x76\x60\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77,
2020-11-13T16:41:59.839799606Z \x61\x74\x7e\x39\x72\x72\x77\x61\x55\x1b\x47\x72\x6f\x68\x61\x74\x74\x2d\x72,
2020-11-13T16:41:59.839811263Z \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x5f\x9f,
2020-11-13T16:41:59.839823401Z - Grott automatic protocol detection,
2020-11-13T16:41:59.839833900Z - Grott data record length 319,
2020-11-13T16:41:59.839844514Z - layout : T055204,
2020-11-13T16:41:59.841817723Z - Growatt data decrypted V2,
2020-11-13T16:41:59.841853285Z - Growatt plain data:,
2020-11-13T16:41:59.842237277Z 0010000501375204474b423438323730393544414133383433313142000000000000030000002,
2020-11-13T16:41:59.842252826Z c000100009c280bc1003f00005256096d0022000023e900008f6f176e0995009700008f7e0000,
2020-11-13T16:41:59.842257797Z 00000000000000000000000000000000007800000120000112990127000003690000000000000,
2020-11-13T16:41:59.842262346Z 0000000000001250ece00000000002d00594e20000000000000003f0000004e0000001d000000,
2020-11-13T16:41:59.842266913Z 6d000001250000000000000000000000000000000000230000000000000000000000000000000,
2020-11-13T16:41:59.842271295Z 0000000000000000000000000000000000000000000000000000000000000005a00860019140a,
2020-11-13T16:41:59.842275769Z 1112113a00000019110109000d1000000019110105150b110000001911010100000f000000001,
2020-11-13T16:41:59.842280145Z 101010000000000000000000000000000000a7e001d0000216f0000001f0000006a0000000000,
2020-11-13T16:41:59.842284525Z 0000000000000000002df0,
2020-11-13T16:41:59.842288959Z - Grott data ack record or data record not defined no processing done,
2020-11-13T16:41:59.947063029Z ,
2020-11-13T16:41:59.947092637Z - Growatt packet received:,
2020-11-13T16:41:59.947186267Z <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 5279), raddr=('192.168.1.146', 1029)>,
2020-11-13T16:41:59.947217102Z - Data less then minimum record length, data not processed,
2020-11-13T16:43:50.320288024Z ,
2020-11-13T16:43:50.320345145Z - Growatt packet received:,
2020-11-13T16:43:50.320436459Z <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 58996), raddr=('47.91.67.66', 5279)>,
2020-11-13T16:43:50.320478706Z - Data less then minimum record length, data not processed,
2020-11-13T16:43:50.508270327Z ,
2020-11-13T16:43:50.508297583Z - Growatt packet received:,
2020-11-13T16:43:50.508353632Z <socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.2.145', 5279), raddr=('192.168.1.146', 1029)>,
2020-11-13T16:43:50.508385493Z - Data less then minimum record length, data not processed,
Using a Growatt MIN 3600TL-XE with a ShineLink-X here.
Could it be that this combination generates a different payload?
I constantly get the same two read result values, either
-Growatt processing values for: XXXXXXXXXX
- pvserial: XXXXXXXXXX
- pvstatus: 0
- pvpowerin: 0.0
- pvpowerout: 0.2
- pvenergytoday: 80532947.3
- pvenergytotal: 111155609.7
- pv1watt: 0.0
- pv2watt: 0.0
- pvfrequentie: 0.0
- pvgridvoltage: 12.4
- pv1voltage: 0.0
- pv1current: 0.0
- pv2voltage: 0.0
- pv2current: 0.0
- pvtemperature: 100.0
- pvipmtemperature: 1233.6
as a successful read, or
-Growatt processing values for: XXXXXXXXXX
- pvserial: XXXXXXXXXX
- pvstatus: 0
- pvpowerin: 0.0
- pvpowerout: 0.2
- pvenergytoday: 0.0
- pvenergytotal: 0.0
- pv1watt: 0.0
- pv2watt: 0.0
- pvfrequentie: 30.0
- pvgridvoltage: 312.4
- pv1voltage: 0.0
- pv1current: 0.0
- pv2voltage: 0.0
- pv2current: 0.0
- pvtemperature: 0.0
- pvipmtemperature: 234.5
as an incomplete read.
The data on the growatt server side is fine.
Hi Johan,
I've got this message from one of my growatt inverters : it seems that no data is processed ?
Can you help me with this ? thanks in advance.
#11 - Growatt original Data:
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x00\x01\x00\x02\x00\x21\x01\x19\x41\x48\x32\x34\x30\x33\x30\x35\x39\x30\x00
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x10\x00\x11\x41\x43\x3a\x43\x46\x3a\x32\x33\x3a\x30\x36\x3a\x35\x33\x3a\x38
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x39\x00\x01\x00\x02\x00\x19\x01\x19\x41\x48\x32\x34\x30\x33\x30\x35\x39\x30
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x00\x11\x00\x09\x31\x30\x2e\x30\x2e\x33\x2e\x31\x35\x00\x01\x00\x02\x00\x14
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x01\x19\x41\x48\x32\x34\x30\x33\x30\x35\x39\x30\x00\x12\x00\x04\x35\x32\x37
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x39\x00\x01\x00\x02\x00\x19\x01\x19\x41\x48\x32\x34\x30\x33\x30\x35\x39\x30
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x00\x13\x00\x09\x31\x30\x2e\x30\x2e\x33\x2e\x31\x35\x00\x01\x00\x02\x00\x17
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x01\x19\x41\x48\x32\x34\x30\x33\x30\x35\x39\x30\x00\x15\x00\x07\x32\x2e\x30
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 \x2e\x30\x2e\x30
Nov 11 09:01:38 growatt-proxy grott[1357]: #11 - Grott automatic protocol detection
Nov 11 09:01:38 growatt-proxy grott[1357]: #11 - Grott data record length 156
Nov 11 09:01:38 growatt-proxy grott[1357]: #11 - layout : T020119
Nov 11 09:01:38 growatt-proxy grott[1357]: #11 - Growatt unencrypted data used
Nov 11 09:01:38 growatt-proxy grott[1357]: #11 - Growatt plain data:
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 0001000200210119414832343033303539300010001141433a43463a32333a30363a35333a383
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 90001000200190119414832343033303539300011000931302e302e332e313500010002001401
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 19414832343033303539300012000435323739000100020019011941483234303330353930001
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 3000931302e302e332e313500010002001701194148323430333035393000150007322e302e30
Nov 11 09:01:38 growatt-proxy grott[1357]: #11#011 2e30
Nov 11 09:01:38 growatt-proxy grott[1357]: #11 - Grott data ack record or data record not defined no processing done
Hi,
Do not have much experience with the Rpi and python, but how do I run this ?
I now do: python ./grott.py
but this throws an error as you can see below.
Do I need to change rights (chmod) things or somehting ?
I just did a clone from git on the Rpi.
Hop you can help me out..
pi@raspberrypi:~/grott $ python ./grott.py
File "./grott.py", line 27
if conf.verbose: conf.print()
^
SyntaxError: invalid syntax
I created a new version: 2.4.0 that support extensions.
With this you can add your own data processing to Grott.
I created an example extension that writes(HTTP put) the Grott data to a http server.
At this moment Grott 2.4.0 can be found in the 2.4 branche.
Short how to use:
Copy grottext.py from the github example directory into the Grott main directory (change the coding if you want).
Add in the grott ini:
[extension]
extension = True
extname = grottext
extvar = {"ip": "<your server url>", "port": "<your server port>"}
In the extension the following data is available:
Be aware: It is under development and might not work as expected.
I am really curious if this is something that is going to be used. I like to see your extensions and will add them to a sample directory in the github repository.
I got another sniffer running to locally read out my ShineWifi stick. But we ran into problems with the energy message. And you seems to have solved it :) So I would like to test it.
But I have authentication on my MQTT server. I can probably do a test and disable the authentication. But I'm not comfortable with leaving it that way.
Can you add MQTT-authentication to your Python script?
Hi,
I have a SPH5000 inverter installed, including also a meter in my main electrical board, which is also measuring by load consumption. I'm able to see the measured load consumption values in growatt server.
Is grott able to also record those values from load consumption or only the ones regarding energy production?
Thanks
json i got is in version 1.0.8
{
"device": "xxxxxxxxxx",
"time": "2020-04-04T12:38:06",
"values": {
"pvstatus": 1,
"pv1watt": 6,
"pv2watt:": 18056,
"pvpowerout": 17493,
"pvfrequentie": 5000,
"pvgridvoltage": 2458,
"pvenergytoday": 74,
"pvenergytotal": 1601
}
}
But pv2watt has another : in it: "pv2watt:": 18056,
should be "pv2watt": 18056,
Just a bit confusing :)
Hi,
Closed the other thread, as that one was about running the software, which is ok now...
But... I think there is still an issue.. the offset ? does not look quite ok.
The output is like this and as far as I can see, Wattage of PV1 and PV2 are fine but things like enegry today and energy total make no sense at all... (should be 11.6kwh and 13.8 kwh)
Here is the data ouput:
-Growatt plain data:
00cd726a757825704e41433439343130414644444630413039313132000000000000020bb80c3
40001000006fd07ad0003000002c3077a00050000043a00000000000000000000000000000000
00000000000000000000068c1385091b00090000069c000000000000000000000000000000000
91b000000000000000000000000000000000001fa7b000000740000008a0000008f0000003500
00003f00000043000000500000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000fffa00000000000000000000013b013b0000
000001910dff00004e20000400000000000000000000000000000000000000000000000000000
03c0000000000000000000000000000000000000c350cb1000000000000000000000000000000
0000000000000000000000000000000000000000000000000013850912000a000006960000000
00000000000000000000000000000069f00284e20000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
0000000052aa47726f25cb
-Growatt processing values for: DDF0A09112
- pvserial: DDF0A09112
- pvstatus: 1
- pvpowerin: 178.9
- pvpowerout: 0.0
- pvenergytoday: 15276442.5
- pvenergytotal: 169.2
- pv1watt: 70.7
- pv2watt: 108.2
- pvfrequentie: 0.0
- pvgridvoltage: 0.0
- pv1voltage: 196.5
- pv1current: 0.3
- pv2voltage: 191.4
- pv2current: 0.5
- pvtemperature: 0.0
- pvipmtemperature: 0.0
- MQTT jsonmsg:
{"device": "DDF0A09112", "time": "2020-06-08T18:16:56", "values":
{"pvstatus": 1, "pv1watt": 707, "pv2watt": 1082, "pvpowerin": 1789,
"pvpowerout": 0, "pvfrequentie": 0, "pvgridvoltage": 0, "pvenergytoday":
152764425, "pvenergytotal": 1692, "pv1voltage": 1965, "pv2voltage": 1914,
"pv1current": 3, "pv2current": 5, "pvtemperature": 0, "pvipmtemperature":
0}}
- MQTT message message sent
HI I have run Grott by docker (with docker-compose) en send it to influxdb v1 (also in a docker container) only
I have reroute the Growatt data as descipt here (https://github.com/johanmeijer/grott/wiki/Rerouting-Growatt-Wifi-TCPIP-data-via-your-Grott-Server) .
But i don't see data in de logs of grott (will it shown here?) and not see any data in influxdb.
Did i have the correct settings?
Grott Growatt logging monitor : 2.4.0
Grott Command line parameters processed:
verbose: True
config file: grott.ini
output file: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
nomqtt: False
inverterid: automatic
pvoutput: False
blockcmd: False
noipf: False
Grott process configuration file
Grott process environmental variables
Grott MQTT server IP address env invalid
Grott override settings if set in commandline
Grott process json layout files
Grott layout records loaded
T02NNNN :
{'decrypt': 'False', 'pvserial': 36, 'date': 56, 'pvstatus': 78, 'pvpowerin': 82, 'pv1voltage': 90, 'pv1current': 94, 'pv1watt': 98, 'pv2voltage': 106, 'pv2current': 110, 'pv2watt': 114, 'pvpowerout': 122, 'pvfrequentie': 130, 'pvgridvoltage': 134, 'pvenergytoday': 182, 'pvenergytotal': 190, 'pvtemperature': 206, 'pvipmtemperature': 242}
T05NNNN :
{'decrypt': 'True', 'pvserial': 36, 'date': 56, 'pvstatus': 78, 'pvpowerin': 82, 'pv1voltage': 90, 'pv1current': 94, 'pv1watt': 98, 'pv2voltage': 106, 'pv2current': 110, 'pv2watt': 114, 'pvpowerout': 122, 'pvfrequentie': 130, 'pvgridvoltage': 134, 'pvenergytoday': 182, 'pvenergytotal': 190, 'pvtemperature': 206, 'pvipmtemperature': 242}
T06NNNN :
{'decrypt': 'True', 'pvserial': 76, 'date': 136, 'pvstatus': 158, 'pvpowerin': 162, 'pv1voltage': 170, 'pv1current': 174, 'pv1watt': 178, 'pv2voltage': 186, 'pv2current': 190, 'pv2watt': 194, 'pvpowerout': 202, 'pvfrequentie': 210, 'pvgridvoltage': 214, 'pvenergytoday': 262, 'pvenergytotal': 270, 'pvtemperature': 286, 'pvipmtemperature': 322}
T05NNNNX :
{'decrypt': 'True', 'pvserial': 36, 'date': 56, 'pvstatus': 78, 'pvpowerin': 82, 'pv1voltage': 90, 'pv1current': 94, 'pv1watt': 98, 'pv2voltage': 106, 'pv2current': 110, 'pv2watt': 114, 'pvpowerout': 170, 'pvfrequentie': 178, 'pvgridvoltage': 182, 'pvenergytoday': 274, 'pvenergytotal': 282, 'pvtemperature': 450, 'pvipmtemperature': 454}
T06NNNNX :
{'decrypt': 'True', 'pvserial': 76, 'date': 126, 'pvstatus': 158, 'pvpowerin': 162, 'pv1voltage': 170, 'pv1current': 174, 'pv1watt': 178, 'pv2voltage': 186, 'pv2current': 190, 'pv2watt': 194, 'pvpowerout': 250, 'pvfrequentie': 258, 'pvgridvoltage': 262, 'pvenergytoday': 354, 'pvenergytotal': 362, 'pvtemperature': 530, 'pvipmtemperature': 534}
Grott external record whitelist 'recwl.txt' not found
Grott records whitelisted : {'0116', '5003', '5004', '5104', '5119', '5019', '5016', '5150', '0150', '5103', '0119', '5050', '5116', '0104', '0103'}
- Grott InfluxDB V1 initiating started
Grott settings:
_Generic:
version: 2.4.0
verbose: True
trace: False
config file: grott.ini
minrecl: 100
decrypt: True
compat: False
blockcmd: False
noipf: False
time: auto
sendbuf: True
timezone: local
valueoffset: 6
offset: 6
inverterid: automatic
mode: sniff
grottip default
grottport 5279
_MQTT:
nomqtt False
mqttip: localhost
mqttport: 1883
mqtttopic: energy/growatt
mqtttauth: False
mqttuser: growatt
mqttpsw: **secret**
_Growatt server:
growattip: 47.91.67.66
growattport: 5279
_PVOutput:
pvoutput: False
pvurl: https://pvoutput.org/service/r2/addstatus.jsp
pvapikey: yourapikey
pvinverters: 1
pvsystemid: 12345
_Influxdb:
influx: True
influx2: False
database: grottdb
ip: 192.168.0.101
port: 8086
user: grott
password: **secret**
organization: "grottorg"
bucket: "grottdb"
token: **secret**
_Extension:
extension: False
extname: grottext
extvar: {'none': 'none'}
Grott sniff mode started
Any idea?
sorry for my bad English.
I'm running Grott on Home Assistant OS and have managed to get some of the metrics to show as needed, but I need some customization to show more than just info for solar. In my setup I don't even use solar at all and have my Growatt SPF 5000ES inverter set up with a PylonTech 3000C 3.5kWh Lithium battery for off-grid backup due to rolling blackouts.
I need to customize the T050104.json file for my needs as that seems to be the header for my inverter but I'll need to work out the values to send to MQTT, comparing the CSV download from the growatt server to the output I receive is the most obvious way.
Anyone else have some more information or some values/indexes from some more recent Growatt inverters to get the ball rolling?
HI @johanmeijer ,
I see that if grott has not been running, it will send buffered data --- that is OK.
However, it looks like it does not process the data field correctly. It sends the current date/time, in stead of the buffered date/time.
It appears correct on the growatt servers, but not in other tools.
I see in the logs:
- Grott data record date/time processing started
- No or no valid date found
An example of data block:
002a0006024151504e41433541323731414800000000000000000000000000000000000000004
445463141323130393300000000000000000000000000000000000000001502050a1039020bb8
0c3400010000049e0a0d00020000028109cb00020000021d00000000000000000000000000000
0000000000000000000000005b3138709350008000005be000000000000000000000000000000
000935000000000000000000000000000000000052087d000000010000168a000015d00000000
000000b1d0000000000000ab30000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000fffa0000000000000000000000db00db0
0000000013b0e2100004e20000300000000000000000000000000000000000000000000000000
00003c0000000000000000000000000000000000000c350cb1000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000002710000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000003ac
Regards,
Wim
Hi,
I'm trying to decode the records for my growatt inverter using the information you guys have collected so far. I've sniffed out some data using Wireshark (I knew how already so was easier than using the Grott sniffer).
Assuming the first 8 bytes are still the header, I'm getting '10 13 31 77 78 24 ec fa' - which would make your format code something like 77ecfa.
The message format appears to also be obfuscated using the Growatt XOR on the message body since I can see the repeating "Growatt" pattern starting from byte 8 (where the header ends).
I'm a little uneasy about posting the entire message on a public forum given the potentially sensitive information in the stream - but is there some other guidance or advice you could provide to assist in helping to extract the record format?
I'd be very willing to contribute the data and record format once I've sanitized it.
Many thanks.
Is it possible to add a configuration option to disable sending the data to growatt. Now Iโm blocking all traffic to the growatt server.
Oโฆ. And changing the ip address for the growatt server in the ini file does not work.
Thanks,
Peter.
very nice tool, setup worked directly with a growatt 1000s shine wifi / Ubuntu 18.03!
Is there a way to setup grott to act as server without redirecting the data to China?
Phil
Hi, is there a location for a step by step manual? I have an XE converter with the ethernet port dongle (wireless to growatt though) and I would lik home assistant to see data.
I can run a vm (ubuntu) but don't know where to start...
Hi,
When I'm running grott on a raspberry pi with an Growatt Shinelan stick I get the message:
Is the shinelan stick not supported? The data it is trying to parse is:
\x00\x01\x00\x02\x00\xd9\x01\x04\x59\x55\x5a\x30\x38\x33\x30\x30\x34\x34\x
51\x4b\x42\x32\x39\x30\x39\x32\x39\x45\x00\x00\x00\x00\x00\x00\x02\x00\x00
\x00\x2c\x00\x01\x00\x00\x05\x8e\x0f\x45\x00\x03\x00\x00\x05\x8e\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x13\x85\x08\xe5\x00\x06\x00\x00\x05
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x01\x00\x00\x5b\xa8\x01\x80\xd3\xb1\x00\xf1\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x42\x00\x00\x00\x00\x
00\x2d\x00\x59\x4e\x20\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x61\x60\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x60\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05
\x00\x08\x00\x00\x0f\xd0\x0f\x57\x0f\x4d\x00\x01\x10\x34\x75\x30\x00\x00\x
0e\x10\x00\xeb\x0e\x10\x00\x03\x00\x02\x00\x2d\x00\x00\x00\x00\x00\x00\x00
\x00
My generic config section looks like:
inverterid = QKB290929E
decrypt = True
minrecl = 100
compat = True
valueoffset = 26
I already tried changing the decrypt and compat settings
Specifing config file with opstart parameter -c is not working.
e.g.
python3 grott -v -c conftest.ini
Dear Johan,
Thank you for your great work.
Attached you'll find a zip file that contains yaml
files that will expose all the entities from Grott to HA, inculding some dummy sensors for the type of the inverter and the type and serial number of the datalogger (These should be set by hand):
The only thing that has to be done in HA is:
For more information, see: https://www.home-assistant.io/docs/configuration/splitting_configuration/
All has been tested with the latest docker version of Grott , a MIN 4200TL-XE inverter and ShineLink X datalogger.
Best regards,
Jeroen Bos
For a longer time In notices my Grafana graphics are not in sync with reality. It is about an hour late.
Finally took some time to have a look at it, and the conversion to UTC seems to be the problem, this sets the time one hour in the past.
As soon as I change utc_dt.strftime
in
Line 369 in 224f0b0
local_dt.strftime
it is in sync again.
So why this conversion to UTC time? Is this related to some Influxdb timezone config setting?
Is it an option to set this up in a docker image? This would improve installation drastically.
Not sure about the Iptables section though.
Hi,
I'm Jeroen van Rensen and I would like to use this repo.
The readme says:
Please look at the wiki for detailed information on installation and use!
But in the wiki there isn't a page called Installation.
Where can I find it?
Thank you! Jeroen
Hi @johanmeijer,
Average information is not correctly shown. first is my own live output, second screenshot shows which is compared with a solaredge output.
As I am running grott directly from the git repo, my personal grott.ini always conflicts with your upstream version.
Moving grott.ini to grott.ini.sample (and putting grott.ini in the .gitignore file) would solve that issue. You only have to tell users to copy grott.ini.sample grott.ini once and then let them edit the file to there own taste.
Hi,
I tried running your application and get the following output:
grott_1 | - Grott automatic protocol detection
grott_1 | - Grott data record length 585
grott_1 | - layout : T065104X
grott_1 | - Growatt data decrypted V2
grott_1 | - Growatt plain data:
grott_1 | 00250006024151044e41433541323432343600000000000000000000000000000000000000004
grott_1 | 444463241323530424c0000000000000000000000000000000000000000000000000000020bb8
grott_1 | 0c340001000003e206470003000001e9079e0002000001f900000000000000000000000000000
grott_1 | 0000000000000000000000003e6138709490007000003f6000000000000000000000000000000
grott_1 | 000949000000000000000000000000000000000017070200000000000003930000039c0000000
grott_1 | 0000001b400000000000001e80000000000000000000000000000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000000000fffa00000000000000000000011701170
grott_1 | 0000000016e0e3c00004e20000200000000000000000000000000000000000000000000000000
grott_1 | 00003c0000000000000000000000000000000000000c350cb1000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000000000000000000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000002710000000000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000000000000000000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000000000000000000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000000000000000000000000000000000000000000
grott_1 | 00000000000000000000000000000000000000000000000000000000000000000000000000000
grott_1 | 000000000002c54
grott_1 | - Grott data ack record or data record not defined no processing done
grott_1 |
My guess (based on looking at the code) is that the detected layout is not supported (yet). Is there anything I can do to make your application work with my setup? Or am I missing something?
Kind regards,
Johan
PS:
My setup:
I was trying to get the data into grafana (with influxdb) but I did not get the correct data (i was thinking)
after a good time seaching i found that the data was saved as integer and not as float.
This gives the same data but multiply bij 10.
When i look at the log from Grott i see the correct data from the inverter.
in de jsonmsg for MQTT and influxdb is see the changed data.
- Grott values retrieved:
- pvserial: XXXXXXXXXXXX
- pvstatus: 1
- pvpowerin: 58.5
- pvpowerout: 57.5
- pvenergytoday: 1.5
- pvenergytotal: 3236.2
- pv1watt: 30.7
- pv2watt: 27.8
- pvfrequentie: 49.98
- pvgridvoltage: 233.3
- pv1voltage: 106.4
- pv1current: 0.2
- pv2voltage: 135.1
- pv2current: 0.2
- pvtemperature: 24.8
- pvipmtemperature: 30.3
- MQTT jsonmsg:
{"device": "XXXXXXXXXXXX", "time": "2021-03-09T15:23:20", "buffered": "no",
"values": {"pvstatus": 1, "pv1watt": 307, "pv2watt": 278, "pvpowerin": 585,
"pvpowerout": 575, "pvfrequentie": 4998, "pvgridvoltage": 2333,
"pvenergytoday": 15, "pvenergytotal": 32362, "pv1voltage": 1064,
"pv2voltage": 1351, "pv1current": 2, "pv2current": 2, "pvtemperature": 248,
"pvipmtemperature": 303}}
- MQTT connection refused by target
- Grott Send data to PVOutput disabled
- Grott InfluxDB publihing started
- Timezone local specified default timezone used
- Grott original time : 2021-03-09T15:23:20 adjusted UTC time for influx : 2021-03-09T14:23:20
- Grott influxdb jsonmsg:
[{'measurement': 'XXXXXXXXXXXX', 'time': '2021-03-09T14:23:20', 'fields':
{'device': 'XXXXXXXXXXXX', 'buffered': 'no', 'pvstatus': 1, 'pv1watt': 307,
'pv2watt': 278, 'pvpowerin': 585, 'pvpowerout': 575, 'pvfrequentie': 4998,
'pvgridvoltage': 2333, 'pvenergytoday': 15, 'pvenergytotal': 32362,
'pv1voltage': 1064, 'pv2voltage': 1351, 'pv1current': 2, 'pv2current': 2,
'pvtemperature': 248, 'pvipmtemperature': 303}}]
Is this because MQTT/inlfuxdb don't work with float or is it a small bug??
For now i devide the data with 10 in grafana, it's a bit of a work arround, but it works
There seems to be a config reader issue with multiple inverters.
The issue is that both converters get set to the single same systemid on PVOutput.org. I have solved the issue for now manually by editing one file, but more on that below...
Environment Vars:
Grott settings:
_Generic:
version: 2.5.4
verbose: True
trace: False
config file: grott.ini
minrecl: 100
decrypt: True
compat: False
blockcmd: False
noipf: False
time: auto
sendbuf: True
timezone: local
valueoffset: 6
offset: 6
inverterid: automatic
mode: proxy
grottip 0.0.0.0
grottport 5279
_MQTT:
nomqtt True
mqttip: localhost
mqttport: 1883
mqtttopic: energy/growatt
mqtttauth: False
mqttuser: grott
mqttpsw: **secret**
_Growatt server:
growattip: 47.91.67.66
growattport: 5279
_PVOutput:
pvoutput: True
pvurl: https://pvoutput.org/service/r2/addstatus.jsp
pvapikey: <REDACTED>
pvinverters: 1
pvsystemid: <REDACTED> to 0001
_Influxdb:
influx: False
influx2: False
database: grottdb
ip: localhost
port: 8086
user: grott
password: **secret**
organization: grottorg
bucket: grottdb
token: **secret**
_Extension:
extension: False
extname: grottext
extvar: {'none': 'none'}
Grott proxy mode started
The inverters have been setup to send the data via the proxy option as visible in the logs:
- ('192.168.178.52', 14374) has connected
- ('192.168.178.171', 1032) has connected
Data is received from both inverters, BUT it's added to a single systemid, while it is configured as should in the example:
- Grott values retrieved:
- pvserial : <INVERTER1>
- pvstatus : 1
- pvpowerin : 104.9
- pv1voltage : 316.1
- pv1current : 0.3
- pv1watt : 104.9
- pv2voltage : 0.0
- pv2current : 0.0
- pv2watt : 0.0
- pvpowerout : 102.7
- pvfrequentie : 50.0
- pvgridvoltage : 229.0
- pvgridcurrent : 1.0
- pvgridpower : 104.6
- pvgridvoltage2 : 0.0
- pvgridcurrent2 : 0.0
- pvgridpower2 : 0.0
- pvgridvoltage3 : 0.0
- pvgridcurrent3 : 0.0
- pvgridpower3 : 0.0
- totworktime : 239.4
- pvenergytoday : 0.1
- pvenergytotal : 171.1
- epvtotal : 169.3
- epv1today : 0.1
- epv1total : 169.3
- epv2today : 0.0
- epv2total : 0.0
- pvtemperature : 34.2
- pvipmtemperature : 42.5
- MQTT jsonmsg:
{"device": "<INVERTER1>", "time": "2021-06-30T08:14:56", "buffered": "no",
"values": {"pvstatus": 1, "pvpowerin": 1049, "pv1voltage": 3161,
"pv1current": 3, "pv1watt": 1049, "pv2voltage": 0, "pv2current": 0,
"pv2watt": 0, "pvpowerout": 1027, "pvfrequentie": 5000, "pvgridvoltage":
2290, "pvgridcurrent": 10, "pvgridpower": 1046, "pvgridvoltage2": 0,
"pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 0,
"pvgridcurrent3": 0, "pvgridpower3": 0, "totworktime": 1723484,
"pvenergytoday": 1, "pvenergytotal": 1711, "epvtotal": 1693, "epv1today": 1,
"epv1total": 1693, "epv2today": 0, "epv2total": 0, "pvtemperature": 342,
"pvipmtemperature": 425}}
- No MQTT message sent, MQTT disabled
- Grott send data to PVOutput systemid: 0001 for inverter: <INVERTER1>
- {'X-Pvoutput-Apikey': '<REDACTED>', 'X-Pvoutput-SystemId': '0001'}
- {'d': '20210630', 't': '08:14', 'v1': 100, 'v2': 102.7, 'v6': 229.0}
- Grott PVOutput response:
- OK 200: Added Status
- Grott values retrieved:
- pvserial : <INVERTER2>
- pvstatus : 1
- pvpowerin : 91.8
- pv1voltage : 253.8
- pv1current : 0.3
- pv1watt : 91.8
- pv2voltage : 0.0
- pv2current : 0.0
- pv2watt : 0.0
- pvpowerout : 90.0
- pvfrequentie : 50.0
- pvgridvoltage : 228.1
- pvgridcurrent : 0.9
- pvgridpower : 91.7
- pvgridvoltage2 : 0.0
- pvgridcurrent2 : 0.0
- pvgridpower2 : 0.0
- pvgridvoltage3 : 0.0
- pvgridcurrent3 : 0.0
- pvgridpower3 : 0.0
- totworktime : 232.0
- pvenergytoday : 0.0
- pvenergytotal : 111.7
- epvtotal : 110.4
- epv1today : 0.0
- epv1total : 110.4
- epv2today : 0.0
- epv2total : 0.0
- pvtemperature : 33.5
- pvipmtemperature : 42.0
- MQTT jsonmsg:
{"device": "<INVERTER2>", "time": "2021-06-30T07:14:57", "buffered": "no",
"values": {"pvstatus": 1, "pvpowerin": 918, "pv1voltage": 2538,
"pv1current": 3, "pv1watt": 918, "pv2voltage": 0, "pv2current": 0,
"pv2watt": 0, "pvpowerout": 900, "pvfrequentie": 5002, "pvgridvoltage":
2281, "pvgridcurrent": 9, "pvgridpower": 917, "pvgridvoltage2": 0,
"pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 0,
"pvgridcurrent3": 0, "pvgridpower3": 0, "totworktime": 1670524,
"pvenergytoday": 0, "pvenergytotal": 1117, "epvtotal": 1104, "epv1today": 0,
"epv1total": 1104, "epv2today": 0, "epv2total": 0, "pvtemperature": 335,
"pvipmtemperature": 420}}
- No MQTT message sent, MQTT disabled
- Grott send data to PVOutput systemid: 0001 for inverter: <INVERTER2>
- {'X-Pvoutput-Apikey': '<REDACTED>', 'X-Pvoutput-SystemId': '0001'}
- {'d': '20210630', 't': '07:14', 'v1': 0, 'v2': 90.0, 'v6': 228.1}
- Grott PVOutput response:
- OK 200: Added Status
The config file has the following (relevant) values:
[PVOutput]
# PVOutput parameters definitions
pvoutput = True
# Use this if you have one inverter
apikey = <REDACTED>
#systemid = 0000
# Use this if you have multiple inverters
systemid1 = 0001
inverterid1 = <INVERTER1>
systemid2 = 0002
inverterid2 = <INVERTER2>
#systemid99 = 99999
#inverterid99 = inverter99
As visible from the logs, either inverter gets it's data send to systemid1 on pvoutput. I've redacted some values to keep it a bit universal. If you want I can also supply raw data for testing to fix the issue permanently somewhere.
For now I've solved it by changing the grottconf.py file:
https://github.com/johanmeijer/grott/blob/master/grottconf.py
#pvoutput default
self.pvoutput = False
self.pvinverters = 2
self.pvurl = "https://pvoutput.org/service/r2/addstatus.jsp"
self.pvapikey = "yourapikey"
self.pvsystemid = {}
self.pvinverterid = {}
self.pvsystemid[1] = "systemid1"
self.pvinverterid[1] = "inverter1"
self.pvsystemid[2] = "systemid2"
self.pvinverterid[2] = "inverter2"
So in short, I've changed the self.pvinverters value to 2, and added the self.pvsystemid[2] and self.pvinverterid[2] to the config file. Then restarted the script and it works fine and pushes data to both the systems on PVOutput
After an internet failure the inverter started tot issue buffet record.
This time the time stamp is ok but the date is wrong.
server.grotwatt.com refuses the record and eventually grott crashes.
I use gtime=server.
maby the check of an correct time record in buffert record also must include the date. the solision for time errors is good for real time values, but for buffert ones it is tricky, i think.
after restart, Grott dit not crach antmore, but buffert records are refused.
2020-12-08 09:14:22 stdout requests.exceptions.ConnectionError: HTTPSConnectionPool(host='pvoutput.org', port=443): Max retries exceeded with url: /service/r2/addstatus.jsp (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f144eb410d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
2020-12-08 09:14:22 stdout raise ConnectionError(e, request=request)
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 516, in send
2020-12-08 09:14:22 stdout r = adapter.send(request, **kwargs)
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 643, in send
2020-12-08 09:14:22 stdout resp = self.send(prep, **send_kwargs)
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 530, in request
2020-12-08 09:14:22 stdout return session.request(method=method, url=url, **kwargs)
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 61, in request
2020-12-08 09:14:22 stdout return request('post', url, data=data, json=json, **kwargs)
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 119, in post
2020-12-08 09:14:22 stdout reqret = requests.post(conf.pvurl, data = pvdata, headers = pvheader)
2020-12-08 09:14:22 stdout File "/app/grottdata.py", line 343, in procdata
2020-12-08 09:14:22 stdout procdata(conf,data)
2020-12-08 09:14:22 stdout File "/app/grottproxy.py", line 165, in on_recv
2020-12-08 09:14:22 stdout self.on_recv(conf)
2020-12-08 09:14:22 stdout File "/app/grottproxy.py", line 85, in main
2020-12-08 09:14:22 stdout proxy.main(conf)
2020-12-08 09:14:22 stdout File "grott.py", line 35, in
2020-12-08 09:14:22 stdout Traceback (most recent call last):
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout During handling of the above exception, another exception occurred:
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pvoutput.org', port=443): Max retries exceeded with url: /service/r2/addstatus.jsp (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f144eb410d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
2020-12-08 09:14:22 stdout raise MaxRetryError(_pool, url, error or ResponseError(cause))
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/util/retry.py", line 439, in increment
2020-12-08 09:14:22 stdout method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 727, in urlopen
2020-12-08 09:14:22 stdout timeout=timeout
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
2020-12-08 09:14:22 stdout Traceback (most recent call last):
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout During handling of the above exception, another exception occurred:
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f144eb410d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution
2020-12-08 09:14:22 stdout self, "Failed to establish a new connection: %s" % e
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 172, in _new_conn
2020-12-08 09:14:22 stdout conn = self._new_conn()
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 309, in connect
2020-12-08 09:14:22 stdout conn.connect()
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 978, in _validate_conn
2020-12-08 09:14:22 stdout self._validate_conn(conn)
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 381, in _make_request
2020-12-08 09:14:22 stdout chunked=chunked,
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 677, in urlopen
2020-12-08 09:14:22 stdout Traceback (most recent call last):
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout During handling of the above exception, another exception occurred:
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout socket.gaierror: [Errno -3] Temporary failure in name resolution
2020-12-08 09:14:22 stdout for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/socket.py", line 752, in getaddrinfo
2020-12-08 09:14:22 stdout for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/util/connection.py", line 61, in create_connection
2020-12-08 09:14:22 stdout (self._dns_host, self.port), self.timeout, **extra_kw
2020-12-08 09:14:22 stdout File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 160, in _new_conn
2020-12-08 09:14:22 stdout Traceback (most recent call last):
2020-12-08 09:14:22 stdout - {'d': '20010108', 't': '08:36', 'v1': 0, 'v2': 0.0, 'v6': 412.6}
2020-12-08 09:14:22 stdout - {'X-Pvoutput-Apikey': '7df8101bae80b9b5e256340d3f96240448770597', 'X-Pvoutput-SystemId': '28371'}
2020-12-08 09:14:22 stdout - Grott send data to PVOutput :
2020-12-08 09:14:22 stdout - No MQTT message sent, MQTT disabled
2020-12-08 09:14:22 stdout "pvipmtemperature": 224}}
2020-12-08 09:14:22 stdout 3237, "pv1current": 0, "pv2current": 0, "pvtemperature": 212,
2020-12-08 09:14:22 stdout "pvenergytoday": 0, "pvenergytotal": 5264, "pv1voltage": 3223, "pv2voltage":
2020-12-08 09:14:22 stdout "pvpowerout": 0, "pvfrequentie": 5000, "pvgridvoltage": 4126,
2020-12-08 09:14:22 stdout "values": {"pvstatus": 0, "pv1watt": 0, "pv2watt": 0, "pvpowerin": 0,
2020-12-08 09:14:22 stdout {"device": "HVE3A21041", "time": "2001-01-08T08:36:00", "buffered": "yes",
2020-12-08 09:14:22 stdout - MQTT jsonmsg:
2020-12-08 09:14:22 stdout - pvipmtemperature: 22.4
2020-12-08 09:14:22 stdout - pvtemperature: 21.2
2020-12-08 09:14:22 stdout - pv2current: 0.0
2020-12-08 09:14:22 stdout - pv2voltage: 323.7
2020-12-08 09:14:22 stdout - pv1current: 0.0
2020-12-08 09:14:22 stdout - pv1voltage: 322.3
2020-12-08 09:14:22 stdout - pvgridvoltage: 412.6
2020-12-08 09:14:22 stdout - pvfrequentie: 50.0
2020-12-08 09:14:22 stdout - pv2watt: 0.0
2020-12-08 09:14:22 stdout - pv1watt: 0.0
2020-12-08 09:14:22 stdout - pvenergytotal: 526.4
2020-12-08 09:14:22 stdout - pvenergytoday: 0.0
2020-12-08 09:14:22 stdout - pvpowerout: 0.0
2020-12-08 09:14:22 stdout - pvpowerin: 0.0
2020-12-08 09:14:22 stdout - pvstatus: 0
2020-12-08 09:14:22 stdout - pvserial: HVE3A21041
2020-12-08 09:14:22 stdout - Grott values retrieved:
2020-12-08 09:14:22 stdout - date-time: 2001-01-08T08:36:00
2020-12-08 09:14:22 stdout - Grott data record date/time processing started
2020-12-08 09:14:22 stdout
2020-12-08 09:14:22 stdout - record layout : T06NNNN
2020-12-08 09:14:22 stdout - offset : 6
2020-12-08 09:14:22 stdout - decrypt : True
2020-12-08 09:14:22 stdout - Growatt new layout processing
2020-12-08 09:14:22 stdout 00000000000000000000000000000000000000000000000000000000000000005053
2020-12-08 09:14:22 stdout 00ad4000016030000000000000000000000000000000000000001117000000000000000000000
2020-12-08 09:14:22 stdout 0000000000000000e0062706530000002d00592710000000000000000000000b2f00000000000
2020-12-08 09:14:22 stdout 0340000000000000ffb0000000000000000000000001490003b088a00d4000000000000000000
2020-12-08 09:14:22 stdout 002c0000000000000c970000000000000ca5000000000000000000001388101e0000000000001
2020-12-08 09:14:22 stdout 85645334132313034310000000000000000000000000000000000000000010108082400020000
2020-12-08 09:14:22 stdout 00030006010101504a50433641323731583200000000000000000000000000000000000000004
2020-12-08 09:14:22 stdout - Growatt plain data:
2020-12-08 09:14:22 stdout - Growatt data decrypted V2
2020-12-08 09:14:22 stdout - decrypt : True
2020-12-08 09:14:22 stdout - Record layout used : T06NNNN
2020-12-08 09:14:22 stdout - layout : T060150
2020-12-08 09:14:22 stdout - Grott data record length 265
2020-12-08 09:14:22 stdout - Grott automatic protocol detection
2020-12-08 09:14:22 stdout \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x27\x32
2020-12-08 09:14:22 stdout \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
2020-12-08 09:14:22 stdout \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x46\x63\x1f\x77\x61\x74\x74\x47\x72\x6f
2020-12-08 09:14:22 stdout \x47\x72\x6f\x7d\xb5\x74\x74\x51\x71\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
2020-12-08 09:14:22 stdout \x6f\x2e\x46\x64\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x64\x58\x61\x74\x74
2020-12-08 09:14:22 stdout \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\xa7\x74\x48\x71\x32\x74\x74\x47\x5f
2020-12-08 09:14:22 stdout \x74\x47\x72\x6f\x63\xf1\x74\x4f\x4f\xf8\x6f\xa3\x61\x74\x74\x47\x72\x6f\x77
2020-12-08 09:14:22 stdout \x72\x7f\x43\x61\x74\x74\x47\x72\x6f\x78\x9a\x74\x74\x47\x72\x6f\x77\x61\x74
2020-12-08 09:14:22 stdout \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x67\xcf\x62\x71\x77\x61\x74\x74\x47
2020-12-08 09:14:22 stdout \x74\x74\x6b\x72\x6f\x77\x61\x74\x74\x4b\xe5\x6f\x77\x61\x74\x74\x47\x7e\xca
2020-12-08 09:14:22 stdout \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x60\x75\x7c\x4f\x56\x6f\x75\x61
2020-12-08 09:14:22 stdout \x27\x21\x24\x47\x35\x75\x43\x5f\x43\x50\x74\x74\x47\x72\x6f\x77\x61\x74\x74
2020-12-08 09:14:22 stdout \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
2020-12-08 09:14:22 stdout \x00\x03\x00\x06\x01\x01\x01\x50\x0d\x22\x2c\x41\x20\x46\x43\x76\x2a\x5d\x77
2020-12-08 09:14:22 stdout - Growatt original Data:
2020-12-08 09:14:22 stdout <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.17.0.3', 59606), raddr=('47.91.67.66', 5279)>
2020-12-08 09:14:22 stdout - Growatt packet received:
2020-12-08 09:14:22 stdout
2020-12-08 09:13:52 stdout - Data less then minimum record length, data not processed
2020-12-08 09:13:52 stdout <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.17.0.3', 5279), raddr=('172.17.0.1', 43278)>
2020-12-08 09:13:52 stdout - Growatt packet received:
2020-12-08 09:13:52 stdout
2020-12-08 09:13:52 stdout - Bad request 400: Date is older than 90 days [20010108]
2020-12-08 09:13:52 stdout - Grott PVOutput response:
2020-12-08 09:13:51 stdout - {'d': '20010108', 't': '08:35', 'v1': 0, 'v2': 0.0, 'v6': 412.8}
2020-12-08 09:13:51 stdout - {'X-Pvoutput-Apikey': '7df8101bae80b9b5e256340d3f96240448770597', 'X-Pvoutput-SystemId': '28371'}
2020-12-08 09:13:51 stdout - Grott send data to PVOutput :
2020-12-08 09:13:51 stdout - No MQTT message sent, MQTT disabled
2020-12-08 09:13:51 stdout "pvipmtemperature": 218}}
2020-12-08 09:13:51 stdout 3157, "pv1current": 0, "pv2current": 0, "pvtemperature": 212,
2020-12-08 09:13:51 stdout "pvenergytoday": 0, "pvenergytotal": 5264, "pv1voltage": 3143, "pv2voltage":
2020-12-08 09:13:51 stdout "pvpowerout": 0, "pvfrequentie": 5000, "pvgridvoltage": 4128,
2020-12-08 09:13:51 stdout "values": {"pvstatus": 0, "pv1watt": 0, "pv2watt": 0, "pvpowerin": 0,
2020-12-08 09:13:51 stdout {"device": "HVE3A21041", "time": "2001-01-08T08:35:00", "buffered": "yes",
2020-12-08 09:13:51 stdout - MQTT jsonmsg:
2020-12-08 09:13:51 stdout - pvipmtemperature: 21.8
2020-12-08 09:13:51 stdout - pvtemperature: 21.2
2020-12-08 09:13:51 stdout - pv2current: 0.0
2020-12-08 09:13:51 stdout - pv2voltage: 315.7
2020-12-08 09:13:51 stdout - pv1current: 0.0
2020-12-08 09:13:51 stdout - pv1voltage: 314.3
2020-12-08 09:13:51 stdout - pvgridvoltage: 412.8
2020-12-08 09:13:51 stdout - pvfrequentie: 50.0
2020-12-08 09:13:51 stdout - pv2watt: 0.0
2020-12-08 09:13:51 stdout - pv1watt: 0.0
2020-12-08 09:13:51 stdout - pvenergytotal: 526.4
2020-12-08 09:13:51 stdout - pvenergytoday: 0.0
2020-12-08 09:13:51 stdout - pvpowerout: 0.0
2020-12-08 09:13:51 stdout - pvpowerin: 0.0
2020-12-08 09:13:51 stdout - pvstatus: 0
2020-12-08 09:13:51 stdout - pvserial: HVE3A21041
2020-12-08 09:13:51 stdout - Grott values retrieved:
2020-12-08 09:13:51 stdout - date-time: 2001-01-08T08:35:00
2020-12-08 09:13:51 stdout - Grott data record date/time processing started
2020-12-08 09:13:51 stdout
2020-12-08 09:13:51 stdout - record layout : T06NNNN
2020-12-08 09:13:51 stdout - offset : 6
2020-12-08 09:13:51 stdout - decrypt : True
2020-12-08 09:13:51 stdout - Growatt new layout processing
2020-12-08 09:13:51 stdout 00000000000000000000000000000000000000000000000000000000000000004d9b
2020-12-08 09:13:51 stdout 00ad4000016030000000000000000000000000000000000000001117000000000000000000000
2020-12-08 09:13:51 stdout 0000000000000000da0604062f0000002d00592710000000000000000000000b2f00000000000
2020-12-08 09:13:51 stdout 0360000000000000ffb0000000000000000000000001490003b088a00d4000000000000000000
2020-12-08 09:13:51 stdout 002c0000000000000c470000000000000c5500000000000000000000138810200000000000001
2020-12-08 09:13:51 stdout 85645334132313034310000000000000000000000000000000000000000010108082300020000
2020-12-08 09:13:51 stdout 00020006010101504a50433641323731583200000000000000000000000000000000000000004
2020-12-08 09:13:51 stdout - Growatt plain data:
2020-12-08 09:13:51 stdout - Growatt data decrypted V2
2020-12-08 09:13:51 stdout - decrypt : True
2020-12-08 09:13:51 stdout - Record layout used : T06NNNN
2020-12-08 09:13:51 stdout - layout : T060150
2020-12-08 09:13:51 stdout - Grott data record length 265
2020-12-08 09:13:51 stdout - Grott automatic protocol detection
2020-12-08 09:13:51 stdout \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x3a\xfa
2020-12-08 09:13:51 stdout \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
2020-12-08 09:13:51 stdout \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x46\x63\x1f\x77\x61\x74\x74\x47\x72\x6f
2020-12-08 09:13:51 stdout \x47\x72\x6f\x7d\xb5\x74\x74\x51\x71\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
2020-12-08 09:13:51 stdout \x6f\x2e\x46\x64\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x64\x58\x61\x74\x74
2020-12-08 09:13:51 stdout \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x9d\x74\x6b\x71\x4e\x74\x74\x47\x5f
2020-12-08 09:13:51 stdout \x74\x47\x72\x6f\x63\xf1\x74\x4f\x4f\xf8\x6f\xa3\x61\x74\x74\x47\x72\x6f\x77
2020-12-08 09:13:51 stdout \x72\x7f\x41\x61\x74\x74\x47\x72\x6f\x78\x9a\x74\x74\x47\x72\x6f\x77\x61\x74
2020-12-08 09:13:51 stdout \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x67\xcf\x62\x4f\x77\x61\x74\x74\x47
2020-12-08 09:13:51 stdout \x74\x74\x6b\x72\x6f\x77\x61\x74\x74\x4b\x35\x6f\x77\x61\x74\x74\x47\x7e\x3a
2020-12-08 09:13:51 stdout \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x60\x75\x7c\x4f\x51\x6f\x75\x61
2020-12-08 09:13:51 stdout \x27\x21\x24\x47\x35\x75\x43\x5f\x43\x50\x74\x74\x47\x72\x6f\x77\x61\x74\x74
2020-12-08 09:13:51 stdout \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
2020-12-08 09:13:51 stdout \x00\x02\x00\x06\x01\x01\x01\x50\x0d\x22\x2c\x41\x20\x46\x43\x76\x2a\x5d\x77
2020-12-08 09:13:51 stdout - Growatt original Data:
2020-12-08 09:13:51 stdout <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.17.0.3', 59606), raddr=('47.91.67.66', 5279)>
2020-12-08 09:13:51 stdout - Growatt packet received:
It's not that easy to extract values from the json in Home Assistant, where it is easy to extract a value from MQTT in Home Assistant.
Is it an option to publish all the values in a seperate topic?
energy/growatt/pv1watt
etc?
I noticed that the records sent to pvoutput appear to be using the incorrect timezone. In the log file, I saw that "no or no valid time/date found, grott server time will be used". My docker host machine was set to timezone UTC but the time/date stamps on the records in pvoutput were ahead by 5 hours (I'm in timezone "America/New_York" which is -0500).
Feature request, in the pvoutput script, the pvoutput api only allows 60 requests per hour to[/url]e if you're using the free version (300 with donation mode). There is no option in grott.ini to limit this a bit is there?
I have solved it for now by having the datalogger only send data on every 3 minutes, but that's not the best way. I would like to send it every 5 minutes to Pvoutput and every 1 minute to MQTT.
I'm trying grott on a Pi ZeroW I have laying around. But got stuck on the paho module It keeps saying it wasn't installed. Turns out you have:
pip3 install paho-mqtt
That installs paho for the normal user.
Where it should be
sudo pip3 install paho-mqtt
Can you change that?
Hi,
Finally got the docker with grott running, after many try-outs and fixes on my side the docker has something strange.
When i restart the synology nas the docker/grott is working, but the readings arent send to pvoutput
- MQTT jsonmsg:
{"device": "TDG1A3901B", "time": "2021-05-23T11:46:26", "buffered":
"nodetect", "values": {"pvstatus": 1, "pvpowerin": 21140, "pv1voltage":
1924, "pv1current": 16, "pv1watt": 3219, "pv2voltage": 2314, "pv2current":
77, "pv2watt": 17921, "pvpowerout": 0, "pvfrequentie": 0, "pvgridvoltage":
0, "pvenergytoday": 151388249, "pvenergytotal": 20822, "pvtemperature": 0,
"pvipmtemperature": 0}}
- No MQTT message sent, MQTT disabled
- Grott send data to PVOutput systemid: xxxxx for inverter: TDG1A3901B
- {'X-Pvoutput-Apikey': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'X-Pvoutput-SystemId': 'xxxxx'}
- {'d': '20210523', 't': '11:46', 'v1': 15138824900, 'v2': 0.0, 'v6': 0.0}
- Grott PVOutput response:
- Bad request 400: Energy value [2147483647] too high for system size [4355]
- Grott Send data to Influx disabled
- Grott extension processing disabled
- Growatt packet received:
<socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.1.1', 5279), raddr=('192.168.1.34', 43169)>
- Data less then minimum record length, data not processed
So there is no data uploaded, after restarting the grott container nothing is recorded from the tcpdump, so i must restart the synology nas again to get it running again.
What am i doing wrong ?
The inverter im using is the Growatt 3000 TL-XE
HI @johanmeijer ,
Thanks for this script! Works nicely here.
Would it be possible to run this as an home-assistant add-on? Should be doable I guess, as you already have it running in docker? But I have no idea how to do this...
(and removing the need to send the data to growatt server would be nice as well)
Tnx,
Wim
When using sniff mode under windows 10 I get error:
AttributeError: module 'socket' has no attribute 'AF_PACKET'
The json now is:
{
"device": "xxxxxxxxxxx",
"time": "2020-04-04T12:38:06",
"values": {
"pvstatus": 1,
"pv1watt": 6,
"pv2watt:": 18056,
"pvpowerout": 17493,
"pvfrequentie": 5000,
"pvgridvoltage": 2458,
"pvenergytoday": 74,
"pvenergytotal": 1601
}
}
But there are more values sent over in the message like:
This is the output of the script in verbose mode:
- Growatt plain data:
00437269763e75704a50433439333034313100000000000000000000000000000000000000
004353453139333130364100000000000000000000000000000000000000001404040e2104
030000002c0001000046e502680000000000060917004d000046df000044e7138909a70047
000044f600000000000000000000000000000000000000480000063f001ac99d015e000000
0000000000000000000000000001580ebd00000000002d00594e2000000000000000000000
012b0000004a00000578000006a30000000000000000000000000000000000460000000000
00000000000000000000000000000000000000000000000000000000000000000000000000
00000000005a0086001914031907180b000000191403170624310000000011010100000000
00000011010100000000000000110101000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000007b0b4c
- Growatt processing values for: xxxxxxxx
- pvserial: xxxxxxxx
- pvstatus: 1
- pvpowerout: 1763.9
- pvenergytoday: 7.2
- pvenergytotal: 159.9
- pv1watt: 0.6
- pv2watt: 1814.3
- pvfrequentie: 50.01
- pvgridvoltage: 247.1
I can help with getting the other values by giving the values which they should roughly be (and suggestions for MQTT json names):
Can you also get these out of the message and sent them over MQTT?
Hello,
I'm trying to configure my grott.ini
file. My IP Address is 192.168.178.53
and this is my configuration file:
[MQTT]
#mqtt parameters definitions
#be aware nomqtt = True means no MQTT processing will be done!!!!!!
#nomqtt = False
ip = 192.168.178.53
port = 1883
#topic= energy/growatt
auth = True
user = admin
password = admin
But when I run python3 grott.py -v
, I get this output:
Grott Growatt logging monitor : 2.2.6
Grott Command line parameters processed:
verbose: True
config file: grott.ini
output file: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
nomqtt: False
inverterid: automatic
pvoutput: False
blockcmd: False
noipf: False
Grott process configuration file
Grott process environmental variables
Grott override settings if set in commandline
Grott process json layout files
Grott layout records loaded
T02NNNN :
{'decrypt': 'False', 'pvserial': 36, 'date': 56, 'pvstatus': 78, 'pvpowerin': 82, 'pv1voltage': 90, 'pv1current': 94, 'pv1watt': 98, 'pv2voltage': 106, 'pv2current': 110, 'pv2watt': 114, 'pvpowerout': 122, 'pvfrequentie': 130, 'pvgridvoltage': 134, 'pvenergytoday': 182, 'pvenergytotal': 190, 'pvtemperature': 206, 'pvipmtemperature': 242}
T05NNNN :
{'decrypt': 'True', 'pvserial': 36, 'date': 56, 'pvstatus': 78, 'pvpowerin': 82, 'pv1voltage': 90, 'pv1current': 94, 'pv1watt': 98, 'pv2voltage': 106, 'pv2current': 110, 'pv2watt': 114, 'pvpowerout': 122, 'pvfrequentie': 130, 'pvgridvoltage': 134, 'pvenergytoday': 182, 'pvenergytotal': 190, 'pvtemperature': 206, 'pvipmtemperature': 242}
T06NNNN :
{'decrypt': 'True', 'pvserial': 76, 'date': 136, 'pvstatus': 158, 'pvpowerin': 162, 'pv1voltage': 170, 'pv1current': 174, 'pv1watt': 178, 'pv2voltage': 186, 'pv2current': 190, 'pv2watt': 194, 'pvpowerout': 202, 'pvfrequentie': 210, 'pvgridvoltage': 214, 'pvenergytoday': 262, 'pvenergytotal': 270, 'pvtemperature': 286, 'pvipmtemperature': 322}
T05NNNNX :
{'decrypt': 'True', 'pvserial': 36, 'date': 56, 'pvstatus': 78, 'pvpowerin': 82, 'pv1voltage': 90, 'pv1current': 94, 'pv1watt': 98, 'pv2voltage': 106, 'pv2current': 110, 'pv2watt': 114, 'pvpowerout': 170, 'pvfrequentie': 178, 'pvgridvoltage': 182, 'pvenergytoday': 274, 'pvenergytotal': 282, 'pvtemperature': 450, 'pvipmtemperature': 454}
T06NNNNX :
{'decrypt': 'True', 'pvserial': 76, 'date': 126, 'pvstatus': 158, 'pvpowerin': 162, 'pv1voltage': 170, 'pv1current': 174, 'pv1watt': 178, 'pv2voltage': 186, 'pv2current': 190, 'pv2watt': 194, 'pvpowerout': 250, 'pvfrequentie': 258, 'pvgridvoltage': 262, 'pvenergytoday': 354, 'pvenergytotal': 362, 'pvtemperature': 530, 'pvipmtemperature': 534}
Grott external record whitelist 'recwl.txt' not found
Grott records whitelisted : {'5050', '0116', '5150', '5019', '5016', '5103', '5004', '0104', '5119', '5003', '0119', '0150', '5116', '0103', '5104'}
Grott settings:
_Generic:
version: 2.2.6
verbose: True
trace: False
config file: grott.ini
minrecl: 100
decrypt: True
compat: False
blockcmd: False
noipf: False
time: auto
sendbuf: True
valueoffset: 6
offset: 6
inverterid: automatic
mode: proxy
grottip default
grottport 5279
_MQTT:
nomqtt False
mqttip: 192.168.178.53
mqttport: 1883
mqtttopic: energy/growatt
mqtttauth: True
mqttuser: admin
mqttpsw: admin
_Growatt server:
growattip: 47.91.67.66
growattport: 5279
_PVOutput:
pvoutput: False
pvurl: https://pvoutput.org/service/r2/addstatus.jsp
pvapikey: yourapikey
pvinverters: 1
pvsystemid: systemid1
Grott proxy mode started
Hostname : DESKTOP-VS6P90V
IP : 192.168.178.234 , port : 5279
And it does not look like the example output as described here.
So what am I doing wrong?
Thank you! Jeroen
I'm trying to get it to work on my Ubuntu 18.04 server. But I'm not getting any data.
So now I want to return to my old proxy, so that the server data is at least updated. But now running that doesn't even receives data. I suspect the iptables rules.
How can I delete them?
Tried deleting the rule bij linenumber and the whole thing. But it says it cannot find the rule number...
https://www.digitalocean.com/community/tutorials/how-to-list-and-delete-iptables-firewall-rules
After this i want to check what's going on and why it's not running properly.
This is what i see when i run: sudo iptables -t nat -L
target prot opt source destination
DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
DNAT tcp -- anywhere anywhere tcp dpt:5279 to:47.91.67.66:5279
...
But I don't recognize the MASQUERADE rule. Is that the following:
MASQUERADE all -- anywhere anywhere
That's the bottom one, so.
And when running: sudo iptables -nvxL
I dont recognize any rule
This is the first time messing with iptables btw.
When specifying boolean environment variables or command line options, traditionally they are all lower case. When I attempted this, it didn't work and it took me a while to figure out I had to do mixed case. Making them case insensitive would be more flexible and less error prone.
I'm working with a ShineWiFi-S USB on a SPF 3000 TL LVM - 24P. You don't have it listed here, but its so close as to probably just needing a different layout or offset.
as you can see below some of the information is correct. Can I help debug this to add a layout for this WiFi module?
Here's the output from grott start:
Apr 23 10:01:22 Farm-pi grott[12089]: #011organization:#11 grottorg
Apr 23 10:01:22 Farm-pi grott[12089]: #011bucket: #11 grottdb
Apr 23 10:01:22 Farm-pi grott[12089]: #011token: #11 secret
Apr 23 10:01:22 Farm-pi grott[12089]: _Extension:
Apr 23 10:01:22 Farm-pi grott[12089]: #011extension: #11 False
Apr 23 10:01:22 Farm-pi grott[12089]: #011extname: #11 grottext
Apr 23 10:01:22 Farm-pi grott[12089]: #011extvar: #11 {'none': 'none'}
Apr 23 10:01:22 Farm-pi grott[12089]: Grott proxy mode started
Apr 23 10:01:22 Farm-pi grott[12089]: Hostname : Farm-pi
Apr 23 10:01:22 Farm-pi grott[12089]: IP : 127.0.1.1 , port : 5279
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - ('192.168.55.3', 44503) has connected
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:27 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:27 Farm-pi grott[12089]: #11#011 <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 5279), raddr=('192.168.55.3', 44503)>
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:27 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:27 Farm-pi grott[12089]: #11#011 <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 5279), raddr=('192.168.55.3', 44503)>
Apr 23 10:01:27 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:28 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:28 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:28 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:29 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:29 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:29 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:30 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:30 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:30 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Growatt original Data:
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x00\x09\x00\x06\x01\x5f\x01\x03\x03\x36\x2b\x47\x20\x47\x4d\x76\x40\x3e\x77
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x3a\x3c\x25\x35\x35\x72\x43\x5f\x44\x56\x74\x74\x47\x72\x6f\x77\x61\x74\x74
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x74\x70\x63\x4e\x72\x5d\x74\x61
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x74\x74\x6b\x72\x6e\x77\x60\x74\x75\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x77\x63\x41\x44\x75\x5c\x5f\x40\x51\x44\x46\x69\x42\x5b\x77\x61\x8b\x8b\x47
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x72\x6f\x71\x61\x75\x74\x47\x72\x6f\x77\x61\x21\x3f\x03\x33\x2e\x42\x50\x44
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x47\x70\x72\x6f\x77\x61\x74\x75\x46\x72\x6f\x77\x61\x74\x74\x17\x73\x74\x76
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x71\x74\x92\x47\x6c\x6f\x75\x61\x74\x74\x47\x72\x6f\x39\x44\x74\x74\x47\x5f
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x6f\x2e\x66\x91\x74\x43\x72\x78\x77\x69\x74\x4c\x47\x63\x6f\x77\x61\x74\x74
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x01\x44\x47\x72\x1a\x47\x61\x74\x74\x47
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x72\xbd\x77\x61\x70\xc4\x45\x2a\x6e\x97\x63\x2c\x75\x6b\x76\xdf\x77\x3b\x74
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \xf2\x45\x2a\x64\xcf\x61\x77\x74\x59\x72\xbd\x76\x7b\x74\x74\x47\x72\x6f\x77
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x73\x6f\x77\x61\x74\x74\x46\x72
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x6f\x76\x45\x74\x48\x47\x0a\x6f\x69\x61\x0c\x74\x47\x72\x6f\x77\x61\x74\x74
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x12\x2e
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Grott automatic protocol detection
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Grott data record length 359
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - layout : T060103
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - no matching record layout found, try generic
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Record layout used : T060103
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Growatt data decrypted V2
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Grott Growatt data decrypted
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Growatt plain data:
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 00090006015f01034444443041333931325100000000000000000000000000000000000000005
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 54b44414135313033370000000000000000000000000000000000000000150417090032030000
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 002c0001000100010000000000000000000000023530322e30373030322e30340000ffff00000
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 0060001000000000000554b44414135313033370000000000010100000000000050011b011000
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 e6001e00020000000000004e250000002d005907e500040017000800380011000000000000000
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 00000000000000000000000000000000000000000000000000000000000000000000000000000
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 0000000000007530000075300000000000d2000004b0025801e00258012c04b0005a008602580
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 bb80003001e00d2011a0000000000000000000000000000000000010000000000010000012400
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 3c0078001e0078000000000000000000000000000000000000000000000000000000000000000
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 0000000000000000000006669
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Grott data ack record or data record not defined no processing done
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 5279), raddr=('192.168.55.3', 44503)>
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:31 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:31 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:33 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:33 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:33 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:34 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:34 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:34 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:35 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:35 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:35 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:36 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:36 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:36 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:37 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:37 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:37 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:38 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:38 Farm-pi grott[12089]: #11#011 <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 5279), raddr=('192.168.55.3', 44503)>
Apr 23 10:01:38 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:38 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:38 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:38 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:39 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:39 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:39 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:40 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:40 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:40 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:41 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:41 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:41 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:42 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:42 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:42 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:44 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:44 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:44 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:45 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:45 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:45 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:46 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:46 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:46 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 47420), raddr=('47.251.11.172', 5279)>
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Growatt original Data:
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x00\x25\x00\x06\x01\x5f\x01\x04\x03\x36\x2b\x47\x20\x47\x4d\x76\x40\x3e\x77
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x3a\x3c\x25\x35\x35\x72\x43\x5f\x44\x56\x74\x74\x47\x72\x6f\x77\x61\x74\x74
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x74\x70\x63\x4e\x73\x41\x74\x61
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x74\x74\x6b\x72\x63\x73\x21\x74\x74\x47\x72\x65\x77\x61\x74\x74\x47\x72\x31
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x46\x74\x47\x72\x6f\x77\x61\x74\x74\x4d
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \xe9\x6f\x13\x68\xf0\x74\x47\x72\x6f\x73\xce\x63\x04\x47\x72\x6f\xcb\x61\xcc
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\xd0\x61\xb5\x74\x47\x72\x64\x77
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x3a\x51\x47\x5f
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x6f\x2e\x61\x75\x74\x47\x72\x6f\x77\x61\x74\x76\x47\x72\x6f\x17\x61\x74\x74
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x47\x74\x47\x72\x6f\x77\x61
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x74\x70\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x8b\x8b\xbf\x7a\x6f\x77\x61\x74\x74\x47
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x72\x79\x77\x2d\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x40\x72\x6f\x77\x3b\x74
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \xf2\x47\x5e\x6f\x76\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 \x74\x74\x46\x72\x6e\x77\x61\x74\x75\x47\x72\x6f\x77\x61\x75\xd2\xb9
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott automatic protocol detection
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott data record length 359
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - layout : T060104
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - no matching record layout found, try generic
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Record layout used : T06NNNN
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Growatt data decrypted V2
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott Growatt data decrypted
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Growatt plain data:
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 00250006015f01044444443041333931325100000000000000000000000000000000000000005
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 54b4441413531303337000000000000000000000000000000000000000015041709012e030000
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 002c000c0440000000000a0000000000005e0000000000000000003200000000000000000a9b0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 06409840000000004af1770000000bc00b80000000000000000000000a700c10000000b000000
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 000000000000000000000000004e25002d0059000100000000000000020000006000000000000
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 00000000000000000003300000000000000040000000000000000000000000000000000000000
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 000000000000fffff8080000000000000016004c000000000000000000070000005a0086002c0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 00100000000000000000000000000000000000000000000000000000000000000000000000000
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 00000000000000000000000000000000000000000000000000000000000000000000000001000
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 100000001000000000001a6fe
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Growatt new layout processing
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - decrypt : True
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - offset : 6
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - record layout : T06NNNN
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott data record date/time processing started
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - date-time: 2021-04-23T09:01:46
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott values retrieved:
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvserial : UKDAA51037
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvstatus : 12
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvpowerin : 7130316.8
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pv1voltage : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pv1current : 256.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pv1watt : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pv2voltage : 9.4
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pv2current : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pv2watt : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvpowerout : 5.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvfrequentie : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridvoltage : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridcurrent : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridpower : 271.5
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridvoltage2 : 10.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridcurrent2 : 243.6
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridpower2 : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridvoltage3 : 119.9
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridcurrent3 : 600.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvgridpower3 : 18.8
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvenergytoday : 1205862.4
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvenergytotal : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - totworktime : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvtemperature : 16.7
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - pvipmtemperature : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - epv1today : 0.2
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - epv1total : 9.6
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - epv2today : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - epv2total : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 - epvtotal : 0.0
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - MQTT jsonmsg:
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 {"device": "UKDAA51037", "time": "2021-04-23T09:01:46", "buffered": "no",
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "values": {"pvstatus": 12, "pvpowerin": 71303168, "pv1voltage": 0,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pv1current": 2560, "pv1watt": 0, "pv2voltage": 94, "pv2current": 0,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pv2watt": 0, "pvpowerout": 50, "pvfrequentie": 0, "pvgridvoltage": 0,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pvgridcurrent": 0, "pvgridpower": 2715, "pvgridvoltage2": 100,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pvgridcurrent2": 2436, "pvgridpower2": 0, "pvgridvoltage3": 1199,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pvgridcurrent3": 6000, "pvgridpower3": 188, "pvenergytoday": 12058624,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pvenergytotal": 0, "totworktime": 0, "pvtemperature": 167,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "pvipmtemperature": 0, "epv1today": 2, "epv1total": 96, "epv2today": 0,
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011#011 "epv2total": 0, "epvtotal": 0}}
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - MQTT message message sent
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott Send data to PVOutput disabled
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott Send data to Influx disabled
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Grott extension processing disabled
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Growatt packet received:
Apr 23 10:01:47 Farm-pi grott[12089]: #11#011 <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.55.2', 5279), raddr=('192.168.55.3', 44503)>
Apr 23 10:01:47 Farm-pi grott[12089]: #11 - Data less then minimum record length, data not processed
Running this with a new 5000TL-X and have the following error message.
As an aside, how do I also revert the inverter to point back to growatt until this issue is resolved? I can't seem to reset it back to default parameters!
- MQTT jsonmsg:
{"device": "HMG3A510SC", "time": "2021-05-15T13:18:24", "buffered": "no",
"values": {"#recortype": 3124, "pvstatus": 1, "pvpowerin": 46505,
"pv1voltage": 3725, "pv1current": 81, "pv1watt": 30447, "pv2voltage": 1824,
"pv2current": 89, "pv2watt": 16058, "pvpowerout": 0, "pvfrequentie": 0,
"pvgridvoltage": 2418, "pvgridcurrent": 0, "pvgridpower": 0,
"pvgridvoltage2": 0, "pvgridcurrent2": 0, "pvgridpower2": 2211446784,
"pvgridvoltage3": 11828, "pvgridcurrent3": 5, "pvgridpower3": 2844852224,
"totworktime": 679, "eactoday": 1137, "eactotal": 100, "epvtotal": 6684672,
"epv1today": 88, "epv1total": 458, "epv2today": 0, "epv2total": 0,
"pvtemperature": 581, "pvipmtemperature": 0, "pvboosttemp": 0, "bat_dsp":
526, "pbusvolt": 4020, "#nbusvolt": 0, "#ipf": 20000, "#realoppercent": 91,
"#opfullwatt": 0, "#deratingmode": 0, "eacharge_today": 0, "eacharge_total":
0, "batterytype": 0, "uwsysworkmode": 0, "systemfaultword1": 0,
"systemfaultword2": 0, "systemfaultword3": 0, "systemfaultword4": 0,
"systemfaultword5": 0, "systemfaultword6": 0, "systemfaultword7": 0,
"pdischarge1": 0, "p1charge1": 0, "vbat": 0, "SOC": 0, "pactouserr": 0,
"#pactousers": 0, "#pactousert": 0, "pactousertot": 0, "pactogridr": 0,
"#pactogrids": 0, "#pactogridt": 0, "pactogridtot": 0, "plocaloadr": 0,
"#plocaloads": 0, "#plocaloadt": 0, "plocaloadtot": 0, "#ipm": 0,
"#battemp": 0, "spdspstatus": 0, "spbusvolt": 0, "etouser_tod": 0,
"etouser_tot": 0, "etogrid_tod": 0, "etogrid_tot": 0, "edischarge1_tod": 0,
"edischarge1_tot": 0, "eharge1_tod": 0, "eharge1_tot": 0, "elocalload_tod":
0, "elocalload_tot": 0}}
- MQTT connection refused by target
- Grott send data to PVOutput systemid: 9144 for inverter: HMG3A510SC
Traceback (most recent call last):
File "grott.py", line 35, in
proxy.main(conf)
File "/home/pi/grott/grottproxy.py", line 85, in main
self.on_recv(conf)
File "/home/pi/grott/grottproxy.py", line 165, in on_recv
procdata(conf,data)
File "/home/pi/grott/grottdata.py", line 382, in procdata
"v1" : definedkey["pvenergytoday"]*100,
KeyError: 'pvenergytoday'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.