NEWS
Test Adapter Growatt v3.3.1
-
@plchome-0
Also könnte man direkt per Modbus abgreifen? Aber der Stick macht nichts, wenn kein Server "erreichbar"? -
@plchome-0 Danke, wusste ich nicht.
Gruss, Jürgen
-
@warp735 said in Test Adapter Growatt v1.0.0:
Also könnte man direkt per Modbus abgreifen?
Ja, es gibt ein Projekt, das die Kommuniaktion bei den alten V24 Stick mitliest.
Es kann sein, dass man bei neueren Wechselrichten auch per Modbus Anschluss direkt Zugreifen kann. Bei meine SPH gibt es nur die V24 und da steckt der Stick drin. Die andere Modbus Schnittstelle ist, glaube ich, nur für eine Batterie.Ich schaue mal, ob ich den iobroker.Growatt Adapter noch benötige, der Grott läuft ja super...
Dann kann ich den abkündigen ... -
@plchome-0
Docker wollte ich nicht machen, weil ich mich damit nicht auskenne.
Wollte es auf einem Debain 11 installieren weil die das Phyton schon an Bord haben -
@moonsorrox Ach so. Ich habe grott in einem LXC unter Proxmox. Ich habe dafür ein Debian11-Template genommen.
Nach dem obligatorischensudo apt update sudo apt upgrade
erst einmal git installiert
sudo apt install git
Anschließend
git clone https://github.com/johanmeijer/grott
Damit hast Du die gesamte grott-Struktur 1:1 in Deinem Home-Verzeichnis.
Noch ein paar Abhängigkeitensudo apt install python3 sudo apt install python3-pip sudo pip3 install paho-mqtt sudo pip3 install requests
Danach
cd grott/ nano grott.ini
und die passend editieren.
Mittelspython3 grott.py -v
zum Testen starten. Wenn der Stick dann auf die IP des LXC umgestellt wurde, sollten Daten ankommen und auch per MQTT im iobroker landen, wenn das eingerichtet ist.
Dann die Datei grott.service nach /etc/systemd/system/grott.service kopieren und editierensudo cp grott.service /etc/systemd/system/grott.service sudo nano /etc/systemd/system/grott.service
Darin folgendes anpassen (Pfad entsprechend Deinem USER bzw. wohin du git clone gemacht hast):
WorkingDirectory=/home/USER/grott/ ExecStart=-/usr/bin/python3 -u /home/USER/grott/grott.py -v
sudo systemctl daemon-reload sudo systemctl enable grott sudo systemctl start grott
und es sollte im Hintergrund als service laufen und auch nach einem restart automatisch starten.
Ich hoffe, ich habe nichts vergessen.Gruss, Jürgen
-
Super Anleitung
Aber da ist:
docker run -d -p 5279:5279 --restart on-failure -e gmqttip="192.168.0.206" ledidobe/grott
doch erheblich einfacher
-
@wildbill
Ok vielen Dank werde ich gleich mal antesten -
@warp735 Das schon, aber nur, wenn Du Docker schon installiert hast.
Wobei ich sagen muss, dank Proxmox nehme ich oft auch LXC anstatt Docker. Ist dann doch manchmal praktischer und einfacher, wenn man direkt in der Fileebene ist, anstatt vorher irgendwelche Ordner reinmappen zu müssen. Aber glücklicherweise hat man ja unter Linux eher die Qual der Wahl, was man nehmen möchte, anstatt von vornherein wenig Auswahl zu haben...Gruss, Jürgen
-
@wildbill
Habe vergessen zu fragen weil du sudo benutzt.
Ich bin ja als root eingeloggt, welchen Benutzer hats du dafür angelegt, weil es sonst ja unter root landet, hast du grott als user genommen.? -
@moonsorrox Natürlich als user. Als root meldet man sich maximal ein einziges Mal an, um einen normalen User zu erstellen und diesen in die Gruppe sudo aufzunehmen. Danach wird sich nur noch per User angemeldet und erweiterte Rechte bei Bedarf (und NUR dann!) per sudo geholt.
Gilt nicht nur für grott sondern für Linux generell. JEDES. ÜBERALL. IMMER. Auch bei iobroker.Gruss, Jürgen
EDIT: Falls Dir unklar ist, wie man es macht. Einmalig als root anmelden. Dann
adduser USER apt install sudo usermod -aG sudo USER exit
Ab da dann als USER anmelden. USER natürlich durch Deinen Namen erstetzen oder was Du da stehen haben willst. sudo muss nachinstalliert werden, kommt im Debian11-Template nicht mit.
Und das sollte man so in jedem Linux, egal ob baremetal, VM, LXC oder Docker-Ct so handhaben! -
@wildbill
Ja OK super das ist schon klar ich dachte nur das grott einen bestimmten User haben will, ist ja manchmal der Fall -
OK also ich habe das mal genauso gemacht und hänge wieder an der selben Stelle wie schon einmal.
Wenn ich die grott.ini editieren soll ist die bei mir leerIch bin mit cd grott/ in das Verzeichnis und nano grott.ini
wenn ich jetzt mal in das Verzeichnis schaue finde ich die grott.ini unter
/home/growatt/grott/examples/grott.ini
wird das auch funktionieren.? nee geht leider nicht ich komme nicht an die ini ran
-
@moonsorrox Kopier die grott.ini aus dem examples-Ordner in den grott-Ordner direkt und editier da und es passt.
Gruss, Jürgen
Edit: Punkt 4 von Hier
-
EDIT:// OK habe ich jetzt gelesen Punkt 4
wollte ich gerade fragen..!
denn wenn ich mich als root einlogge kann ich mitnano home/growatt/grott/examples/grott.ini
die ini Datei editieren
-
@moonsorrox Die muss direkt im grott-Ordner liegen.
Gruss, Jürgen
-
@wildbill
OK das habe ich gemacht, wenn ich jetz die Abfrage machepython3 grott.py -v
steht Growatt logging monitor : 2.6.1h
Grott process configuration fileGrott process environmental variables
Grott override settings if set in commandline
Grott process json layout files
Grott layout records loaded
dann extrem viele Werte oder was auch immer das ist. Ganz am Ende kommen die Settings
Grott settings: _Generic: version: 2.6.1h verbose: True trace: False config file: grott.ini minrecl: 100 decrypt: True compat: False invtype: default 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 _MQTT: nomqtt False mqttip: 10.0.0.50 mqttport: 1883 mqtttopic: energy/growatt mqttinverterintopic: False 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: yourapikey pvinverters: 1 pvsystemid: systemid1 _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 Traceback (most recent call last): File "/home/growatt/grott/grott.py", line 33, in <module> proxy = Proxy(conf) File "/home/growatt/grott/grottproxy.py", line 55, in __init__ self.server.bind((conf.grottip, conf.grottport)) OSError: [Errno 98] Address already in use
Wo sehe ich jetzt im ioBroker die Daten sollte da nicht irgendwo grott auftauchen.?
-
@wildbill danke für die Anleitung
Funktioniert die Shine Handy App weiterhin ? -
@moonsorrox Hast Du in iobroker den MQTT-Adapter als Server laufen und die IP in der grott.ini eingetragen? Oder verwendest Du einen externen MQTT-Server wie z.B. mosquitto. Die IP 10.0.0.50 und der Port 1883 die Du eingetragen hast, muss Deinem MQTT-Server entsprechen. Und der Stick muss natürlich die IP von Deinem grott-Server bekommen. Reboote auch mal den Container. Ich vermute, Du hast den Service bereits aktuv, denn unten bekommst Du ja eine Fehlermeldung, dass die Adresse bereits in Gebrauch ist. Grott per Befehl starten zum Testen geht nur, wenn der service steht. Dazu vorher mit
sudo systemctl stop grott
den Service anhalten. Dann kommt eventuell auch mehr Output.
Wenn Du die grott.ini änderst, musst Du auch einmal den service mitsudo systemctl restart grott
neu starten, sonst bekommt der die Änderungen nicht mit.
Du machst den Befehlpython3 grott.py -v
auch nicht im Alltagsbetrieb. Der ist nur zum testen, damit man in der Konsole direkt die Ausgabe bekommt. Im Alltag läuft dafür ja der service, da musst Du nach einem reboot nix manuell eingeben.
@chucky666 Solange Du grott im Grundzustand verwendest, landen die Daten sowohl auf dem Growatt-Server als auch per MQTT im iobroker. Mit dem oben genannten Umstand, dass bei Ausfall des Growatt-Servers auch per MQTT nix ankommt, da der Stick nur aussendet, wenn er mit dem Growatt-Server verbunden ist. Aber so läuft die App und die Growatt-Server-Website ganz normal weiter.
Wenn Du grottserver.y verwendest, dann sendet der Stick nix mehr an Growatt und läuft völlig lokal. Dann ist der Zustand ob der Growatt-Server läuft oder nicht egal, aber dafür hast Du logischerweise auch keine Daten mehr in der App oder Website.Wenn der grott-Server mal nicht läuft, dann landen auch keine Daten mehr bei Growatt, soweit ich das verstanden habe, da grott als Proxy die Daten dahin weiterleitet, der Stick kennt ja nur die IP vom grott-Server.
Gruss, Jürgen
-
@wildbill said in Test Adapter Growatt v1.0.0:
python3 grott.py -v
jetzt habe ich den Service mal gestoppt und jetzt bekomme ich auch Daten die ich kenne, werde aber den Container nochmal starten, habe ich aber vorhin gemacht.
Hier mal was ich gerade bekomme:- MQTT jsonmsg: {"device": "QMB39212B4", "time": "2022-09-09T15:11:34", "buffered": "no", "values": {"pvstatus": 1, "pvpowerin": 5558, "pv1voltage": 1202, "pv1current": 46, "pv1watt": 5558, "pv2voltage": 0, "pv2current": 0, "pv2watt": 0, "pvpowerout": 5114, "pvfrequentie": 4998, "pvgridvoltage": 2373, "pvgridcurrent": 21, "pvgridpower": 5114, "pvgridvoltage2": 0, "pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 0, "pvgridcurrent3": 0, "pvgridpower3": 0, "pvenergytoday": 38, "pvenergytotal": 33360, "totworktime": 68855617, "pvtemperature": 400, "pvipmtemperature": 0, "epv1today": 41, "epv1total": 35430, "epv2today": 0, "epv2total": 0, "epvtotal": 35430}} - MQTT message message sent on topic: energy/growatt - Grott send data to PVOutput systemid: systemid1 for inverter: QMB39212B4 - {'X-Pvoutput-Apikey': 'yourapikey', 'X-Pvoutput-SystemId': 'systemid1'} - {'d': '20220909', 't': '15:11', 'v1': 3800, 'v2': 511.4, 'v6': 237.3} - Grott PVOutput response: - Unauthorized 401: Invalid System ID - Grott Send data to Influx disabled - Grott extension processing disabled - Growatt packet received: <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.0.0.59', 5279), raddr=('10.0.0.9', 11252)> - Data less then minimum record length, data not processed - Growatt packet received: <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.0.0.59', 40018), raddr=('47.91.67.66', 5279)> - Data less then minimum record length, data not processed
Um deine Frage zu beantworten:
mqtt im ioBroker ist als Client/Subscriber eingetragen weil er sonst nicht startet und grün wird
die IP steht in der grott.ini
10.0.0.50 ist der MQTT Server bei mir in Fhem, also auf einem anderem Device
10.0.0.59 ist der Grott-Server den habe ich am Stick eingetragen, ich habe einen LAN Stick
Ist das jetzt alles so richtigIch habe jetzt den Container rebootet, den grott auch wieder gestartet.
Die Werte kommen dann wo im ioBroker an?
Sollten die hier drin stehen
mqtt.0.energy.growattDas sieht so aus und mehr is da nicht
{ "_id": "mqtt.0.energy.growatt", "common": { "name": "energy/growatt", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "string" }, "native": { "topic": "energy/growatt" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1662731179173, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
noch ein Hinweis von mir der Growatt Stick zeigt auch in grün an Connected, also hat er die IP vom grott server und ist damit verbunden.
-
@moonsorrox
Die Ausgabe zeigt, dass die Daten korrekt in grott ankommen und auch verarbeitet werden. Dann kannst Du den service starten und laufen lassen.
Wenn 10.0.0.50 Dein FHEM ist, dann kommen die Daten logischerweise auch da an. In FHEM solltest Du sie also bekommen. Ich meine aber, in FHEM musst Du MQTT-Devices manuell anlegen.
Wenn Du sie da hast, kannst Du in iobroker den FHEM-Adapter verwenden, dann hast Du FHEM-Geräte auch in iobroker. Eventuell dem MQTT den Raumnamen iobroker zuweisen, dann wird nur der zu iobroker gesynct.
Ob der MQTT-Adapter von iobroker auch als Client auf den FHEM-MQTT-Server zugreifen kann, weiss ich nicht.
Wenn Du die Daten in FHEM eh nicht brauchst und nur in iobroker, dann verwende in iobroker den MQTT-Adapter als server. Dann unter grott die IP und den Port von iobroker-MQTT eintragen. Nimm nicht 1883 falls Du den Sonoff-Adapter parallel brauchst, sondern 1885 zum Beispiel.
Falls Du den MQTT in iobroker bereits als Client für andere Dinge brauchst, dann installiere eine zweite Instanz und stell die auf server.Gruss, Jürgen