Giter VIP home page Giter VIP logo

grott's Issues

SPF 5000TL HVM-P

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.

Large current wattage output at end of day

Hi noticed the last few days that every night there is a very big value for current wattage output.

2021-05-31 22_24_26-Overview - Home Assistant and 4 more pages - Work - Microsoft​ Edge

I am just using the sensor information for home assistant.
During the day no issue at all, only with the last message something goes wrong

Parsing of Boolean values should be case insensitive

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.

Store data locally / Influx DB support

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?

Offset wrong ?

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

How to remove the Iptables rules

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.

Grott data ack record or data record not defined no processing done

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

How to install Grott?

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

Feature Request add more values to MQTT

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:

  • PV Amperage
  • PV Volts
  • Inverter Temperature

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):

  • PV ampere 1: 0 (pv1amp)
  • PV ampere 2: 7.7 (pv2amp)
  • PV Voltage 1 : 61.5 (pv1volt)
  • PV Voltage 2: Roughly: 226 - 232 (pv2volt)
  • Inverter Temperature: Roughly 35-36 °C (pvtemp)

Can you also get these out of the message and sent them over MQTT?

UTC conversion for influxdb

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

ifdt = utc_dt.strftime ("%Y-%m-%dT%H:%M:%S")

to local_dt.strftime it is in sync again.

So why this conversion to UTC time? Is this related to some Influxdb timezone config setting?

Move grott.ini to grott.ini.sample

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.

Support for Growatt MIN 3600-TL XE (layout=T065104X)

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:

  • Growatt MIN 36000-TL XE with ShineLan RF module
  • I installed Grott (v2.2.1d) on an raspberry pi using the docker image.
  • Config file is almost default (enable MQTT, disable pvoutput)

How to configure grott.ini?

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

Grott data ack record or data record not defined no processing done for T055204

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,

KeyError: 'pvenergytoday'

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'

ShineLan not supported?

Hi,

When I'm running grott on a raspberry pi with an Growatt Shinelan stick I get the message:

  • No Growatt data processed or SN not found:

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

Version 2.4 supports self-created extensions. Submit your contribution!

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:

  • Grott MQTT JSON containing all output variables that are available within Grott
    • you can print(jsonmsg) to see which variables are available
  • Growatt Raw data record. The unscrambled data record that is send by the inverter to the Growatt server
    • you can print(data) to see which variables are available
  • Grott configuration information
    • you can print(dir(conf)) to see which config variables are available
    • e.g. conf.verbose variable to indicate if verbose is enabled or not.
  • It is also possible to add your own variables to the config file. In the example:
    • extvar = {"ip": "", "port": ""}
    • this creates 2 variables: conf.extvar["ip"] and conf.extvar["port"]

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.

Home Assistant yaml files to expose the Grott entities

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):

  • sensors_grott_eng.yaml (english version)
  • sensors_grott_eng.yaml (dutch version)

The only thing that has to be done in HA is:

  • Create a folder in the homeassitant folder named "sensors"
  • Copy, when exists, the sensors.yaml file into the newly created directory or move your senors to a file named "sensors.yaml" into the the newly created directory.
  • Add the "sensors_growatt_eng.yaml" or "sensors_growatt_nl.yaml" file to the the newly created directory.
  • Add or replace the "sensor:" to "sensor: !include_dir_merge_list sensors/"
  • Restart HA and the new sensors will be available, you'll find them on within the entities list (search for growatt).

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

sensors_growatt.zip

Grott for SPF 5000ES with metrics for battery, output, load etc.

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?

Multiple inverter issue with PVOutput

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

Grott on Ubuntu Server routing issues

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:

  • grott.py runs without errors and delivers expected output after installing the needed pip3 modules
  • Enabling grott to systemctl also works fine
  • Rerouting the data however:
    • /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
    • Adding sudo iptables -t nat -A PREROUTING -p tcp --dport 5279 -j DNAT --to-destination 47.91.67.66:5279 is also done nicely
    • sudo 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?

Am I doing something wrong ?

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

Im a total noob and need help

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..

Did Grott work?

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.

Feature request: variable for rate limits from pvoutput.org

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.

Load consumption values are also recorded?

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

Change rule in Wiki to use sudo for paho-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?

Wrong data values?

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.

step by step manual

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...

grott crach with buffert data

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:

Docker support

Is it an option to set this up in a docker image? This would improve installation drastically.

Not sure about the Iptables section though.

Add authentication to MQTT

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?

date not processed correctly when using buffered data

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

Time error

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:

Grott as Server ?

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

The timestamp for records in pvoutput are ahead by 5 hours

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).

Docker support wiki entry has typos in sample command line

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).

integer vs. float in data

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

grott as home-assistant add-on?

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

Option to disable send data to Growatt

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.

ShineWiFi-S - So close

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

Json markup error pv2watt:

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 :)

Docker with Synology no data

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.