johanmeijer / grott

Growatt inverter monitor
https://github.com/johanmeijer/grott/wiki
394 stars 109 forks source link

GROTT compatibility with old inverters #488

Closed p0macs closed 10 months ago

p0macs commented 10 months ago

Hi!

I have a very old inverter. When I look on the Growatt server (where I'm logging the data with the data logger since 10 years), I can see this information: image

Mode: A0B0D0T0PFU1M3SC Version: GBAA3200 Build Number: G.1.8 Device Model: Growatt 3000

Started using Grott in proxy mode, it forwards the data records to the Growatt server just fine, but almost no records can be decoded, except one coming from the Growatt server. All the others are not decoded because of "Data less then minimum record length, data not processed"

I have the "default" inverter type. Any chance to have my inverter data decoded?

Thanks for your help.

p0macs commented 10 months ago

Additional info: Now I have changed the inverter type from "default" to "min", but nothing really changed. Still the only packet which can be decoded, is the T000103MIN, but this is not processed as well.

  - Growatt packet received:
    <socket.socket fd=4, family=2, type=1, proto=0, laddr=('172.30.33.2', 37214), raddr=('47.91.67.66', 5279)>
  • Growatt original Data: \x00\x01\x00\x00\x00\xd3\x01\x03\x41\x48\x33\x30\x38\x31\x31\x37\x37\x38\x42 \x57\x33\x34\x32\x31\x34\x33\x30\x30\x02\x00\x00\x00\x2c\x01\x01\x00\x01\x00 \x00\x00\x64\x00\x00\x4e\x20\x00\x00\x6f\x54\x0e\x42\x47\x2e\x31\x2e\x38\x00 \x1e\x1e\x1e\x1e\x1e\x1e\x00\x01\x00\x05\x05\xdc\x00\x1e\x07\xa3\x09\xe2\x13 \x27\x13\xe9\x42\x57\x33\x34\x32\x31\x34\x33\x30\x30\x00\x00\xf1\x3c\x00\x01 \x00\x00\x00\x00\x00\x00\x00\x00\x04\x7e\x0c\x1c\x13\x27\x13\xe9\x07\xee\x0a \x3c\x12\x37\x14\x43\x00\x65\x01\x01\x00\x2d\x00\x59\x00\x00\x00\x00\x00\x03 \x00\x00\x00\x00\x00\x00\x00\x96\x00\x96\x00\x0e\x00\x0e\x00\x96\x00\x96\x00 \x0e\x00\x0e\x47\x72\x6f\x77\x61\x74\x74\x20\x49\x6e\x76\x65\x72\x74\x65\x72 \x47\x42\x41\x41\x33\x32\x30\x30\x00\x00\x00\x00\x01\x2d\x00\x01\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\xa6\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00
  • Grott automatic protocol detection
  • Grott data record length 217
  • layout : T000103MIN
  • no matching record layout found, try generic
  • Record layout used : T000103MIN
  • Growatt data decrypted V2
  • Grott Growatt data decrypted
  • Growatt plain data: 0001000000d30103063a5c475945457045573536474075435b4451447647726f5b60757446726 f7705747409526f770e207a053541464f4c74596c71697f6a7446726a72bd746a40d166957253 67ae30384455464573415f476174857b726e7761747447726f77650a785b61486488739a4d4e7 d4075377422736e774c742d47726f7761777447726f776174e247e46f79617a74d172f9776f74 7a00000000000000673b01010406002200283520354775425f77617474465f6f7661747447726 f7761747447727cd161747447726f7761747447726f776174
  • Grott data ack record or data record not defined no processing done

All the others still have less data than the minimal record length. Is the any way to see the data on the log anyway? (like above)

p0macs commented 10 months ago

Trying to change the minimum record length...

_Generic: version: 2.7.8 verbose: True trace: False config file: /config/grott/grott.ini minrecl: 50 decrypt: True compat: False invtype: min invtypemap: {} include_all: False blockcmd: False noipf: False time: auto sendbuf: True timezone: local valueoffset: 6 offset: 6 inverterid: automatic mode: proxy grottip default grottport 5279

But then:

 - Growatt packet received:
      <socket.socket fd=4, family=2, type=1, proto=0, laddr=('172.30.33.2', 48810), raddr=('47.91.67.66', 5279)>

Traceback (most recent call last): File "/app/grott.py", line 35, in proxy.main(conf) File "/app/grottproxy.py", line 144, in main self.on_recv(conf) File "/app/grottproxy.py", line 236, in on_recv if len(data) > conf.minrecl : ^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: '>' not supported between instances of 'int' and 'str' s6-rc: info: service legacy-services: stopping

Why it is not recognized as number?

p0macs commented 10 months ago

Analyzed the records, and it looks like:

Now, this is not processed because the protocol detector has only definitions for the "T02NNNN" or "T05NNNN" or "T06NNNN" protocols. Anybody has an ide how to decode the "T000104" records? I have tried to fake it as "T02NNNN", but the field values are not good.

p0macs commented 10 months ago

Hi! You can close this issue. I found the t000104.yaml in the Examples folder :) After copying onto the main folder the records are processed well. Thank you!

p0macs commented 10 months ago

Works with a little configuration.