Growatt-openhab (python,MQTT) Verständnisproblem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von TurboMOD »

Hallo,
ich versuche jetzt schon seit einigen Wochen immer mal wieder die Daten von meinem Growatt (Solarwechselrichter) in openhab zu integrieren. Da hat schon jemand etwas in python geschrieben: https://github.com/johanmeijer/grott Es ist dort zwar schon vieles beschrieben, aber ich verstehe trotzdem nur Bahnhof (Windowsuser xD) :?

Ich hatte auch schon diesen viewtopic.php?t=5074&hilit=growatt gefunden. Da sieht es aber genau so aus.

Ich denke mir fehlt einfach der ganze Zusammenhang. wie zb. kann man solche Dateien mit der Endung .py einfach auf den Raspi kopieren und dann irgendwie in openhab ausführen?

Ich habe aktuell openhab 3 auf einem Raspberry Pi 4 installiert, ein paar bindings installiert und things erstellt, rules geschrieben, eine sitemap erstellt und mich mit modbus auseinandergesetzt. Um mal grob meinen aktuellen Stand zu beschreiben.
Gruß
Ronny

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von TurboMOD »

Bin heute mal ein ganzes Stück weiter gekommen. Das Script läuft, bekommt die Daten vom Wechselrichter und schickt sie an den Growatt-Server weiter. Hier habe ich alle Schritte beschrieben, ist sicherlich nicht Fehlerfrei, aber es klappt: :D
https://github.com/johanmeijer/grott/issues/72
Im Anhang sieht man den Log, also die Daten kommen an.

Als nächstes habe ich ein neues thing (MQTT Broker) erstellt.

Code: Alles auswählen

UID: mqtt:broker:MQTT_Broker
label: MQTT Broker
thingTypeUID: mqtt:broker
configuration:
  lwtQos: 0
  publickeypin: true
  keepAlive: 60
  clientid: a81ddf58-d642-4e49-b211-bdc0e13539a1
  qos: 0
  reconnectTime: 60000
  port: 1883
  host: localhost
  secure: false
  certificatepin: true
  lwtRetain: true
  enableDiscovery: true
Dann das thing "Growatt" (Generic MQTT Thing)

Code: Alles auswählen

UID: mqtt:topic:MQTT_Broker:Growatt
label: Growatt
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:MQTT_Broker
channels:
  - id: ch_pvpowerout
    channelTypeUID: mqtt:number
    label: PV produktie
    description: ""
    configuration:
      stateTopic: growatt
      transformationPattern: JSONPATH:$.values.pvpowerout
Beide werden "online" angezeigt. Aber der Channel "PV produktie" bekommt keine Daten (NULL).
Hat Jemand eine Idee, wo der Fehler liegen könnte?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Ronny

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von peter-pan »

Ich gehe auch mal davon aus, dass alles (OH, Mosquitto, Python, etc) alles auf deinem Pi4 läuft und das auch die Transformation (JSONPATH:$.values.pvpowerout) richtig ist.

Hast du schon mal mit MQTT.fx geschaut, wie (und ob) deine Topics "subscribed" werden. Es steht zwar da(im Screenshot), dass ein MQTT-String erzeugt wurde und auch gesendet wurde und dann müsste er auch im MQTT-Tool (MQTT.fx) sichtbar sein.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
udo1toni
Beiträge: 15252
Registriert: 11. Apr 2018 18:05
Answers: 244
Wohnort: Darmstadt

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von udo1toni »

Insbesondere fehlt da eine Information im grott log, das ist das Topic, an das das json Objekt gesendet wurde.

Tipp am Rande: Man kann (z.B. über PuTTY) hervorragend Text in die Zwischenablage kopieren und dann von dort aus hier im Forum direkt als Text einfügen (markiert als Code), das macht die Suche nach Schlüsselwörten einfacher...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von TurboMOD »

Musste warten, bis es wieder Hell wird, da sich das Gerät abschaltet, wenn keine PV Leistung mehr erzeugt wird und ja, es ist alles auf dem gleichen RPI installiert.

MQTT.fx kannte ich noch nicht. Habe es damit direkt mal ausprobiert und da funktioniert es auf Anhieb. Dort habe ich auch gesehen, dass dort energy/growatt steht und darauf hin folgendes angepasst

Code: Alles auswählen

stateTopic: energy/growatt
@udo1toni war das schon die fehlende Information? Mit der Änderung funktioniert es leider auch nicht.
Strg + C funktionierte in Putty nicht, daher erschien es mir einfacher mal eben einen screenshot zu machen. Habe es aber gerade nachgelesen. Man muss den Text nur markieren und er landet in der Zwischenablage. Danke für den Tip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Ronny

Benutzeravatar
udo1toni
Beiträge: 15252
Registriert: 11. Apr 2018 18:05
Answers: 244
Wohnort: Darmstadt

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von udo1toni »

In PuTTY musst Du nur den Text markieren, er befindet sich dann sofort in der Zwischenablage. Umgekehrt funktioniert das Einfügen von Text in PuTTY aus der Zwischenablage über einen einfachen Rechtsklick. Der Text wird dann dort eingefügt, wo der Cursor gerade steht (nicht etwa dort, wo man hin klickt).

Da das Topic energy/growatt lautet, musst Du dieses auch eintragen.

Zur Fehlersuche bietet es sich an, zunächst die stateTransformation zu entfernen. Allerdings musst Du zusätzlich auch noch den Channel Type auf String ändern, da nun ja das komplette json Objekt im Channel landet.
Nun solltest Du im Log sehen können, wenn ein Status empfangen wird. Eventuell solltest Du zusätzlich noch ein String Item mit dem String Channel verknüpfen, nur um ganz sicher zu gehen.

Frage am Rande: möchtest Du ausschließlich die eine Information auslesen?
Falls Du weitere Informationen aus dem json Objekt auswerten willst, böte es sich an, die stateTransformation links liegen zu lassen und stattdessen pro verlinktem Item ein json Profile zu erstellen. Das hat den Vorteil, dass Du nur den einen Channel benötigst, aber viele Items mit unterschiedlichen Status füllen kannst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von peter-pan »

udo1toni hat geschrieben: 21. Nov 2021 10:01 Tipp am Rande: Man kann (z.B. über PuTTY) hervorragend Text in die Zwischenablage kopieren
...besser hätte ich das auch nicht sagen können.👍

In dem Thread in "github" kann man sehen, dass der "grott.service" nicht läuft. Ist das inzwischen behoben?

Wie Udo, habe ich mich gefragt, wie du auf das Topic "growatt" gekommen bist. Ich hab dann noch mal in deinem Querverweis gegoogelt und unter dieser Url diese MQTT-Parameter gefunden:

Code: Alles auswählen

[MQTT]
# Mqtt parameters definitions
# Be aware nomqtt = True means no MQTT processing will be done!!!!!!

nomqtt = False
ip = localhost
port = 1883
topic= energy/growatt
auth = False
user = grott
password = growatt2020
Danach lautet das Topic "energy/growatt" (ohne die anderen Parameter weiter zu bewerten). Wie sehen denn deine Topic-Einstellung hier aus ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von TurboMOD »

udo1toni hat geschrieben: 21. Nov 2021 10:47Zur Fehlersuche bietet es sich an, zunächst die stateTransformation zu entfernen. Allerdings musst Du zusätzlich auch noch den Channel Type auf String ändern, da nun ja das komplette json Objekt im Channel landet.
Nun solltest Du im Log sehen können, wenn ein Status empfangen wird. Eventuell solltest Du zusätzlich noch ein String Item mit dem String Channel verknüpfen, nur um ganz sicher zu gehen.
Ja, damit kommt jetzt alles an, sowohl im log, als auch im item:

Code: Alles auswählen

{"device": "GAH0A4409A", "time": "2021-11-21T11:15:04", "buffered": "no", "values": {"pvstatus": 1, "pvpowerin": 470, "pv1voltage": 1059, "pv1current": 3, "pv1watt": 470, "pv2voltage": 0, "pv2current": 0, "pv2watt": 0, "pvpowerout": 459, "pvfrequentie": 5000, "pvgridvoltage": 2323, "pvgridcurrent": 10, "pvgridpower": 485, "pvgridvoltage2": 0, "pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 0, "pvgridcurrent3": 0, "pvgridpower3": 0, "totworktime": 24319624, "pvenergytoday": 0, "pvenergytotal": 7556, "epvtotal": 7454, "epv1today": 0, "epv1total": 7454, "epv2today": 0, "epv2total": 0, "pvtemperature": 138, "pvipmtemperature": 234}}
Also liegt der Fehler in der stateTransformation nehme ich an?
Frage am Rande: möchtest Du ausschließlich die eine Information auslesen?
Nein, ich möchte mehrere aber nicht alle Informationen auslesen. Hatte erstmal nur einen Channel erstellt, um zu schauen, ob es funktioniert.

Der Fehler mit dem Topic ist mir jetzt auch klar. Hier hatte jemand beschrieben, wie er das Script in openhab eingebunden hat. https://community.openhab.org/t/binding ... r/96288/13

Code: Alles auswählen

Bridge mqtt:broker:bbp295broker "BBP295 MQTT Broker"[ host="192.168.1.1", port=1883, secure=false]
{
    Thing topic pvbbp295info "PV BBP295 informatie"
	{
        Channels:

            Type number : ch_pvpowerout "PV produktie" [ stateTopic="bbp295/growatt", transformationPattern="JSONPATH:$.values.pvpowerout" ]	
            Type number : ch_pvenergytoday "PV produktie vandaag" [ stateTopic="bbp295/growatt", transformationPattern="JSONPATH:$.values.pvenergytoday" ]
            Type number : ch_pvenergytotal "PV produktie totaal" [ stateTopic="bbp295/growatt", transformationPattern="JSONPATH:$.values.pvenergytotal" ]	
            Type number : ch_pvstatus "PV status" [ stateTopic="bbp295/growatt", transformationPattern="JSONPATH:$.values.pvstatus" ]	
            Type datetime : ch_time "PV laatste bericht" [ stateTopic="bbp295/growatt", transformationPattern="JSONPATH:$.time" ]				
    }
}
Ich hatte fälschlicherweise angenommen, dass das bbp295 in stateTopic="bbp295/growatt" sich auf den Namen des MQTT Brokers ("BBP295 MQTT Broker") bezieht.

EDIT: In der Grott.ini steht folgendes:

Code: Alles auswählen

#nomqtt = False
#ip = localhost
#port = 1883
#topic= energy/growatt
#auth = False
#user = grott
#password = growatt2020
Achja, der Fehler, dass grott.service nicht läuft ist behoben
Gruß
Ronny

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von TurboMOD »

Ich habe gerade die Vermutung, dass da am Anfang nix ankam, weil ich Channel Type auf Number hatte. Jetzt wo es auf String geändert ist, kommen trotzdem alle informationen an, obwohl ich die stateTransformation wieder aktiviert habe.
Gruß
Ronny

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Growatt-openhab (python,MQTT) Verständnisproblem

Beitrag von peter-pan »

...sorry, während ich noch in den Threads von "johanmeijer" gestöbert habe, habt ihr das Problem mit dem Topic schon gelöst. Wobei ich mich jetzt allerdings frage, wo das Topic bei dir gesetzt wird, wenn es in der "Ini-Datei" auskommentiert ist.

Eigentlich sollte die State-Transformation jetzt auch als Number funktionieren. Es sei denn ich habe irgend etwas übersehen. :oops:

Edit: Grad gesehen, dass vor dem Wert noch ein "Leerzeichen" steht. Dass könnte der Grund sein, dass das Number so nicht funktioniert :oops:
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten