Growatt Wechselrichter / ShineWiFi einbinden

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

Vorheriges Thema - Nächstes Thema

chello93

Hallo Leute,

hat von Euch schon jemand Erfahrungen wie man den Growatt Wechselrichter bzw. das Growatt Portal in Fhem einbinden kann?
Der ShineWiFi Stick (RS232) sendet seine Daten ja ca. alle 5 min ans Growatt Portal..
Ich würde die Daten gerne mit Fhem weiter verarbeiten.

Hat zufällig noch jemand anderes solch einen Wechselrichter?

Grüße

dieter114

Hallo chello93 :)

ich habe auch einen Growatt Wechselrichter und will den in fhem integieren.
Meiner läuft aber noch nicht, die ganze Anlage steht (noch) in der Garage.
An einer Einbindung bin ich sehr interessiert.
Kommt man an die "Roh" Daten des WIFI Stick ran.
So mit HTTPMod z.B.?

Gruß Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

dieter114

So hier nochmal ne Antwort: ;D
Ich habe den Wechselrichter über ein Sonoff-Pow Modul angeschlossen.
Wichtig dabei ist, den Pow "richtigherum" anzuschließen,
also so als ob der Growatt der "Verbraucher" ist, sonnst geht es nicht!
Die erzeugte Leistung des Wechselrichters wird im Pow als Positive Energie angezeigt
also auch wenn der Strom "Andersherum" läuft.
Es wird also nicht zwischen den Betriebsrichtungen unterschieden.
Für mich reicht das völlig aus.
Im Standby verbraucht mein 1500W Wechselrichter gelegentlich 5-8W.
Das verfälscht das Betriebsergebnis nicht wirklich.
Ach ja: den Pow mit dem neuen MQTT2_DEVICE anlegen.
Einfacher und bequemer geht es nicht.  :)
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

moonsorrox

Hat sich hier schon etwas getan in Sachen Growatt Wechselrichter.
Evtl gibt es schon die Möglichkeit etwas auszulesen..?
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

Es gibt ein paar Neuigkeiten zu Growatt. Die Infos habe ich aus dem Photovoltaikforum.
Es sollen Verbindungen über MQTT zu Fhem möglich sein, dass wäre wohl interessant.

Ich selber habe es noch nicht ausprobiert, weil man sich auf der Seite (link) im Forum anmelden muss um an die Software zu kommen.
Ich hänge mal ein PDF dran wo einiges erklärt wird.

Hier steht Growatt seit neustem mit in der Liste, der ganz letzte.
https://solaranzeige.de/phpBB3/viewtopic.php?f=9&t=170
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

dieter114

Es gibt da einen vielversprechenden Lösungsansatz.
Sieh mal hier; https://forum.iobroker.net/topic/20014/growatt-wechselrichter-%C3%BCber-modbus-auslesen-gel%C3%B6st
Das könnte gehen wenn es richtig in fhem eingebunden wird.
Behalte ich mal im "Hinterkopf"...

Gruß WDS
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

ali77

#6
Ich habe es folgendermaßen gelöst:

1. Das growatt_api_client Script nach Anleitung eingerichtet. Ich habe das Script in zwei geteilt (PlantDetails und PlantData), weil sonst kein richtiges Json zurück kommt
https://github.com/Sjord/growatt_api_client

2.Ein Dummy für die Daten
define Growatt dummy
attr Growatt room Photovoltaik

3. in der 99_myUtils.pm zwei kleine Subs um das Json vorzubereiten (true kleinschreiben und " statt '). Das aufbereitete JSON wird in den dummy geschrieben.
sub growattPlantDetails($) {
   my ($rawDatas) = @_;   
   $rawDatas =~ s/'/"/g;
       my $jsonString = $rawDatas =~ s/True/true/r;
    fhem("setReading Growatt jsonPlantDetails ".$jsonString);
}

4. Ein at um die Daten alle 30 Minuten abzuholen

define growattDatas at +*00:30:00 {\
  my $rawPlantData = qx (/home/pi/growatt_api_client/venv/bin/python /home/pi/growatt_api_client/growatt/plantData.py 'user' 'password');;\
  growattPlantData($rawPlantData);;\
  my $rawPlantDetails = qx (/home/pi/growatt_api_client/venv/bin/python /home/pi/growatt_api_client/growatt/plantDetails.py 'user' 'password');;\
growattPlantDetails($rawPlantDetails);;\
}

5. Ein expandJSON um automatisch aus den JSON-Rohdaten im Growatt dummy einzelne Readings zu bekommen.
define ej2 expandJSON Growatt:json.*:.\{.*}

moonsorrox

funktioniert das dann alles über Netzwerk, oder braucht es wieder diese Zweidraht Konstruktion..? damit läuft es dann auch mit der Solaranzeige wenn ich da oben einen Pi hinhänge, aber das wollte ich vermeiden. Sonst könnte ich es mut dem Docker nutzen.
Problem bei mir ich komme eben nicht zum Fhem Server vom Dachboden mit einem Kabel.
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

Meine Lösung geht über die Growatt Cloud (server.growatt.com) Die Daten schreibt der Wechselrichter über den Wifi Dongle dort hin.

moonsorrox

ja ganz genau, so habe ich es auch und war immer der Meinung, wenn die meine Daten bekommen... muss ich ich da auch ran kommen.
Ich habe den LAN Stick extra gekauft weil ich eben dachte ich kann die Daten selber mit meiner Fhem Instanz aufzeichen, aber das war ein Trugschluss...!

Aber jetzt hast du es ja gezeigt das es funktioniert.
Ich werde versuchen das mal nach zu stellen, weiß nicht ob ich das hinbekomme.
Schaue mir mal deine ganzen Dinge von oben in Ruhe an... schau mal öfter hier rein falls ich Fragen 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

das hier habe ich noch nicht kapiert, ich setze das mal in Code Tags
3. in der 99_myUtils.pm zwei kleine Subs um das Json vorzubereiten (true kleinschreiben und " statt '). Das aufbereitete JSON wird in den dummy geschrieben.
Das ist nur ein Sub und das mit true habe ich gemacht und was ist sonst noch gemeint und wie sieht das zweite aus..?

ist das richtig so..?

sub growattPlantDetails($) {
   my ($rawDatas) = @_;   
   $rawDatas =~ s/'/"/g;
       my $jsonString = $rawDatas =~ s/true/true/r;
    fhem("setReading Growatt jsonPlantDetails ".$jsonString);
}
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

#11
Ja es waren mal zwei, weil ich den Aufruf geteilt hatte. Ich habe es mal wieder in eine gepackt:


sub getGrowattJson($$) {
     my ($rawDatas, $readingname) = @_; 
     $rawDatas =~ s/'/"/g;
     my $jsonString = $rawDatas =~ s/True/true/r;
     fhem("setReading Growatt ".$readingname." ".$jsonString);
}


Aufruf dann:

define growattDatas at +*00:30:00 {\
  my $rawPlantData = qx (/home/pi/growatt_api_client/venv/bin/python /home/pi/growatt_api_client/growatt/plantData.py 'xx' 'xx');;\
  getGrowattJson($rawPlantData,'jsonPlantData');;\
  my $rawPlantDetails = qx (/home/pi/growatt_api_client/venv/bin/python /home/pi/growatt_api_client/growatt/plantDetails.py 'xx' 'xx');;\
getGrowattJson($rawPlantDetails,'jsonPlantDetails');;\
}


Die plantData.py und plantDetails.py  sind nur kopierte __main__.py in der ich entweder print(plant_info) oder print(plant_detail) am Ende auskommentiert habe, damit nicht beides zusammen im JSON ist. Hätte man natürlich besser umbauen können.


moonsorrox

zu den "plantData.py und plantDetails.py"
müssen die so heißen.?
weil ich da nur die "__init__.py" und die "__main__.py" drin habe und der Pfad muss angepaßt werden.
Bei mir liegen die in
/root/growatt_api_client/growatt

weil ich keinen pi habe, aber das habe ich schon angepaßt, nur eben die Dateinamen wie müssen die genau heißen.

Ich habe in ssh schon gesehen das er meine Daten geholt hat, ich muss eben nur noch das at anpassen sonst wird das nichts.
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

jade Name so wie im Aufruf, also:  ".../python /pfad_zum_script/plantData.py 'user' 'pw'

my $rawPlantData = qx (/home/pi/growatt_api_client/venv/bin/python /home/pi/growatt_api_client/growatt/plantData.py 'user' 'pword');;\




ali77

#14
Die beiden ...py sind ja nur Kopien von __main__.py wie auf https://github.com/Sjord/growatt_api_client unten beschrieben

Zitat
If you want to create your own client, start from growatt/__main__.py. Copy it and change it to your liking, and then run it like this:

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

Und dann jeweils die Ausgabe der JSON auskommentieren