Growatt Wechselrichter / ShineWiFi einbinden

Begonnen von chello93, 16 März 2019, 17:30:07

Vorheriges Thema - Nächstes Thema

moonsorrox

Ich schaue mir das später noch an. Bin jetzt unterwegs und werde am späten Abend nochmal schauen und evtl. fragen... wird aber erst gegen 0 Uhr werden.
Hab ja ein paar Hinweise bekommen von dir, das ist schon mal eine Hilfe  ;) Danke dafür
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

#16
ich habe es kurzer Hand nochmal mit dem Fhem User installiert, ich denke jetzt kommen ja keine Daten also kann er auch nichts auslesen.
Mal auf morgen früh warten.
Was ich noch nicht verstanden habe ist das mit dem script, auf github steht ja zu Deutsch im letzten Absatz

ZitatWenn Sie Ihren eigenen Client erstellen möchten, beginnen Sie mit growatt / __ main__.py. Kopieren Sie es und ändern Sie es nach Ihren Wünschen. Führen Sie es dann folgendermaßen aus:

das habe ich nicht richtig kapiert, muss ich dieses Script erstellen.?

venv/bin/python myscript.py 'username' 'password'

denn an dieser Stelle habe ich ja kein script. Und wenn wie muss das script denn aussehen.?

Die beiden Dateien habe ich angepaßt:
in der
plantData.py habe ich "  # print(plant_info)" auskommentiert
plantDetails.py habe ich # print(plant_detail) auskommentiert


Das hier sind die letzten Meldungen:
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
2021.01.05 01:38:20 3: growattDatas: Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

ali77

Das my script.py ist nur ein Beispiel, wie man eine Kopie anlegt. Es ging nur um plantData.py und plantDetails.py die so angelegt und geändert werden sollten. Einfach mal testen in der Konsole, ob mit dem Aufruf wie er in Fhem steht ein Ergebnis für die beiden Python Skripte ausgegeben werden.

Das "2021.01.05 01:38:20 3: growattDatas: Usage: setreading <name> ...." kommt sicher daher das noch irgendwo eine Copy/Paste Fehler drin ist und inzwischen etwas anders heißt.

moonsorrox

#18
also so richtig komme ich jetzt nicht weiter, ich habe alles nochmal gecheckt und bisher keinen Fehler gefunden, der pfad zu growatt ist auch genauso.
Dazu unten der Screenshot

hier mal mein at in Fhem:
+*00:20:00 {
  my $rawPlantData = qx (/home/fhem/growatt_api_client/venv/bin/python /home/fhem/growatt_api_client/growatt/plantData.py 'xx' 'xx');;
  getGrowattJson($rawPlantData,'jsonPlantData');;
  my $rawPlantDetails = qx (/home/fhem/growatt_api_client/venv/bin/python /home/fhem/growatt_api_client/growatt/plantDetails.py 'xx' 'xx');;
getGrowattJson($rawPlantDetails,'jsonPlantDetails');;
}


Frage dazu bei den 'xx' hinten muss aber jetzt nicht der user und das Passwort rein.?

Die ej2 sieht so aus im Def. und sie zeigt auch "active" also ist das wohl richtig.
Growatt:json.*:.\{.*}

Dann die beiden Dateien
plantData.py --> hier auskommentiert "# print(plant_detail)"
import sys
import datetime
from growatt import hash_password, GrowattApi, Timespan

username = sys.argv[1]
password = sys.argv[2]

with GrowattApi() as api:
    api.login(username, password)
    plant_info = api.plant_list()
    print(plant_info)

    plant_id = plant_info["data"][0]["plantId"]
    plant_detail = api.plant_detail(plant_id, Timespan.day, datetime.date.today())
   # print(plant_detail)


und

plantDetails.py --> hier auskommentiert "# print(plant_info)"
import sys
import datetime
from growatt import hash_password, GrowattApi, Timespan

username = sys.argv[1]
password = sys.argv[2]

with GrowattApi() as api:
    api.login(username, password)
    plant_info = api.plant_list()
    # print(plant_info)

    plant_id = plant_info["data"][0]["plantId"]
    plant_detail = api.plant_detail(plant_id, Timespan.day, datetime.date.today())
    print(plant_detail)


EDIT:// noch einen Nachtrag... wenn ich das abfragen möchte
gebe ich doch folgendes ein:

fhem@fhem-server:~/growatt_api_client$ python -m growatt 'user' 'passwort'

da bekomme ich folgendes:
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 163, in _run_module_as_main
    mod_name, _Error)
  File "/usr/lib/python2.7/runpy.py", line 111, in _get_module_details
    __import__(mod_name)  # Do not catch exceptions initializing package
  File "growatt/__init__.py", line 1, in <module>
    from enum import IntEnum
ImportError: No module named enum
fhem@fhem-server:~/growatt_api_client$
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

#19
ich glaube ich habe es jetzt.
Ich muss die Daten aus dem Dummy holen, denn da schreibt er es ja rein, richtig.?

Und jetzt habe ich im log auch Werte stehen.
Hier das list:
Internals:
   CFGFN     
   FUUID      5ff489e1-f33f-a6c6-b363-8d94f804fe80661f
   NAME       Growatt
   NR         11191
   STATE      ???
   TYPE       dummy
   READINGS:
     2021-01-05 16:51:56   data_00_30      0
     2021-01-05 16:51:56   data_01_00      0
     2021-01-05 16:51:56   data_01_30      0
     2021-01-05 16:51:56   data_01_currentPower 0 W
     2021-01-05 16:51:56   data_01_isHaveStorage false
     2021-01-05 16:51:56   data_01_plantId 294937
     2021-01-05 16:51:56   data_01_plantMoneyText 1188.2 (€)
     2021-01-05 16:51:56   data_01_plantName PV Resse
     2021-01-05 16:51:56   data_01_todayEnergy 0.1 kWh
     2021-01-05 16:51:56   data_01_totalEnergy 990.2 kWh
     2021-01-05 16:51:56   data_02_00      0
     2021-01-05 16:51:56   data_02_30      0
     2021-01-05 16:51:56   data_03_00      0
     2021-01-05 16:51:56   data_03_30      0
     2021-01-05 16:51:56   data_04_00      0
     2021-01-05 16:51:56   data_04_30      0
     2021-01-05 16:51:56   data_05_00      0
     2021-01-05 16:51:56   data_05_30      0
     2021-01-05 16:51:56   data_06_00      0
     2021-01-05 16:51:56   data_06_30      0
     2021-01-05 16:51:56   data_07_00      0
     2021-01-05 16:51:56   data_07_30      0
     2021-01-05 16:51:56   data_08_00      0
     2021-01-05 16:51:56   data_08_30      0
     2021-01-05 16:51:56   data_09_00      0
     2021-01-05 16:51:56   data_09_30      0
     2021-01-05 16:51:56   data_10_00      0
     2021-01-05 16:51:56   data_10_30      0
     2021-01-05 16:51:56   data_11_00      0
     2021-01-05 16:51:56   data_11_30      0
     2021-01-05 16:51:56   data_12_00      0
     2021-01-05 16:51:56   data_12_30      36.82
     2021-01-05 16:51:56   data_13_00      19.73
     2021-01-05 16:51:56   data_13_30      31.68
     2021-01-05 16:51:56   data_14_00      28.37
     2021-01-05 16:51:56   data_14_30      6.22
     2021-01-05 16:51:56   data_15_00      0.84
     2021-01-05 16:51:56   data_15_30      0
     2021-01-05 16:51:56   data_16_00      0
     2021-01-05 16:51:56   data_16_30      0
     2021-01-05 16:51:54   jsonPlantData   {"data": [{"plantMoneyText": "1188.2 (€)", "plantName": "PV Resse", "plantId": "294937", "isHaveStorage": "false", "todayEnergy": "0.1 kWh", "totalEnergy": "990.2 kWh", "currentPower": "0 W"}], "totalData": {"currentPowerSum": "0 W", "CO2Sum": "0 T", "isHaveStorage": "false", "eTotalMoneyText": "1188.2 (€)", "todayEnergySum": "0.1 kWh", "totalEnergySum": "990.2 kWh"}, "success": true}

     2021-01-05 16:51:56   jsonPlantDetails {"plantData": {"plantMoneyText": "0.1 (€)", "plantName": "PV Resse", "plantId": "294937", "currentEnergy": "0.1 kWh"}, "data": {"15:00": "0.84", "05:00": "0", "11:30": "0", "12:00": "0", "07:30": "0", "08:30": "0", "10:30": "0", "09:00": "0", "03:00": "0", "14:00": "28.37", "16:00": "0", "13:30": "31.68", "02:00": "0", "01:00": "0", "12:30": "36.82", "04:00": "0", "15:30": "0", "06:30": "0", "07:00": "0", "05:30": "0", "10:00": "0", "09:30": "0", "08:00": "0", "03:30": "0", "11:00": "0", "14:30": "6.22", "01:30": "0", "04:30": "0", "06:00": "0", "13:00": "19.73", "00:30": "0", "16:30": "0", "02:30": "0"}, "success": true}

     2021-01-05 16:51:56   plantData_currentEnergy 0.1 kWh
     2021-01-05 16:51:56   plantData_plantId 294937
     2021-01-05 16:51:56   plantData_plantMoneyText 0.1 (€)
     2021-01-05 16:51:56   plantData_plantName PV Resse
     2021-01-05 16:51:56   success         1
     2021-01-05 16:51:56   totalData_CO2Sum 0 T
     2021-01-05 16:51:56   totalData_currentPowerSum 0 W
     2021-01-05 16:51:56   totalData_eTotalMoneyText 1188.2 (€)
     2021-01-05 16:51:56   totalData_isHaveStorage false
     2021-01-05 16:51:56   totalData_todayEnergySum 0.1 kWh
     2021-01-05 16:51:56   totalData_totalEnergySum 990.2 kWh
Attributes:
   room       HWR


was mich noch stört idt eben dieses hier, keine Ahnung was es ist
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
2021.01.05 16:47:30 3: growattDatas: Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>

where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
2021.01.05 16:47:30 3: setReading Growatt jsonPlantDetails  : Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

#20
jetzt habe ich auch den Fehler raus mit "Please define Growatt"
Ich hatte gestern schon das Dummy angelegt.... heute nun nach dem er die ersten Daten abgeholt hat dachte ich da ich alle meine Dummy mit du_ vorn erstelle..
So also du_Growatt und in der ej2 habe ich
du_Growatt:json.*:.\{.*}

eingegeben, aber er hat trotzdem noch gemeckert irgend ein Reading muss noch Growatt heißen ich habe es noch nicht geschnallt.
Aber somit lasse ich das erst einmal so un dschaue was er so die Tage macht, ist ja grad nicht so toll...

Hast du alle in eine Readinggroup gepackt..? weil im Dummy zeigt er ja nur 3 Fragezeichen


Ne Frage zum Growatt was hast du eingegeben bei Fondsertrag, bei mir steht da 1.2 ich habe nie etwas geändert.
Es kommt ja in einem reading

totalData_eTotalMoneyText 1188.2 (€)

das stimmt ja bei mir gar nicht, da ich nur 4 Platten habe
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

@ali77
Erst einmal von mir ein herzliches Dankeschön für deine Unterstützung

Nun zu meiner Frage zeigt er dir den gestrigen Tag an, ich habe in meinen Readings nur
data_01_todayEnergy

Weil bei Growatt in der App zeigt er mehrere Tage, aber die erscheinen bei mir nicht.
Wäre für die FTUI Anzeige in einem Popup für mehrere Tageswerte ganz interessant.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

ali77

Ja das wäre interessant mit auszulesen. Bei mir ist es auch nicht dabei. Den Wert könnte man aber in einer Log mitschreiben und dann in einem Diagram anzeigen. Sicher gibt es die Growatt API her, nur das Python Script liest es nicht mit aus. Müsste man mal auseinander nehmen.

moonsorrox

wenn ich wüßte wie das geht würde ich es probieren... was gut wäre so ein paar Tage in FTUI per Popup und eine Monatsansicht, dass haben andere schon nur eben Growatt noch nicht.
Man sieht ja welch ein Aufwand gebraucht wird um diese paar Parameter raus zu bekommen
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

huhu

Hallo zusammen,

vielen Dank für die tolle Anleitung! Beziehe die Werte in FHEM, allerdings bekomme ich jeden Tag um 12Uhr +-5min einen Ertragswert Wert 0 oder nahe 0. Im Growatt Portal selbst stimmen die Angaben.

Jemand ne Idee was es sein könnte? Oder eine Idee, wie ich diesen einen Eintrag gegen 12Uhr nicht logge? (Disabled for Intervals des Logfiles wäre eine Möglicheit, allerdings schwankt es dafür zu stark)

Werte in FHEM:

2021-05-16_12:00:49 Growatt usr_data01_currentPower: 0
2021-05-17_11:53:41 Growatt usr_data01_currentPower: 1.13
2021-05-18_11:43:41 Growatt usr_data01_currentPower: 1.22
2021-05-18_11:38:40 Growatt usr_data01_currentPower: 1.11


Werte Growatt Portal heute:
11:40 582,3W
11:45 614,4W
11:50 497,6W



Ich verwende zwei Wechselrichter für verschiedene Himmelsrichtungen. Ist es hier möglich, die Werte eines einzelnen Datenloggers abzufragen? Das Script liest nur gesamt Energy und Leistung aus.

Viele Grüße


moonsorrox

#25
bei mir gibt es diese Werte so gar nicht bei mir steht immer der Wert mit Zeitangabe.

data_05_30 0 2021-05-18 12:38:15
data_06_00 0 2021-05-18 12:38:15
data_06_30 15.58 2021-05-18 12:38:15
data_07_00 53.65 2021-05-18 12:38:15
data_07_30 70.15 2021-05-18 12:38:15
data_08_00 100.43 2021-05-18 12:38:15
data_08_30 178.37 2021-05-18 12:38:15
data_09_00 356.13 2021-05-18 12:38:15
data_09_30 675.02 2021-05-18 12:38:15
data_10_00 311.73 2021-05-18 12:38:15
data_10_30 450.55 2021-05-18 12:38:15
data_11_00 229.05 2021-05-18 12:38:15
data_11_30 579.75 2021-05-18 12:38:15
data_12_00 383.33 2021-05-18 12:38:15
data_12_30 782.1 2021-05-18 12:38:15


das mit dem Plot finde ich prima habe ich so noch garnicht dran gedacht
Woher rufst du den ab, dafür braucht es doch eine Log oder nimmst du die Plotdaten aus dem dummy
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

huhu

Ich habe folgende UserReadings im Dummy angelegt:

usr_data01_totalEnergy:data_01_totalEnergy.* {ReadingsNum("Growatt","data_01_totalEnergy",0)}, usr_data01_todayEnergy:data_01_todayEnergy.* {ReadingsNum("Growatt","data_01_todayEnergy",0)}, usr_data01_currentPower:data_01_currentPower.* {ReadingsNum("Growatt","data_01_currentPower",0)}, usr_plantData_currentEnergy:plantData_currentEnergy.* {ReadingsNum("Growatt","plantData_currentEnergy",0)}

Die Readings werden dann ohne "Kwh" bzw. "W" in ein LogFile geschrieben aus dem man dann SVGs erstellen kann.


Diese fehlerhaften Werten häufen sich nun bei mir, im Growatt Portal sieht alles sauber aus, auch in der History.. Verstehe ich irgendwie nicht.

huhu

#27
Ich habe das Script bei mir nun entfernt und stattdessen den Growatt Adapter im IOBroker installiert. Funktioniert besser (hervorragend) und beinhaltet alle Werte aus dem Portal zur Anlage, jedem Datenlogger, Historische Werte usw.

1. ioBroker installieren
curl -sL https://iobroker.net/install.sh | bash -

2. ioBroker URL aufrufen und unter Adapter Growatt suchen und installieren
3. Growatt Zugangsdaten oder ApiKey (kann im Portal eingerichtet werden) im Adapter hinterlege.
4. Adapter unter Instanzen starten und warten bis Bubble grün wird
5. Room "ioB_OUT" in FHEM anlegen (es sein denn man möchte alles richtung ioBroker syncen.)
6. Prüfen ob TelnetPort / Verbindung in FHEM eingerichtet ist
7. Adapter "FHEM Connect" suchen, installieren und Zugangsdaten von FHEM eintragen
8. FHEM Connect unter Instanzen starten und warten bis Bubble grün wird
9. Unter Objekte anpassen:

fhem.0.info.Configurations.syncUpdate -> false
(true= updatereading, false = changereading)

Werte die vom IOBroker Growatt Adapter nach FHEM gesendet werden sollen (vorher im Growatt Adapter schauen was man braucht und den Objektpfad kopieren):

fhem.0.info.Configurations.allowedIOBin
->

growatt.0.123456.devices.GAH0000000.deviceData.,growatt.0.123456.devices.GAH0000000.totalData.,growatt.0.123456.devices.GAH0000000.deviceData.,growatt.0.123456.devices.GAH0000000.totalData.,growatt.0.123456.plantData.,growatt.0.info,growatt.0.123456.devices.GAH0000000.historyLast.temp1,growatt.0.123456.devices.GAH0000000.historyLast.temp5,growatt.0.123456.devices.GAH0000000.historyLast.temp1,growatt.0.123456.devices.GAH0000000.historyLast.temp5


10. Für jedes Reading wird in FHEM automatisch ein Dummy (gruppiert) angelegt und taucht nach kurzer Zeit im Raum "ioB_IN" auf, man kann nun beliebig mit den Werten arbeiten /loggen usw.
In meinem Fall habe ich ein Notify angelegt, dass dann weitere Dummys mit Werten füllt. Die gesyncten Dummys verwende ich daher nur als "Datenquelle", wer weiß ob die sich nochmal ändern nach einem Update oder Resync ect.

11. Man kann den SyncInterval des Growatt Wechselrichters von 5 auf 1min reduzieren, siehe https://github.com/PLCHome/ioBroker.growatt

moonsorrox

Super Information von dir und gleich mal ausprobiert und eigentlich alles soweit hinbekommen.
Eine ioBroker Instanz habe ich sowieso auf meinen Unraid Server im Docker laufen.

das Update im ioBroker habe ich auf "true" stehen und die Werte habe ich erstmal von dir so übernommen.
Kommt einiges rein in Fhem. Was hast du in Fhem in dem Raum "ioB_OUT" der ist bei mir noch leer

Mal ne Frage, in der Growatt App hat man ja den Wert Fondsertrag stehen, da habe ich nie etwas engestellt bisher.
Was hast du da eingetragen als Wert in Euro.
Der Wert wird eingelesen in dem dummy
formulaMoney
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

huhu

In ioB_OUT habe ich in FHEM nur ein Dummy als Platzhalter angelegt. Der FHEM Connector synct in beide Richtungen zwischen IOBroker und FHEM. Alles was im Raum ioB_OUT angelegt wird, wird also richtung IOBroker gesynct. Du kannst den Raum auch löschen, dann würde komplett FHEM dorthin gespiegelt.

Dort habe ich 0.27 eingetragen, das ist der aktuelle kWh Strompreis wenn ich Ihn beziehe. Kann in der App irgendwo eingestellt werden. Wert für Co2, Kohle und Bäume müssen auch einmalig eingegeben werden, siehe Anhang. Die Werte habe ich gegoogelt, keine Ahnung ob das auch der Realität entspricht ;)