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
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
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. :)
Hat sich hier schon etwas getan in Sachen Growatt Wechselrichter.
Evtl gibt es schon die Möglichkeit etwas auszulesen..?
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 (https://solaranzeige.de)) 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 (https://solaranzeige.de/phpBB3/viewtopic.php?f=9&t=170)
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
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.*:.\{.*}
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.
Meine Lösung geht über die Growatt Cloud (server.growatt.com) Die Daten schreibt der Wechselrichter über den Wifi Dongle dort hin.
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 ;)
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);
}
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.
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.
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');;\
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
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
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>
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.
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$
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>
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
@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.
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.
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
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
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
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.
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
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
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 ;)
Nochmal eine Frage zum Status er hat ja automatisch die dummys eingerichtet.
Mein dummy
Zitatgrowatt.0.294937.devices.QMB39212B4.totalData.mToday
zeigt heute garnichts und wird auch nicht aktualisiert :-\
aktuell hat er aber eine Leistung von der PV Anlage. Ich sehe das er zum letzten mal in der Nacht um 1.58 Uhr in Fhem aktualisiert hat.
Im ioBroker sieht soweit alles OK aus, evtl. ist dort an den Syncwerten etwas nicht OK...?
onlySyncNAME state
SYNC - only sync device(s) NAME
onlySyncRoom state
SYNC - only sync device(s) if room exist (default: ioBroker,ioB_OUT)
onlySyncTYPE state
SYNC - only sync device(s) TYPE
syncUpdate state
FUNCTION - sync update FHEM reading admin.0/admin ok 2021-05-24 14:15:44.252 2021-05-24 14:15:44.252 false
syncUpdateIOBin state
FUNCTION - sync update allowedIOBin fhem.0/admin ok 2021-05-23 18:27:39.785 2021-05-23 13:45:30.798 true
EDIT:// ich habe den Growatt Adapter im ioBroker nochmals installiert, jetzt geht es wieder.
Mal schauen was morgen dann ist... keine Ahnung woran es liegt.
Also irgend etwas ist da faul...! weiß nur noch nicht was...!
mal ein dummy als Beispiel:
growatt.0.294937.devices.QMB39212B4.deviceData.pac
Leistung und wird nicht aktualisiert, der state ist seit 1.32 Uhr auf 0.
Wenn ich jetzt den ioBroker neu starte macht er wieder alles....
Ich würde mal weiter eingrenzen, werden die Werte im IOBroker ebenfalls nicht aktualisiert oder nur in FHEM?
Sprich, überträgt der FHEM Connector keine Werte mehr, oder auch kommen im Growatt Adapter keine mehr an?
Im IOBroker gibt es auch ein Log, vielleicht hilft Dir das bei der Eingrenzung weiter.
Unschön, aber als Workaround könnte man den IO gegen 5Uhr einmal neustarten..
Ich werde das mal genauer untersuchen und hier berichten.
Ich arbeite gerade daran den ioBroker auf meinem Intel NUC im LXC laufen zu lassen und werde dann den mal benutzen, mal schauen ob sich etwas ändert.
Noch läuft der ioBroker auf meinem Unraid Server in einem Docker Container, evtl. liegt die Ursache dort.
Ich weiß jetzt auch nicht genau ob es evtl. am Unraid Server liegt und ob der vllt. in den Ruheszustand geht, aber die Container sollten davon eigenlich nicht betroffen sein.
Das log schuae ich mir mal an...
Ich habe den Fehler heute auch zum ersten Mal gehabt...
In FHEM wurden die Werte letztmalig diese Nacht um 03:59:58h aktualisiert. Im IOBroker wurden die Werte im Growatt Adapter ebenfalls nicht aktualisiert, erst wieder, nachdem ich den Adapter disabled und enabled habe.
Ich vermute ganz stark, dass dies mit der Internetverbindung zusammen hängen kann. Um exakt 04:00:00 trenne ich via FHEM die Verbindung und mache einen Reconnect, damit die 24Std Zwangstrennung (die es in 2021 immer noch geben muss ;D) immer zur gleichen Zeit stattfindet.
Guck doch mal bei Dir, wann die letzten Tage die Verbindung neu aufgebaut wurde.
Edit, ich hab jetzt mal nen automatischen Neustart eingerichtet (das Problem haben scheinbar ganz viele Adapter im IO.....). Experten Modus, dann kannst Du die Zeit eintragen. Besser wäre natürlich einen Trigger über FHEM, wenn sich die externe IP geändert hat dann starte Adapter neu. Aber schauen wir erstmal :)
Das ist bei mir eine andere Zeit, dass hatte ich erst vermutet, aber ich trenne durch die FB umd 3 Uhr.
Das bei mir der ioBroker stehen bleibt war immer 1.30 Uhr rum.
Aber ich habe jetzt mal den ioBroker auf einem Proxmox in einem LXC installiert und heute ist er durch gelaufen mit diesem ioBroker.
Ich vermute das mein Unraid Server sich hat schlafen gelegt.... das er dadurch abgebrochen hat.
Denn ich weiß das ich morgens den Server per WOL wecken muss weil auch dort mein Musikserver drauf läuft.
Aber ich werde die Tage noch alles beobachten, da mir die Informationen über den ioBoker so sehr gut gefallen und es ist kein gefrickel in Fhem welches ich vorher veranstalten mußte.
Jetz muss ich mir nur nochmal die relevanten Werte raus suchen die ich gerne sehen möchte, ich denke auch das dieses ein einziges DOIF machen könnte.
Werde mich damit mal beschäftigen und berichten denn soviel Werte braucht es ja nicht.
Du sagtest ja das du dafür nochmals dummys einsetzt und schreibst es dann wohl in Logfiles, denn die habe ich noch nicht... dann eben daraus ein Plot erstellen für Tages-, Monats- und Jahreswerte würde komplett reichen evtl. noch die aktuelle Leistung.
hier also nochmal meine Rückmeldung, jetzt da der ioBroker auf einem Intel-NUC mit Proxmox im LXC arbeitet, läuft alles hervorragend.
Daten kommen ohne Probleme keine Aussetzer.
Werde mich jetzt mal dran machen und das irgendwie in Fhem umsetzen damit ich eine schöne grafische Darstellung habe. so wie du auch mit Plot.
Welche Werte stellst du monatlich dar..?
Wäre mal interessant solch ein Plot mit den Tagen im Monat zu haben, damit man jeden Tag im Vergleich sieht... ich habe ehrlich gesagt noch sogut wie keine Erfahrung mit Plots, aber es gefällt mir.
Kannst mir ja gerne mal ein Beispiel zeigen...
Danke
Bisher läufts bei mir auch prima mit dem automatischen Neustart des Adapters!
Aktuell speichere ich folgende Werte ganztägig im Log um diese Grafisch anzuzeigen (Dummys haben unterschiedliche min-INtervale, damit nicht jede Minute geloggt wird):
Gesamtleistung
Leistung SüdOst
Leistung Nordwest
Temperatur Wechselrichter SO
Temperatur Wechselrihter NW
Ein weiteres Log befülle ich kurz vor Mitternacht und kurz nach Mitternacht mit den Werten:
(Log = disabledforInterval 00:04-23:56)
2021-05-28_23:57:02 D_pv_kwhgesamt 110.9
2021-05-28_23:57:02 D_pv_kwhheuteso 5.5
2021-05-28_23:57:02 D_pv_kwhheutenw 5.4
2021-05-28_23:57:02 D_pv_kwhheute 10.9
2021-05-28_23:57:02 D_pv_kwhmonatso 67.4
2021-05-28_23:57:02 D_pv_kwhmonatnw 41.6
2021-05-28_23:57:02 D_pv_kwhmonat 109
2021-05-28_23:57:02 D_pv_kwhso 69.3
2021-05-28_23:57:02 D_pv_kwhnw 41.6
2021-05-28_23:57:02 D_pv_euro 29.9
2021-05-28_23:57:02 D_pv_euroso 18.7
2021-05-28_23:57:02 D_pv_euronw 11.2
2021-05-28_23:57:02 D_pv_eurotoday 3
2021-05-28_23:57:02 D_pv_eurotodayso 1.5
2021-05-28_23:57:02 D_pv_eurotodaynw 1.5
2021-05-29_00:00:08 D_pv_kwhgesamt 110.9
2021-05-29_00:00:08 D_pv_kwhheuteso 5.5
2021-05-29_00:00:08 D_pv_kwhheutenw 0
2021-05-29_00:00:08 D_pv_kwhheute 5.5
2021-05-29_00:00:08 D_pv_kwhmonatso 67.4
2021-05-29_00:00:08 D_pv_kwhmonatnw 41.6
2021-05-29_00:00:08 D_pv_kwhmonat 109
2021-05-29_00:00:08 D_pv_kwhso 69.3
2021-05-29_00:00:08 D_pv_kwhnw 41.6
2021-05-29_00:00:08 D_pv_euro 29.9
2021-05-29_00:00:08 D_pv_euroso 18.7
2021-05-29_00:00:08 D_pv_euronw 11.2
2021-05-29_00:00:08 D_pv_eurotoday 1.5
2021-05-29_00:00:08 D_pv_eurotodayso 1.5
2021-05-29_00:00:08 D_pv_eurotodaynw 0
Aktuell nutze ich davon noch nicht alles für Plots, aber zumindest sind die Werte schonmal da. Mache das ganze über ein Notify (geht sicher elagenter, doch so funktioniert es prima):
growatt.0.123456.devices.GA0000000H.deviceData.lastUpdateTime.*|growatt.0.123456.devices.GA0000001.deviceData.lastUpdateTime.*
{
my $pacnw=Value("growatt.0.123456.devices.GA0000000H.deviceData.pac");
my $pacso=Value("growatt.0.123456.devices.GA0000001.deviceData.pac");
my $pacgesamt=$pacso+$pacnw;
my $temp1so=Value("growatt.0.123456.devices.GA0000001.historyLast.temp1");
my $temp5so=Value("growatt.0.123456.devices.GA0000001.historyLast.temp5");
my $tempso=round($temp1so+$temp5so)/2;
my $temp1nw=Value("growatt.0.123456.devices.GA0000000H.historyLast.temp1");
my $temp5nw=Value("growatt.0.123456.devices.GA0000000H.historyLast.temp5");
my $tempnw=round($temp1nw+$temp5nw)/2;
my $kwhheuteso=Value("growatt.0.123456.devices.GA0000001.deviceData.eToday");
my $kwhheutenw=Value("growatt.0.123456.devices.GA0000000H.deviceData.eToday");
my $kwhheute=$kwhheuteso+$kwhheutenw;
my $kwhmonatso=Value("growatt.0.123456.devices.GA0000001.deviceData.eMonth");
my $kwhmonatnw=Value("growatt.0.123456.devices.GA0000000H.deviceData.eMonth");
my $kwhmonat=$kwhmonatso+$kwhmonatnw;
my $kwhtotalso=Value("growatt.0.123456.devices.GA0000001.deviceData.eTotal");
my $kwhtotalnw=Value("growatt.0.123456.devices.GA0000000H.deviceData.eTotal");
my $kwhtotal=$kwhtotalso+$kwhtotalnw;
my $euroso=Value("growatt.0.123456.devices.GA0000001.totalData.mTotal");
my $euronw=Value("growatt.0.123456.devices.GA0000000H.totalData.mTotal");
my $euro=$euroso+$euronw;
my $eurotodayso=Value("growatt.0.123456.devices.GA0000001.totalData.mToday");
my $eurotodaynw=Value("growatt.0.123456.devices.GA0000000H.totalData.mToday");
my $eurotoday=$eurotodayso+$eurotodaynw;
my $kwhgesamt=Value("growatt.0.123456.plantData.eTotal");
fhem("set D_pv_pacgesamt $pacgesamt; set D_pv_pacso $pacso; set D_pv_pacnw $pacnw; set D_pv_tempso $tempso; set D_pv_tempnw $tempnw; set D_pv_kwhgesamt $kwhgesamt; set D_pv_kwhheuteso $kwhheuteso; set D_pv_kwhheutenw $kwhheutenw; set D_pv_kwhheute $kwhheute; set D_pv_kwhmonatso $kwhmonatso; set D_pv_kwhmonatnw $kwhmonatnw; set D_pv_kwhmonat $kwhmonat; set D_pv_kwhso $kwhtotalso; set D_pv_kwhnw $kwhtotalnw; set D_pv_euro $euro; set D_pv_euroso $euroso; set D_pv_euronw $euronw; set D_pv_eurotoday $eurotoday; set D_pv_eurotodayso $eurotodayso; set D_pv_eurotodaynw $eurotodaynw");
Die Plots von heute sind im Anhang, ich weiß allerdings nicht, warum der Chart PV Gesamtertrag so komisch angezeigt wird (die kleine Spitze am Ende ist der eigentliche Wert)..
OK, da muss ich nochmal in mich gehen, denn ich bekomme mit meinem Growatt wohl nicht die Werte so wie du sie bekommst.
Ich habe den Growatt 1500 S mit LAN Stick in Betrieb.
Temperatur vom Wechselrichter bekomme ich z.B. gar nicht
Das wichtigste ist wohl dieses vom ioBroker an Werten, denn viel mehr kommt da nicht bei mir:
growatt.0.123456.devices.QMxxxxxxB4.totalData
eToday 4.7
eTotal 1494.3
mToday 1.3
mTotal 403.5
mUnitText €
plantId 2xxxxx
heißen auch ganz anders als bei dir, gut das NW und SO ist mir schon klar weil du zwei verscheiden ausgerichtete Anlagen hast.
Und die Werte wie die Anlage heißt und weitere Werte ist bei mir jetzt nicht so interessant.
Die Daten befinden sich im IO in verschiedenen "Ordnern"
growatt.0.123456.devices.GA0000000H.historyLast
growatt.0.123456.devices.GA0000000H.deviceData
growatt.0.123456.plantData
Du müsstest jeden Pfad Richtung FHEM syncen, damit diese dort vorhanden sind
aha, den ersten habe ich nämlich nicht und da ist bei mir auch die Temperatur "temperature" drin ;)
die anderen beiden habe ich aber.
Habe ich jetzt mal so eingetragen damit das auch kommt und ist auch immer noch stabil, keine Abbrüche
also hier nochmal ein Rückmeldung von mir war jetzt ein paar Tage nicht da und stelle fest das ich momentan auch keine Daten mehr bekomme. Der letzte Stand war der 23.06 im ioBroker.
Muss mal schauen was ich da jetzt mache, habe das Plugin im ioBroker nochmal gestartet aber es kommt trotzdem nichts.
Ich habe nun mal im ioBroker auch die Zeit eingetragen, da er hauet Nacht wieder stehen geblieben ist.
Werde mal beobachten was morgen passiert.
Was ich nicht verstehe ist das es bis zum 23.06 gut funktioniert hat und nun eben die Tage bis jetzt garnicht mehr.
Hi Zusammen,
ich habe vor einiger Zeit das Modul hier eingerichtet und es hat alles sehr gut funktioniert. Jetzt geht seit ca. Anfang des Monat das Auslesen der aktuellen Power nicht mehr.
Habe mal zwei Bilder angehängt, wie sich der Fehler äußert. Die Gesamtleistung für den Tag und Insgesamt funktioniert weiterhin. Nur die aktuelle Power zeigt er meist einfach 0 an.
Habt ihr auch den Fehler bzw. wisst ihr, was sich geändert haben könnte?
Danke im Voraus
welche Varainte hast du denn genommen, ich betreibe ja die mit dem ioBroker und die lief vor 2 Wochen mal ein paar Tage garnicht, jetzt aber schon.
Die Chinesen haben irgend etwas umgestellt hieß es im ioBroker Forum.
Die Variante am Anfang des Threads mit "ej2" und Growatt zeigt bei mir nämlich auch "0" an
Ich hänge mal den Screenshot ran.
Aber ich nutze es eben nicht mehr, habe es nur noch zur Info drin.
Hi,
ja, ich nutze die Variante mit "ej2". Ich wollte mir es sparen, dass ich extra den iobroker installieren muss.
Du nutzt den iobroker und übergibst es dann an FHEM?
Danke Dir
ja ich habe den so oder so auf dem Proxmox in einem LXC am laufen.
Da ist das sehr einfach, nur das Modul für Growatt installieren kurz die API oder User mit Kennwort eingeben und du kannst bestimmen welche Daten er an Fhem weiterleitet.
Ist ja hier auch beschrieben.
Aber trotzdem ist es so das die Chinesen etwas verändert haben und das muss man dann in der Installation/ej2 ändern, aber da kenne ich mich nicht mit aus.
Im ioBroker hat der Modulentwickler ein paar Tage gebraucht und es gefixt.
Hi,
habs jetzt auch auf nem iobroker. Funktioniert wirklich gut. Hoffentlich ändern die Chinesen nicht so bald wieder was an der Seite ;)
Danke
Bei mir funktioniert das Modul seit einigen Tagen nicht mehr richtigt.
Letzten Monat habe ich auch einen neuen TokenKey von Growatt erhalten, im Modul melde ich mich aber mit Benutzer+Passwort an.
Funktioniert es bei euch?
ja aktuell läuft es bei mir...!
Läuft bei mir derzeit auch, hatte aber letzte Woche ein paar Verbindungsabbrüche. Da kamen ein paar Werte nicht rein. Dann gab es aber das Update im iobroker auf 1.1.16 und dann gings. Und ich sehe gerade, dass es jetzt version 1.1.17 gibt
Mache gerade meine allerersten Gehversuche mit dem ioBroker (neu installiert auf RasPi 4, Vers. 1.1.17) und habe bereits den Growatt-Adapter installiert (die Webversion ohne ioBroker klappt übrigens einwandfrei).
Unter "Adapter" erscheint Growatt mit schwarzer Cloud und folgender Anmerkung: "Der Adapter erfordert den spezifischen Cloudzugriff für diese Geräte / Dienste"
Angemeldet habe ich mich mit Username und PW.
Nun kann man sich ja auch einen Key zuschicken lassen (Energy/Plantmanagement/Operating Tools/Share Plant), jedoch erreicht mich keine Nachricht in meinem MailAccount.
Was ist zu tun, um siesen spezifischen Cloud-Zugriff zu realisieren?
Mein späteres Ziel ist, die PV-Visualisierung des MOD 5000TL3-XH per VIS oder in meinem Tablet-UI bei FHEM zu bewerkstelligen.
p.s.: im Log erscheint "Growatt exception: AxiosError: Request failed with status code 502"
Update um 16:50 Uhr:
Mittlerweile konnte ich mir den Key zuschicken lassen - zumindest wurde meine Emailadresse akzeptiert - ein Key ist aber noch nicht angekommen, auch nicht im Spam-Ordner!
Ich habe es immer über Name und Passwort gemacht. Aber bei mir ging in letzter Zeit der Adapter im iobroker nicht richtig. Lag aber nicht am iobroker oder am Adapter, sondern am chinesischen Server. Hatten einige das Problem mit Fehler Code 588. Ich habe mir jetzt den "Grott" installiert. Hier auf Github zu finden: https://github.com/johanmeijer/grott (https://github.com/johanmeijer/grott)
Damit sendet jetzt mein Stick an meinen Raspi per MQTT und von dort dann an die Chinesen. Seitdem läuft es deutlich stabiler. Im iobroker ist zwar mittlerweile Version 1.1.19 vorhanden und soll nun auch gehen, laut Forum gibt es immer mal wieder Probleme mit den Chinesen :-) Siehe hier: https://forum.iobroker.net/topic/36474/test-adapter-growatt-v1-0-0/206 (https://forum.iobroker.net/topic/36474/test-adapter-growatt-v1-0-0/206)
Grüße
habe ich auch immer mal wieder
Growatt exception: AxiosError: Request failed with status code 588
ich habe noch die Version 1.1.17 ein update wird bisher nicht automatisch angeboten kommt sicher noch
Werde mir mal den Grott ansehen, ob der auch in eine VM oder LXC unter Proxmox die Daten senden kann.
Ja laut Forum geht das wohl habe ich gerade gelesen.
Nochmal ne Frage zum installieren des Grott ich habe jetzt nicht gefunden wie der von Git direkt installiert wird und in welches Verzeichnis der genau muss.
Wie und wo hast du ihn installiert..?
Ist ein Python-script, dass ich auf einem Raspi "installiert" habe. Das läuft dann als Dienst im Hintergrund.
Anleitung dazu ist auf der GitHub-Seite, oben im Wiki bei "@ First time installation".
Nur zur Info, es existiert auch ein sehr einfacher, günstiger und vor Allem Cloudfreier Weg die Daten in FHEM zu bekommen.
Alles was man dazu braucht ist entweder den Wifi Stick den man umflasht, oder ein ESP8266 der per USB Kabel an den WR gesteckt wird.
Die SW kommt von hier: https://github.com/otti/Growatt_ShineWiFi-S
Und die Daten kommen per MQTT ins FHEM:
defmod Solaranlage MQTT2_DEVICE
attr Solaranlage devicetopic energy/solar
attr Solaranlage event-on-change-reading InputPower:0.1,InverterStatus:.*,InverterTemperature:.*,OutputPower:1 PV1.*:0.1,PVEnergyTotal.*:0.1,TodayGenerateEnergy:0.1,TotalGenerateEnergy:0.1,TemperatureInsideIPM:0.1
attr Solaranlage group PV
attr Solaranlage readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
attr Solaranlage room 20_Verbrauchsmessung
attr Solaranlage sortby 1
attr Solaranlage stateFormat Aktuelle Leistung: OutputPower W | heute erzeugte Energie TodayGenerateEnergy kWh
setstate Solaranlage Aktuelle Leistung: 399.3 W | heute erzeugte Energie 0.4 kWh
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToGrid 0
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToGridTotal 0
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToUser 0
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToUserTotal 0
setstate Solaranlage 2022-11-08 10:13:34 BatteryState 0
setstate Solaranlage 2022-11-08 10:13:34 BatteryTemperature 0
setstate Solaranlage 2022-11-08 10:13:34 BatteryVoltage 0
setstate Solaranlage 2022-11-08 10:13:34 BoostTemperature 0
setstate Solaranlage 2022-11-08 10:13:34 ChargeEnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 ChargeEnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 ChargePower 0
setstate Solaranlage 2022-11-08 10:13:34 Cnt 2407
setstate Solaranlage 2022-11-08 10:13:34 DischargeEnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 DischargeEnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 DischargePower 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToGridToday 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToGridTotal 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToUserToday 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToUserTotal 0
setstate Solaranlage 2022-11-08 10:13:34 GridFrequency 50
setstate Solaranlage 2022-11-08 10:13:34 INVPowerToLocalLoad 0
setstate Solaranlage 2022-11-08 10:13:34 INVPowerToLocalLoadTotal 0
setstate Solaranlage 2022-10-26 19:54:01 IODev mqtt2_client
setstate Solaranlage 2022-11-08 10:13:34 InputPower 407.4
setstate Solaranlage 2022-11-08 10:13:34 InverterStatus 1
setstate Solaranlage 2022-11-08 10:13:34 InverterTemperature 32
setstate Solaranlage 2022-11-08 10:13:34 L1ThreePhaseGridOutputCurrent 1.9
setstate Solaranlage 2022-11-08 10:13:34 L1ThreePhaseGridOutputPower 399.9
setstate Solaranlage 2022-11-08 10:13:34 L1ThreePhaseGridVoltage 226.4
setstate Solaranlage 2022-11-08 10:13:34 L2ThreePhaseGridOutputCurrent 0
setstate Solaranlage 2022-11-08 10:13:34 L2ThreePhaseGridOutputPower 0
setstate Solaranlage 2022-11-08 10:13:34 L2ThreePhaseGridVoltage 0
setstate Solaranlage 2022-11-08 10:13:34 L3ThreePhaseGridOutputCurrent 0
setstate Solaranlage 2022-11-08 10:13:34 L3ThreePhaseGridOutputPower 0
setstate Solaranlage 2022-11-08 10:13:34 L3ThreePhaseGridVoltage 0
setstate Solaranlage 2022-11-08 10:13:34 LocalLoadEnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 LocalLoadEnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 Mac 24:62:AB:09:48:AC
setstate Solaranlage 2022-11-08 10:13:34 OutputPower 399.3
setstate Solaranlage 2022-11-08 10:13:34 PV1EnergyToday 0.5
setstate Solaranlage 2022-11-08 10:13:34 PV1EnergyTotal 39
setstate Solaranlage 2022-11-08 10:13:34 PV1InputCurrent 6.1
setstate Solaranlage 2022-11-08 10:13:34 PV1InputPower 407.4
setstate Solaranlage 2022-11-08 10:13:34 PV1Voltage 70
setstate Solaranlage 2022-11-08 10:13:34 PV2EnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 PV2EnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 PV2InputCurrent 0
setstate Solaranlage 2022-11-08 10:13:34 PV2InputPower 0
setstate Solaranlage 2022-11-08 10:13:34 PV2Voltage 0
setstate Solaranlage 2022-11-08 10:13:34 PVEnergyTotal 39
setstate Solaranlage 2022-11-08 10:13:34 SOC 0
setstate Solaranlage 2022-11-08 10:13:34 TWorkTimeTotal 787641.5
setstate Solaranlage 2022-11-08 10:13:34 TemperatureInsideIPM 32
setstate Solaranlage 2022-11-08 10:13:34 TodayGenerateEnergy 0.4
setstate Solaranlage 2022-11-08 10:13:34 TotalGenerateEnergy 38.3
setstate Solaranlage 2022-11-02 08:04:29 json2nameValueErrorText json2nameValue: no closing } found
setstate Solaranlage 2022-11-02 08:04:29 json2nameValueInput {"InverterStatus":1,"InputPower":115.3,"PV1Voltage":71.4,"PV1InputCurrent":1.6,"PV1InputPower":115.3,"PV2Voltage":0,"PV2InputCurrent":0,"PV2InputPower":0,"OutputPower":113,"GridFrequency":50.02,"L1ThreePhaseGridVoltage":222.9,"L1ThreePhaseGridOutputCurrent":1.4,"L1ThreePhaseGridOutputPower":115.7,"L2ThreePhaseGridVoltage":0,"L2ThreePhaseGridOutputCurrent":0,"L2ThreePhaseGridOutputPower":0,"L3ThreePhaseGridVoltage":0,"L3ThreePhaseGridOutputCurrent":0,"L3ThreePhaseGridOutputPower":0,"TodayGenerateEnergy":0,"TotalGenerateEnergy":28.7,"TWorkTimeTotal":580932.5,"PV1EnergyToday":0,"PV1EnergyTotal":29.2,"PV2EnergyToday":0,"PV2EnergyTotal":0,"PVEnergyTotal":29.2,"InverterTemperature":19.3,"TemperatureInsideIPM":19.3,"BoostTemperature":0,"DischargePower":0,"ChargePower":0,"BatteryVoltage":0,"SOC":0,"ACPowerToUser":0,"ACPowerToUserTotal":0,"ACPowerToGrid":0,"ACPowerToGridTotal":0,"INVPowerToLocalLoad":0,"INVPowerToLocalLoadTotal":0,"BatteryTemperature":0,"BatteryState":0,"EnergyToUserToday":0,"EnergyToUserTotal":0,"EnergyToGridToday":0,"EnergyToGrid�
Parallel hat man auch eine rudimentäte Webansicht, siehe Bild.
Hallo zusammen,
es ist auch möglich, ohne Flashen oder Daten mit grott abzufangen und ohne Cloud Anmeldung, die aktuellen Werte aus der Cloud zu erhalten.
- PlantID ermitteln
- HTTPMOD Device anlegen
- Auf dem Server anmelden
- Wechsel zu Energy/Plant Management
- Mittels Developer Tools den Netzwerkverkehr analysieren und (nach Refresh der Seite) eine Anfrage mit dem Parameter "plantId=" finden (Firefox: Typ "XHR").
- FHEM HTTPMOD device anlegen. Dafür gibt es zwei Optionen:
- getPlantData: Statistik und aktueller Wert in kW auf eine Nachkommastelle gerundet (min. 0,1 kW)
- getInvDayChart: Genaue Werte des Tages in W auf eine Nachkommastelle gerundet
Hinweis:
- Da der letzte Chartwert ggf. nicht Null wird habe ich noch einen Watchdog eingerichtet, der den aktuellen Wert nach 16 Minuten ohne Änderung auf "-" setzt.
- Die ermittelte PlantID muss als Requestdata ("Post") übermittelt werden
getPlantData
defmod Strom_Balkon HTTPMOD https://server.growatt.com/singlePage/getPlantData
attr Strom_Balkon requestData plantId=<YourPlantID>
attr Strom_Balkon alias Photovoltaik
attr Strom_Balkon enableControlSet 1
attr Strom_Balkon event-on-change-reading .*
attr Strom_Balkon extractAllJSON 1
attr Strom_Balkon group Strom
attr Strom_Balkon icon measure_photovoltaic_inst
attr Strom_Balkon room Strom
attr Strom_Balkon showBody 0
attr Strom_Balkon showError 1
attr Strom_Balkon stateFormat Aktuell: obj_pac kW\
Heute: obj_eToday kWh\
Monat: obj_eMonth kWh\
Gesamt: obj_eTotal kWh
attr Strom_Balkon timeout 10
getInvDayChart
defmod Strom_BKW_Aktuell HTTPMOD https://server.growatt.com/singlePage/inv/getInvDayChart
attr Strom_BKW_Aktuell requestData plantId=<YourPlantID>&date=%%datetoday%%
attr Strom_BKW_Aktuell alias BKW
attr Strom_BKW_Aktuell comment deleteReading Strom_BKW_Aktuell LAST_ERROR
attr Strom_BKW_Aktuell enableControlSet 1
attr Strom_BKW_Aktuell event-on-change-reading PowerAll,PowerCurrent,PowerLast
attr Strom_BKW_Aktuell group Dash_Strom,Strom
attr Strom_BKW_Aktuell replacement01Mode expression
attr Strom_BKW_Aktuell replacement01Regex %%datetoday%%
attr Strom_BKW_Aktuell replacement01Value {strftime('%F', localtime())}
attr Strom_BKW_Aktuell reading01Name PowerAll
attr Strom_BKW_Aktuell reading01Regex "pac":(.*)}}
attr Strom_BKW_Aktuell reading02Name PowerLast
attr Strom_BKW_Aktuell reading02RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
attr Strom_BKW_Aktuell reading02Regex "pac":(.*)
attr Strom_BKW_Aktuell room Strom
attr Strom_BKW_Aktuell showBody 0
attr Strom_BKW_Aktuell showError 1
attr Strom_BKW_Aktuell stateFormat PowerCurrent
attr Strom_BKW_Aktuell userReadings PowerCurrent:PowerLast.* {ReadingsNum("$NAME","PowerLast",0)}
Kleine erneute Korrektur für Strom_BKW_Aktuell getInvDayChart, da manchmal das Array mit Nullen gefüllt wird, jetzt auch oben eingearbeitet:
attr Strom_BKW_Aktuell event-on-change-reading PowerAll,PowerCurrent,PowerLast
attr Strom_BKW_Aktuell reading01RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
Nochmalige, komplette Umstellung aufgrund falscher Sortierung der Daten:
attr Strom_BKW_Aktuell reading01Name PowerAll
attr Strom_BKW_Aktuell reading01Regex "pac":(.*)}}
attr Strom_BKW_Aktuell reading02Name PowerLast
attr Strom_BKW_Aktuell reading02RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
attr Strom_BKW_Aktuell reading02Regex "pac":(.*)
defmod at_BKW_Reset watchdog Strom_BKW_Aktuell:PowerAll:.* 00:16 Strom_BKW_Aktuell:PowerAll:.* setreading Strom_BKW_Aktuell PowerCurrent -
attr at_BKW_Reset autoRestart 1
attr at_BKW_Reset regexp1WontReactivate 0
attr at_BKW_Reset regexp2WillReactivate 1
ich habe das auch mal nachgestellt, funktioniert super
Was mir nicht ganz klar ist
ZitatgetInvDayChart
da erscheint bei mir nur eine Zahl, das ist die gerade aktuelle Produktion mit 4 Stellen hinter dem Komma, habe ich was übersehen.?
BKW 350.94998
Kleine Korrektur für Strom_BKW_Aktuell getInvDayChart, da manchmal das Array mit Nullen gefüllt wird:
attr Strom_BKW_Aktuell event-on-change-reading PowerAll,PowerCurrent,PowerLast
attr Strom_BKW_Aktuell reading01JSON obj.pac
attr Strom_BKW_Aktuell reading01Name PowerLast
attr Strom_BKW_Aktuell reading01RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(, 0)*?/;; $1
Zitat von: moonsorrox am 14 Dezember 2022, 13:16:36
ich habe das auch mal nachgestellt, funktioniert super
Was mir nicht ganz klar ist
da erscheint bei mir nur eine Zahl, das ist die gerade aktuelle Produktion mit 4 Stellen hinter dem Komma, habe ich was übersehen.?
BKW 350.94998
Jein, nur mit der Chart-API bekommt man die Werte in Watt statt kW. Die Tagesdaten sind in dem Reading PowerAll zusammengefasst (das Recombine kann man aber auch in einem anderen Reading weglassen) und ich nutze das letzte Element, das nicht ", 0" ist. Ich logge aber PowerCurrent um mein eigenes SVG zu erstellen:
defmod Log_Strom_Balkon FileLog ./log/Strom_Balkon-%Y-%m.log Strom_BKW_Aktuell.*PowerCurrent.*
@minierm: Tolle Anleitung, um die Daten aus der Cloud zu ziehen.
Bei mir hat das auf Anhieb funktioniert!
Vielen Dank dafür!
Growatt Wetter
Eine weitere Growatt API ist das aktuelle Wetter...
defmod Growatt_Weather HTTPMOD https://server.growatt.com/singlePage/getWeatherByPlantId
attr Growatt_Weather requestData plantId=<yourPlantID>
attr Growatt_Weather alias GrowattWetter
attr Growatt_Weather disable 0
attr Growatt_Weather enableControlSet 1
attr Growatt_Weather event-on-change-reading .*
attr Growatt_Weather extractAllJSON 1
attr Growatt_Weather group Wetter
attr Growatt_Weather icon weather_cloudy_light
attr Growatt_Weather room Wetter,Wetterlage
attr Growatt_Weather showBody 0
attr Growatt_Weather showError 1
attr Growatt_Weather stateFormat obj_data_HeWeather6_01_now_cond_txt<br>\
Tmp: obj_data_HeWeather6_01_now_tmp°; (obj_data_HeWeather6_01_now_fl°;)<br>\
Hum: obj_data_HeWeather6_01_now_hum%<br>\
Prs: obj_data_HeWeather6_01_now_pres hPa<br>\
Vis: obj_data_HeWeather6_01_now_vis km<br>\
Cld: obj_data_HeWeather6_01_now_cloud%<br>\
Wnd: obj_data_HeWeather6_01_now_wind_spd obj_data_HeWeather6_01_now_wind_dir<br>\
PCPN: obj_data_HeWeather6_01_now_pcpn<br>\
obj_data_HeWeather6_01_basic_toDay, obj_data_HeWeather6_01_basic_sr - obj_data_HeWeather6_01_basic_ss
attr Growatt_Weather timeout 10
Hier sind alle Growatt API, die von der Statusseite aufgerufen wurden.
https://server.growatt.com/singlePage/inv/getInvDayChart
Parameter:
plantId: xxx
date: 2022-11-29
{"result":1,"obj":{"pac":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,30.2,29.8,25.5,23.2,20.2,20.6,24.2,30.1,33.4,33.9,32.8,28.5,23.5,25.7,26.4,27.5,28.2,28.4,26.5,24.8,25.2,24.9,20.7,20.2,18.5,16.1,14.6,15.5,18.6,23.0,23.2,22.4,19.7,17.2,14.7,16.7,20.3,17.0,14.8,17.5,15.4,14.4,15.5,12.8,12.8,13.3,12.5,13.5,13.9,11.4,13.0,12.5,11.9,10.1,8.0,6.7,5.8,6.9,7.4,7.8,8.6,8.3,8.3,6.9,5.9,7.6,8.3,5.2,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}}
https://server.growatt.com/singlePage/inv/getInvMonthChart
Parameter:
plantId: xxx
date: 2022-11
{"result":1,"obj":{"energy":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.4,1.0,0.4,0.9,0.4,0.4,0.6,0.2,0.1,0.0,0.0]}}
https://server.growatt.com/singlePage/inv/getInvYearChart
plantId: xxx
year: 2022
{"result":1,"obj":{"energy":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.4,0.0]}}
https://server.growatt.com/singlePage/inv/getInvTotalChart
plantId: xxx
year: 2022
{"result":1,"obj":{"energy":[0.0,0.0,0.0,0.0,4.400000095367432]}}
https://server.growatt.com/singlePage/getPlantData/
plantId: xxx
{"result":1,"obj":{"nominalPower":"600","eToday":"0","eMonth":"4.4","eTotal":"4.4","pac":"0.5","accountName":"xxx","co2":"4.4","tree":"0","coal":"1.8","plantImgName":"","nominalPowerTotal":"0.6"}}
pac = Momentan produzierter Strom
https://server.growatt.com/singlePage/getWeatherByPlantId/
plantId: xxx
{"result":1,"obj":{"city":"xxx
","Week":"Wednesday","dataStr":"{\"HeWeather6\":[{\"now\":{\"hum\":\"83\",\"vis\":\"16\",\"pres\":\"1023\",\"pcpn\":\"0.0\",\"fl\":\"-1\",\"wind_sc\":\"2\",\"wind_dir\":\"NE\",\"wind_spd\":\"10\",\"cloud\":\"93\",\"wind_deg\":\"68\",\"tmp\":\"2\",\"cond_txt\":\"Cloudy\",\"cond_code\":\"101\"},\"update\":{\"loc\":\"2022-11-30 21:46\",\"utc\":\"2022-11-30 20:46\"},\"basic\":{\"ss\":\"16:29\",\"admin_area\":\"Baden-Württemberg\",\"tz\":\"+1.00\",\"toDay\":\"2022-11-30\",\"location\":\"xxx\",\"lon\":\"9.000\",\"parent_city\":\"Tübingen Government Region\",\"cnty\":\"Germany\",\"lat\":\"48.000\",\"cid\":\"E9Fxx\",\"sr\":\"07:50\"},\"status\":\"ok\"}]}","data":{"HeWeather6":[{"now":{"hum":"83","vis":"16","pres":"1023","pcpn":"0.0","fl":"-1","wind_sc":"2","wind_dir":"NE","wind_spd":"10","cloud":"93","wind_deg":"68","tmp":"2","cond_txt":"Cloudy","cond_code":"101"},"update":{"loc":"2022-11-30 21:46","utc":"2022-11-30 20:46"},"basic":{"ss":"16:29","admin_area":"Baden-Württemberg","tz":"+1.00","toDay":"2022-11-30","location":"xxxx","lon":"9.000","parent_city":"Tübingen Government Region","cnty":"Germany","lat":"48.000","cid":"E9Fxx","sr":"07:50"},"status":"ok"}]}}}
https://server.growatt.com/singlePage/getSystemTypeByPlant/
plantId: xxx
{"result":1,"obj":{"sn":"","type":"inv"}}
Super Aufstellung kann man gut nachvollziehen.
Was mir aber garnicht gelingt ist die Anzeige vom ganzen Jahr. Allerdings kenne ich mich mit diesen ganzen Regexen gedöns überhaupt nicht aus.
Ich dachte ich baue das mal nach, aber da kommt kein reading rein.
Sicher ist da etwas falsch oder fehlt, ich sehe nur das es ein "obj.energy" gibt
defmod Growatt_jahr HTTPMOD https://server.growatt.com/singlePage/inv/getInvYearChart
attr Growatt_jahr alias Jahres Verbrauch
attr Growatt_jahr disable 0
attr Growatt_jahr enableControlSet 1
attr Growatt_jahr event-on-change-reading .*
attr Growatt_jahr extractAllJSON 1
attr Growatt_jahr requestData plantId=<meine_ID>
attr Growatt_jahr room PV-Anlage
attr Growatt_jahr showBody 0
attr Growatt_jahr showError 1
attr Growatt_jahr timeout 10
Zitat von: moonsorrox am 17 Dezember 2022, 14:19:51
Super Aufstellung kann man gut nachvollziehen.
Was mir aber garnicht gelingt ist die Anzeige vom ganzen Jahr. Allerdings kenne ich mich mit diesen ganzen Regexen gedöns überhaupt nicht aus.
Ich dachte ich baue das mal nach, aber da kommt kein reading rein.
Sicher ist da etwas falsch oder fehlt, ich sehe nur das es ein "obj.energy" gibt
defmod Growatt_jahr HTTPMOD https://server.growatt.com/singlePage/inv/getInvYearChart
attr Growatt_jahr alias Jahres Verbrauch
attr Growatt_jahr disable 0
attr Growatt_jahr enableControlSet 1
attr Growatt_jahr event-on-change-reading .*
attr Growatt_jahr extractAllJSON 1
attr Growatt_jahr requestData plantId=<meine_ID>
attr Growatt_jahr room PV-Anlage
attr Growatt_jahr showBody 0
attr Growatt_jahr showError 1
attr Growatt_jahr timeout 10
Ja, der Fehler ist, daß zwei Parameter verlangt werden, es fehlt das Jahr...
Irgendwas in der Art:
attr Strom_ChartYear requestData plantId=<YourPlantID>&year=%%datetoday%%
attr Strom_ChartYear replacement01Mode expression
attr Strom_ChartYear replacement01Regex %%datetoday%%
attr Strom_ChartYear replacement01Value {strftime('%Y', localtime())}
Wie man die Readings oder das Reading dann aber weiter verarbeitet weiss ich nicht...
Mir fehlen nun nur noch die Daten zum Speicher wie Füllstand, Lade- und Entladeleistung, kann da jemand helfen?
Gibt es eine Möglichkeit die Grafiken zu den Ladeleistungen (Dashboard) in Tablet-UI einzubinden, hat das jemand mal probiert?
ich habe leider kein Speicher
Zitat von: uron am 19 Dezember 2022, 16:24:12
Mir fehlen nun nur noch die Daten zum Speicher wie Füllstand, Lade- und Entladeleistung, kann da jemand helfen?
Gibt es eine Möglichkeit die Grafiken zu den Ladeleistungen (Dashboard) in Tablet-UI einzubinden, hat das jemand mal probiert?
Einfach mit F12 die Netzwerkanfragen für "get" URLs prüfen? Allerdings funktioniert das nicht auf der Übersicht nach Anmeldung sondern man muss im Plant Panagement eine anonyme URL mit "Datasheet link definition" erzeugen und aufrufen (siehe Screenshot). Aber da ich keinen Speicher habe kann ich nicht garantieren, daß die Daten dort angezeigt werden.
Der Weg ist ja schon einmal sehr interessant, leider auch hier keine Speicherdaten - nur die üblichen Ertragsdaten für aktuell, heute, Monat und kumulativ.
Trotzdem interessant, auch wenn ich den Link im Moment mangels Kenntnissen noch nicht im FTUI einbauen könnte.
Ideal wäre, dort einen Hyperlink hinter meine derzeitige Grafik (data-type "chart") einzubauen, der mittels Antippen auf diese Seite hinweist. Aber ich glaube, das wäre zu viel von FTUI verlangt.
Ich muss nun doch einmal nachfassen, da ich mit den geloggten Werte nicht klarkomme.
Ich logge u.a. PowerCurrent in meine HausstromLog
Internals:
DEF ./log/HausstromLog-%Y-%m.log FBDECT_FritzBox_08761_0489668:energy-Summe.*|FBDECT_FritzBox_08761_0489668:energy.*|FBDECT_FritzBox_08761_0489668:power.*|MiniPV_Messung_Shelly:energy.*|powerfox:power.*|powerfox:total_consumption:.*|powerfox:total_feed.*|Strom_Garage_Aktuell:PowerCurrent:.*
FD 30
FUUID 619cfdda-f33f-aab4-cb11-b6b4049944f4a10f
NAME HausstromLog
NOTIFYDEV MiniPV_Messung_Shelly,FBDECT_FritzBox_08761_0489668,Strom_Garage_Aktuell,powerfox
NR 1413
NTFY_ORDER 50-HausstromLog
REGEXP FBDECT_FritzBox_08761_0489668:energy-Summe.*|FBDECT_FritzBox_08761_0489668:energy.*|FBDECT_FritzBox_08761_0489668:power.*|MiniPV_Messung_Shelly:energy.*|powerfox:power.*|powerfox:total_consumption:.*|powerfox:total_feed.*|Strom_Garage_Aktuell:PowerCurrent:.*
STATE active
TYPE FileLog
currentlogfile ./log/HausstromLog-2022-12.log
logfile ./log/HausstromLog-%Y-%m.log
READINGS:
2022-12-23 13:51:15 linesInTheFile 31325
pos:
Attributes:
alias HausstromLog
archivedir ./Log-Archiv/
createGluedFile 1
icon time_note
logtype text
room AVM-Devices,PV-Anlage
Das Ergebnis von heute (bis 13:45 Uhr) sieht so aus (total schlechtest Wetter)
2022-12-23_00:07:25 Strom_Garage_Aktuell PowerCurrent 4
2022-12-23_00:57:26 Strom_Garage_Aktuell PowerCurrent 10,1
2022-12-23_01:02:26 Strom_Garage_Aktuell PowerCurrent 9,5
2022-12-23_01:07:26 Strom_Garage_Aktuell PowerCurrent 13,3
2022-12-23_01:57:26 Strom_Garage_Aktuell PowerCurrent 6,8
2022-12-23_02:02:26 Strom_Garage_Aktuell PowerCurrent 10,6
2022-12-23_03:02:26 Strom_Garage_Aktuell PowerCurrent 10,7
2022-12-23_03:07:26 Strom_Garage_Aktuell PowerCurrent 12,2
2022-12-23_03:57:26 Strom_Garage_Aktuell PowerCurrent 7,5
2022-12-23_04:02:26 Strom_Garage_Aktuell PowerCurrent 10,5
2022-12-23_04:07:26 Strom_Garage_Aktuell PowerCurrent 10,3
2022-12-23_04:57:26 Strom_Garage_Aktuell PowerCurrent 7,4
2022-12-23_05:02:26 Strom_Garage_Aktuell PowerCurrent 10,2
2022-12-23_05:57:26 Strom_Garage_Aktuell PowerCurrent 10,7
2022-12-23_06:02:26 Strom_Garage_Aktuell PowerCurrent 6,8
2022-12-23_06:07:26 Strom_Garage_Aktuell PowerCurrent 9,7
2022-12-23_06:54:41 Strom_Garage_Aktuell PowerCurrent 7,3
2022-12-23_06:59:39 Strom_Garage_Aktuell PowerCurrent 10,2
2022-12-23_07:04:39 Strom_Garage_Aktuell PowerCurrent 11,1
2022-12-23_07:59:39 Strom_Garage_Aktuell PowerCurrent 11
2022-12-23_08:04:39 Strom_Garage_Aktuell PowerCurrent 9,6
Das Loggen setzt also plötzlich um 08:04:39 aus!
Die aktuelle Ertragsfunktion lt. Dashboard: siehe Grafik, Es unterscheidet sich deutlich von der Grafik, wobei das Hauptproblem liegt ja im Aussetzen des Loggens!
Lt. Logfile gibt es da aber keine besonderen Vorkommnisse!?
Hat jemand eine Idee, wo ich ansetzen kann?
Zitat von: uron am 23 Dezember 2022, 13:56:42
Ich muss nun doch einmal nachfassen, da ich mit den geloggten Werte nicht klarkomme.
Ich logge u.a. PowerCurrent in meine HausstromLog
Internals:
DEF ./log/HausstromLog-%Y-%m.log FBDECT_FritzBox_08761_0489668:energy-Summe.*|FBDECT_FritzBox_08761_0489668:energy.*|FBDECT_FritzBox_08761_0489668:power.*|MiniPV_Messung_Shelly:energy.*|powerfox:power.*|powerfox:total_consumption:.*|powerfox:total_feed.*|Strom_Garage_Aktuell:PowerCurrent:.*
FD 30
FUUID 619cfdda-f33f-aab4-cb11-b6b4049944f4a10f
NAME HausstromLog
NOTIFYDEV MiniPV_Messung_Shelly,FBDECT_FritzBox_08761_0489668,Strom_Garage_Aktuell,powerfox
NR 1413
NTFY_ORDER 50-HausstromLog
REGEXP FBDECT_FritzBox_08761_0489668:energy-Summe.*|FBDECT_FritzBox_08761_0489668:energy.*|FBDECT_FritzBox_08761_0489668:power.*|MiniPV_Messung_Shelly:energy.*|powerfox:power.*|powerfox:total_consumption:.*|powerfox:total_feed.*|Strom_Garage_Aktuell:PowerCurrent:.*
STATE active
TYPE FileLog
currentlogfile ./log/HausstromLog-2022-12.log
logfile ./log/HausstromLog-%Y-%m.log
READINGS:
2022-12-23 13:51:15 linesInTheFile 31325
pos:
Attributes:
alias HausstromLog
archivedir ./Log-Archiv/
createGluedFile 1
icon time_note
logtype text
room AVM-Devices,PV-Anlage
Das Ergebnis von heute (bis 13:45 Uhr) sieht so aus (total schlechtest Wetter)
2022-12-23_00:07:25 Strom_Garage_Aktuell PowerCurrent 4
2022-12-23_00:57:26 Strom_Garage_Aktuell PowerCurrent 10,1
2022-12-23_01:02:26 Strom_Garage_Aktuell PowerCurrent 9,5
2022-12-23_01:07:26 Strom_Garage_Aktuell PowerCurrent 13,3
2022-12-23_01:57:26 Strom_Garage_Aktuell PowerCurrent 6,8
2022-12-23_02:02:26 Strom_Garage_Aktuell PowerCurrent 10,6
2022-12-23_03:02:26 Strom_Garage_Aktuell PowerCurrent 10,7
2022-12-23_03:07:26 Strom_Garage_Aktuell PowerCurrent 12,2
2022-12-23_03:57:26 Strom_Garage_Aktuell PowerCurrent 7,5
2022-12-23_04:02:26 Strom_Garage_Aktuell PowerCurrent 10,5
2022-12-23_04:07:26 Strom_Garage_Aktuell PowerCurrent 10,3
2022-12-23_04:57:26 Strom_Garage_Aktuell PowerCurrent 7,4
2022-12-23_05:02:26 Strom_Garage_Aktuell PowerCurrent 10,2
2022-12-23_05:57:26 Strom_Garage_Aktuell PowerCurrent 10,7
2022-12-23_06:02:26 Strom_Garage_Aktuell PowerCurrent 6,8
2022-12-23_06:07:26 Strom_Garage_Aktuell PowerCurrent 9,7
2022-12-23_06:54:41 Strom_Garage_Aktuell PowerCurrent 7,3
2022-12-23_06:59:39 Strom_Garage_Aktuell PowerCurrent 10,2
2022-12-23_07:04:39 Strom_Garage_Aktuell PowerCurrent 11,1
2022-12-23_07:59:39 Strom_Garage_Aktuell PowerCurrent 11
2022-12-23_08:04:39 Strom_Garage_Aktuell PowerCurrent 9,6
Das Loggen setzt also plötzlich um 08:04:39 aus!
Die aktuelle Ertragsfunktion lt. Dashboard: siehe Grafik, Es unterscheidet sich deutlich von der Grafik, wobei das Hauptproblem liegt ja im Aussetzen des Loggens!
Hat jemand eine Idee, wo ich ansetzen kann?
Hallo Uron,
wichtiger als die Log-Defintion ist die Device-Definition. Hast du mein Update eingebaut? Also schau mal den PowerAll Wert an. Ohne die Regex wird der letzte Wert genommen, auch wenn der 0 ist. Leider wurden manchmal auch "null" als 0 gewandelt, und neue Werte wurden dann mittendrin eingefügt.
attr Strom_BKW_Aktuell event-on-change-reading PowerAll,PowerCurrent,PowerLast
attr Strom_BKW_Aktuell reading01RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(, 0)*?/;; $1
Ja, das Update habe ich eingespielt, siehe hier das list
Internals:
BUSY 0
DEF https://server.growatt.com/singlePage/inv/getInvDayChart
FUUID 63a1d76c-f33f-aab4-5a1f-9b371318af1611d6
Interval 300
MainURL https://server.growatt.com/singlePage/inv/getInvDayChart
ModuleVersion 4.1.14 - 19.8.2022
NAME Strom_Garage_Aktuell
NOTIFYDEV global
NR 393
NTFY_ORDER 50-Strom_Garage_Aktuell
STATE 9.6
TYPE HTTPMOD
eventCount 67
value
CompiledRegexes:
HTTPCookieHash:
SERVERID;:
Name SERVERID
Options Path=/
Path
Value 9d189ffa15079b5878f6a64999a8bdbc|1671803202|1671781864
HttpUtils:
NAME
addr https://server.growatt.com:443
auth 0
code 200
compress 1
conn
data plantId=xxxxxxx&date=2022-12-23
displayurl https://server.growatt.com/singlePage/inv/getInvDayChart
header Cookie: SERVERID=9d189ffa15079b5878f6a64999a8bdbc|1671802902|1671781864
host server.growatt.com
httpheader HTTP/1.1 200 OK
Date: Fri, 23 Dec 2022 13:46:42 GMT
Content-Type: text/html;charset=UTF-8
Connection: close
Vary: Accept-Encoding
Accept-Charset: big5, big5-hkscs, cesu-8, euc-jp, euc-kr, gb18030, gb2312, gbk, ibm-thai, ibm00858, ibm01140, ibm01141, ibm01142, ibm01143, ibm01144, ibm01145, ibm01146, ibm01147, ibm01148, ibm01149, ibm037, ibm1026, ibm1047, ibm273, ibm277, ibm278, ibm280, ibm284, ibm285, ibm290, ibm297, ibm420, ibm424, ibm437, ibm500, ibm775, ibm850, ibm852, ibm855, ibm857, ibm860, ibm861, ibm862, ibm863, ibm864, ibm865, ibm866, ibm868, ibm869, ibm870, ibm871, ibm918, iso-2022-cn, iso-2022-jp, iso-2022-jp-2, iso-2022-kr, iso-8859-1, iso-8859-13, iso-8859-15, iso-8859-2, iso-8859-3, iso-8859-4, iso-8859-5, iso-8859-6, iso-8859-7, iso-8859-8, iso-8859-9, jis_x0201, jis_x0212-1990, koi8-r, koi8-u, shift_jis, tis-620, us-ascii, utf-16, utf-16be, utf-16le, utf-32, utf-32be, utf-32le, utf-8, windows-1250, windows-1251, windows-1252, windows-1253, windows-1254, windows-1255, windows-1256, windows-1257, windows-1258, windows-31j, x-big5-hkscs-2001, x-big5-solaris, x-euc-jp-linux, x-euc-tw, x-eucjp-open, x-ibm1006, x-ibm1025, x-ibm1046, x-ibm1097, x-ibm1098, x-ibm1112, x-ibm1122, x-ibm1123, x-ibm1124, x-ibm1166, x-ibm1364, x-ibm1381, x-ibm1383, x-ibm300, x-ibm33722, x-ibm737, x-ibm833, x-ibm834, x-ibm856, x-ibm874, x-ibm875, x-ibm921, x-ibm922, x-ibm930, x-ibm933, x-ibm935, x-ibm937, x-ibm939, x-ibm942, x-ibm942c, x-ibm943, x-ibm943c, x-ibm948, x-ibm949, x-ibm949c, x-ibm950, x-ibm964, x-ibm970, x-iscii91, x-iso-2022-cn-cns, x-iso-2022-cn-gb, x-iso-8859-11, x-jis0208, x-jisautodetect, x-johab, x-macarabic, x-maccentraleurope, x-maccroatian, x-maccyrillic, x-macdingbat, x-macgreek, x-machebrew, x-maciceland, x-macroman, x-macromania, x-macsymbol, x-macthai, x-macturkish, x-macukraine, x-ms932_0213, x-ms950-hkscs, x-ms950-hkscs-xp, x-mswin-936, x-pck, x-sjis_0213, x-utf-16le-bom, x-utf-32be-bom, x-utf-32le-bom, x-windows-50220, x-windows-50221, x-windows-874, x-windows-949, x-windows-950, x-windows-iso2022jp
Set-Cookie: SERVERID=9d189ffa15079b5878f6a64999a8bdbc|1671803202|1671781864;Path=/
Content-Encoding: gzip
httpversion 1.0
hu_blocking 0
hu_filecount 1
hu_port 443
hu_portSfx
ignoreredirects 1
loglevel 4
path /singlePage/inv/getInvDayChart
protocol https
redirects 0
timeout 2
url https://server.growatt.com/singlePage/inv/getInvDayChart
sslargs:
QUEUE:
READINGS:
2022-12-23 02:57:28 LAST_ERROR read from https://server.growatt.com:443 timed out
2022-12-23 14:46:42 PowerAll 0, 0, 10.1, 0, 10.1, 10.2, 0, 0, 22.1, -187.5, 9.6, 9.8, 37.5, 9.5, 34.3, 51.8, 54.4, 57.1, 65.1, 70.4, 75.4, 83.4, 86.2, 6.8, 13.3, 9, 5.4, 9.2, 9.3, 9.3, 6.8, 9.3, 9.3, 9.3, 6.2, 0, 9.1, 10, 9.6, 10.4, 9.5, 12, 9.1, 36.8, 146.2, 120.4, 0, 106.6, 119.299995, 127.6, 114.2, 130.2, 128.1, 11.9, 8.9, 8.15, 7.4, 0, 8.9, 10.6, 9, 8.7, 9.25, 9, 9.4, 10.6, 8.9, 9.6, 0, 8.2, 434.6, 417.7, 133.4, 144.9, 145.8, 126.9, 104.9, 90.3, 75.9, 0, 116.9, 8.8, 9, 9, 12.5, 9.1, 12.7, 0, 0, 0, 0, 0, 0, 6.8, 10.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.4, 10.7, 12.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.5, 10.5, 10.3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.4, 10.2, 0, 10.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.7, 6.8, 9.7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.3, 10.2, 11.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9.6, 0, 0, 0
2022-12-23 08:04:39 PowerCurrent 9.6
2022-12-23 14:46:42 PowerLast 9.6
REQUEST:
context reading
data plantId=xxxxxxx&date=%%datetoday%%
header
ignoreredirects 0
num unknown
retryCount 0
type update
url https://server.growatt.com/singlePage/inv/getInvDayChart
defptr:
readingBase:
PowerAll reading
PowerLast reading
readingNum:
PowerAll 02
PowerLast 01
readingOutdated:
requestReadings:
update:
PowerAll reading 02
PowerLast reading 01
Attributes:
alias Garage
comment deleteReading Strom_Garage_Aktuell LAST_ERROR
enableControlSet 1
event-on-change-reading PowerAll,PowerCurrent,PowerLast
reading01JSON obj.pac
reading01Name PowerLast
reading01RecombineExpr my $val = join ",", @matchlist; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(, 0)*?/; $1
reading02JSON obj.pac
reading02Name PowerAll
reading02RecombineExpr join ", ", @matchlist
replacement01Mode expression
replacement01Regex %%datetoday%%
replacement01Value {strftime('%F', localtime())}
requestData plantId=xxxxxxx&date=%%datetoday%%
room PV-Anlage
showBody 0
showError 1
stateFormat PowerCurrent
userReadings PowerCurrent:PowerLast.* {ReadingsNum("$NAME","PowerLast",0)}
Also am Logging liegt es nicht und an den Werten auch nicht, es werden einfach nur keine neuen Werte von Growatt geliefert. Du kannst ja spasseshalber mal "ShowBody" auf 1 setzen, dann siehst du die Rohdaten.
OK, hab ich gemacht. Und wo finde ich diese Rohdaten?
Bei der nächsten Abfrage, z.B. mit Set Strom_Garage_Aktuell reread und dann F5.
Ergebnis
httpbody
{"result":1,"obj":{"pac":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10.1,9.5,13.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.8,10.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.4,10.7,12.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.5,10.5,10.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.4,10.2,10.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10.7,6.8,9.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.3,10.2,11.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,11.0,9.6,0.0,0.0,0.0,0.0,10.1,10.2,0.0,0.0,22.1,-187.5,9.6,9.8,37.5,34.3,51.8,54.4,57.1,65.1,70.4,75.4,83.4,86.2,6.8,9.0,5.4,9.2,9.3,9.3,6.8,9.3,9.3,9.3,6.2,9.1,10.0,9.6,10.4,9.5,12.0,9.1,36.8,146.2,120.4,106.6,119.299995,127.6,114.2,130.2,128.1,11.9,8.9,8.15,7.4,8.9,10.6,9.0,8.7,9.25,9.0,9.4,10.6,8.9,9.6,8.2,434.6,417.7,133.4,144.9,145.8,126.9,104.9,90.3,75.9,116.9,8.8,9.0,9.0,12.5,9.1,12.7,8.9,12.6,9.0,11.2,8.7,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}}
Scheint tatsächlich keine Daten mehr zu liefern (null), aber warum? Im Dashboard sind es immerhin aktuell noch 10-12W!
Das sagen die Rohdaten allerdings auch. Die Rohdaten enthalten Platzhalter für alle Werte des Tages. Keine Daten, dann "null". Nach 11.1, ein paar null, und 11.0 kommt 9.6. Dann ein paar null und dann wieder Werte. Wahrscheinlich kommt die Regex mit den null dazwischen nicht klar, bin aber auch kein regex Experte...
Hm, hab grad mit regex101.com getestet, liefert korrekt als letzten Wert 8,7.
hilft mir das weiter?
Hier mal ein anderer Ansatz zur Fehlersuche:
Das Reading LAST_ERROR wirft
read from https://server.growatt.com:443 timed out
aus.
Was könnte der Grund für timed out sein?
- Keine Anfrage mehr von FHEM?
- zu viele Anfragen von FHEM - Server überlastet?
- andere Gründe?
PowerLast sollte doch eigentlich den aktuellen Wert liefern so wie PowerCurrent oder bin ich auf dem Holzweg?
Ich sehe beim Reading PowerAll eine kontinuierliche genaue "Fortschreibung" der Werte, die ich auch im Dashboard in der Grafik sehe - war ja auch zu erwarten. Warum können diese Werte nicht mit PowerLast zum Speichern in der Logdatei "abgegriffen" werden?
Merkwürdig ist, dass seit ein paar Tagen nur noch Werte <=12 gelogged werden?
"PowerLast" enthält immer den letzten nicht-null/"0" Wert aus quasi "PowerAll" (nur ohne Leerzeichen). Dieser Wert wird bei Änderung als UserReading in "PowerCurrent" geschrieben.
Wenn sich "PowerAll" längere Zeit nicht ändert (also die Platzhalter "null" nicht mit Wert gefüllt werden) wird per Watchdog ein "-" in PowerCurrent geschrieben (Da "PowerLast" ja auch mehrmals den gleichen Wert haben kann).
Falls man kein "-" möchte kann man für den Chart natürlich PowerLast nehmen oder stattdessen ein "0" in PowerCurrent schreiben.
Ein TimeOut kann immer wieder mal vorkommen, da muss man halt auf den Reading-Zeitstempel schauen.
Oh, wo ich grad das mit dem Leerzeichen geschrieben habe: Da ist wohl ein Fehler in der RegEx, da habe ich zum Schluß noch auf Leerzeichen getestet, bitte korrigieren:
attr Strom_BKW_Aktuell reading01RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
Korrektur der Korrektur (Leerzeichen):
attr Strom_BKW_Aktuell reading01RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
Zitat von: minierm am 15 Dezember 2022, 21:31:35
Kleine Korrektur für Strom_BKW_Aktuell getInvDayChart, da manchmal das Array mit Nullen gefüllt wird:
attr Strom_BKW_Aktuell event-on-change-reading PowerAll,PowerCurrent,PowerLast
attr Strom_BKW_Aktuell reading01JSON obj.pac
attr Strom_BKW_Aktuell reading01Name PowerLast
attr Strom_BKW_Aktuell reading01RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(, 0)*?/;; $1
Irgendwie komme ich überhaupt nicht weiter:
Gestern (25.12.) wurden in meiner Log-Datei lediglich 2 Werte eingetragen:
2022-12-25_00:06:24 Strom_Garage_Aktuell PowerCurrent: 0
2022-12-25_09:45:09 Strom_Garage_Aktuell PowerCurrent: 9
Mein Dashboard hat da viel mehr zu bieten (s. Anlage).
Ich hatte zuvor einmal am Interval gedreht und von 300 auf 600 (Sekunden) gestellt.
Merkwürdigerweise enden die Einträge in der Loggingdatei täglich recht "frühzeitig":
22.12. 07:54:59
23.12. 08:04:39
24.12. 07:21:43
25.12. 09:45:09
26.12. 07:51:38
Hat irgendjemand noch eine Idee, wo ich ansetzen könnte?
Die Änderung der Änderung habe ich eingearbeitet.
Mein Logging funktioniert. Vielleicht mal ein eigenes Log erstellen, vlt wird ja zu viel geloggt? Mit dem Eventmonitor mal schauen, ob die Änderungen auftauchen, - falls sich überhaupt etwas ändert.
Ich habe gestern Abend (26.12.) eine neue Log-Datei (TestLog) erstellt und nur 2 Events geloggt, u.a. dabei Strom_Garage_Aktuell PowerCurrent.
Bis jetzt, 27.12., 13:10 Uhr wurden dort lediglich 2 Daten eingetragen:
2022-12-27_00:04:43 Strom_Garage_Aktuell PowerCurrent: 4
2022-12-27_00:49:43 Strom_Garage_Aktuell PowerCurrent: 7.8
Im EventMonitor sehe ich lediglich die Events
2022-12-27 13:09:45.087 HTTPMOD Strom_Garage_Aktuell PowerAll: 0, 0, 6.8, 0, 0, 10, 0, 13.7, 8.9, 9, 51.2, 10.1, 61.2, 64.4, 62.9, 66, 69.4, 76.4, 72.9, 76.5, 9.45, 9.2, 0, 8.5, 8.1, 8.1, 9.3, 8, 8.5, 8.1, 7.3, 8.6, 10.2, 0, 9.3, 10.3, 12.1, 303.6, 273.7, 275.8, 266.6, 228.4, 260.1, 305.6, 0, 310.7, 246.9, 291.8, 337.1, 412.5, 323.7, 308.9, 230.6, 10.8, 11, 0, 12, 11.3, 10.4, 10.5, 9.7, 9.8, 10.9, 1673.4, 0, 0, 0, 0, 0, 0, 10.5, 9.1, 9.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.6, 9.7, 9.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.4, 9.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.1, 6.8, 0, 9.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.4, 10, 9.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.7, 9.9, 12.7, 0, 0, 0, 0, 0, 7.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Dort tauchen also die "Produktionsdaten" alle auf, nur das Reading
Strom_Garage_Aktuell PowerCurrent:
erscheint nicht in der LogDatei.
Hier das List, habe ich da etwas übersehen?
Internals:
DEF ./log/TestLog-%Y-%m.log FBDECT_FritzBox_08761_xxxxxxx:energy-Summe.*|Strom_Garage_Aktuell:PowerCurrent:.*
FD 31
FUUID 63a9f3cb-f33f-aab4-8089-642869ad9e6d51bb
NAME TestLog
NOTIFYDEV Strom_Garage_Aktuell,FBDECT_FritzBox_08761_xxxxxxx
NR 1418
NTFY_ORDER 50-TestLog
REGEXP FBDECT_FritzBox_08761_xxxxxxx:energy-Summe.*|Strom_Garage_Aktuell:PowerCurrent:.*
STATE active
TYPE FileLog
currentlogfile ./log/TestLog-2022-12.log
logfile ./log/TestLog-%Y-%m.log
READINGS:
2022-12-27 00:49:43 linesInTheFile 2
Attributes:
alias TestLog
archivedir ./Log-Archiv/
icon time_note
logtype text
room PV-Anlage
Update am 28.12.:
heute endete das Loggen von "Strom_Garage_Aktuell:PowerCurrent:.*" um 8:19 Uhr, immerhin wurden heute 22 Datensätze aufgezeichnet!
Ich weiß keinen Rat mehr!
So, ich habe jetzt eine Lösung für die aktuelle Leistung der PV-Anlage gefunden: Auf dem Umweg über ioBroker "importiere" ich mir nun die Daten nach FHEM und die kommen nun kontinuierlich.
Leider liefert mir ioBroker auch keine Daten über den aktuellen Speicherstand - da komme ich immer noch nicht weiter.
Irgendwie müssen diese Daten ja zum China-Server kommen - ich denke über eine Installation von Grott nach.
Hab wieder mal ein Problem: Seit dem 4.1.2023 habe ich alle 5 Minuten im Logfile folgende Fehlermeldung:
Growatt_tag: no parsed JSON structure available
Gibt es eine Möglichkeit, diese abzustellen?
Hi,
Ich habe meine Wechselrichter komplett von der Chinacloud getrennt bzw den WiFi Stick nicht angesteckt. Erst Recht weil mein WiFiStick ständig ein offenes WLAN anbietet. Ich ziehe meine Daten über den Modbus-RTU Port direkt aus dem Wechselrichter und schiebe die Daten über MQTT ins FHEM. ISt dadurch offen und für jede andere SmartHome Lösung benutzbar. Ist auch mit OpenWB kompatibel.
Funktioniert für Solax, Growatt und auch andere
https://github.com/tobiasfaust/SolaxModbusGateway
Eventuell ja ein Grund für euch von der Cloud weg zu wechseln
Hätte ich einen SPH-Wechselrichter, würde ich es sicher auch so machen!
Leider besteht meiner Problem mit der Fehlermeldung
Growatt_tag: no parsed JSON structure available
immer noch!
Hat dein Growatt echt kein Modbus-RTU Port? Dachte den haben alle?
Nur einen COM-Anschluss und unter deinem Link findet sich nur der Hinweis auf supportete SPH-Wechselrichter!
Der COM Anschluss ist/ müsste der richtige. Und dann funktioniert es auch mit deinem ;)
OK, dann werde ich mich wohl auch mal mit Modbus beschäftigen müssen!
Update Growatt HTTPMOD
Heute hat Json mich richtig geärgert: Bei der Umwandlung der JSON-Liste der Leistungsdaten zur Verarbeitung mit Regex ist gewaltig was schief gelaufen und die Sortierung war unbrauchbar. Beim Erzeugen der Einzelreading ist eine mögliche Fehlerquelle, daß zwei- und dreistellige Readings erzeugt wurden und die zweistelligen nicht vor den dreistelligen einsortiert wurden... ReadingAutoNumLen 3 mit/ohne Readingnummer hat auch nicht geholfen.
Nach viel Probieren bin ich auf RegEx umgestiegen...
Die neuen Readings:
attr Strom_BKW_Aktuell reading01Name PowerAll
attr Strom_BKW_Aktuell reading01Regex "pac":(.*)}}
attr Strom_BKW_Aktuell reading02Name PowerLast
attr Strom_BKW_Aktuell reading02RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
attr Strom_BKW_Aktuell reading02Regex "pac":(.*)
PowerAll Rohdaten sieht dann so aus:
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0.0,0.0,0.0,0.0,0.0,29.1,31.7,39.1,42.15,45.2,64.0,229.0,258.3,289.6,309.1,320.4,345.3,359.4,404.1,432.3,452.6,471.9,483.6,504.8,539.5,480.9,590.0,611.1,606.6,608.2,608.4,610.6,607.8,610.3,null,null,null,null,null,612.7,611.4,617.2,608.6,607.9,608.8,613.6,610.4,612.9,614.9,613.3,612.9,560.9,611.5,615.9,615.7,615.2,610.8,616.3,611.8,611.4,614.3,609.9,611.9,613.9,615.2,620.1,608.2,610.7,610.4,null,null,null,null,null,null,608.3,608.3,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27.6,null,null,null,null,null,12.6,11.0,10.1,9.0,8.0,7.7,7.6,7.6,2.6,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]
Die komplette Definition:
define Strom_BKW_Aktuell HTTPMOD https://server.growatt.com/singlePage/inv/getInvDayChart
attr Strom_BKW_Aktuell alias BKW
attr Strom_BKW_Aktuell comment deleteReading Strom_BKW_Aktuell LAST_ERROR
attr Strom_BKW_Aktuell enableControlSet 1
attr Strom_BKW_Aktuell event-on-change-reading PowerAll,PowerCurrent,PowerLast
attr Strom_BKW_Aktuell eventMap { usr => {\
'W' => 'reread'}\
}
attr Strom_BKW_Aktuell group Dash_Strom,PV,Strom
attr Strom_BKW_Aktuell reading01Name PowerAll
attr Strom_BKW_Aktuell reading01Regex "pac":(.*)}}
attr Strom_BKW_Aktuell reading02Name PowerLast
attr Strom_BKW_Aktuell reading02RecombineExpr my $val = join ",", @matchlist;; $val =~ /.*,([1-9]\d*(?:\.\d*)*)(,0)*?/;; $1
attr Strom_BKW_Aktuell reading02Regex "pac":(.*)
attr Strom_BKW_Aktuell replacement01Mode expression
attr Strom_BKW_Aktuell replacement01Regex %%datetoday%%
attr Strom_BKW_Aktuell replacement01Value {strftime('%F', localtime())}
attr Strom_BKW_Aktuell requestData plantId=<xxx>&date=%%datetoday%%
attr Strom_BKW_Aktuell room Sensoren,Strom
attr Strom_BKW_Aktuell showBody 0
attr Strom_BKW_Aktuell showError 1
attr Strom_BKW_Aktuell stateFormat PowerCurrent
attr Strom_BKW_Aktuell userReadings PowerCurrent:PowerLast.* {ReadingsNum($NAME, "PowerLast", "?")}
attr Strom_BKW_Aktuell webCmd W
Zitat von: Tobias am 28 Januar 2023, 17:17:19
Hi,
Ich habe meine Wechselrichter komplett von der Chinacloud getrennt bzw den WiFi Stick nicht angesteckt. Erst Recht weil mein WiFiStick ständig ein offenes WLAN anbietet. Ich ziehe meine Daten über den Modbus-RTU Port direkt aus dem Wechselrichter und schiebe die Daten über MQTT ins FHEM. ISt dadurch offen und für jede andere SmartHome Lösung benutzbar. Ist auch mit OpenWB kompatibel.
Funktioniert für Solax, Growatt und auch andere
https://github.com/tobiasfaust/SolaxModbusGateway
Eventuell ja ein Grund für euch von der Cloud weg zu wechseln
Der Ansatz hat was.
Ich steige gerade von SMA auf Growatt SPH10000TL3 BH UP um und die Montage wird bisher nur wegen FHEM bzw. der Überschusssteuerung verzögert.
Wifi Stick umflashen mag ich nicht, da ich gern wie beim SMA eine duale Lösung hätte. Interne Datenerfassung und trotzdem noch Cloudlogging.
ESP und SP3485 sollten Freitag eintrudeln.
Welchen WR nutzt Du und musstest Du die Schnittstelle am WR noch speziell konfigurieren oder läuft die Out of the Box?
Du musst nur schauen welche modbus Client ID und welche Baudrate beim growatt eingestellt ist.
Dann sollte es direkt laufen.
Zitat von: Tobias am 28 Januar 2023, 18:46:02
Der COM Anschluss ist/ müsste der richtige. Und dann funktioniert es auch mit deinem ;)
So jetzt mache ich mich auf den (steinigen) Weg, steinig deshalb, da ich mit Nicht/Halbwissen ans Werk gehe.
Richtig ist sicher, dass zunächst trotz (dann neuer) Modbus-Verbindung die direkt mit ioBroker kommuniziert, die Verbindung zum Chinaserver aufrecht bestehen bleibt und ich über meinen Shine-WiFi-Stick aktuelle Daten dort mittels App abrufen kann, oder? Wenn ich dann später die Verbindung zum Chinaserver kappe, müsste ich mir wohl im ioBroker eine Dastellung basteln (VIS), damit ich auch unterwegs meine PV-Anlage einsehen kann.
In den Unterlagen zum COM-Anschluss meines Growatt-WR (MIN_4600TL-XH) habe ich die in der Anlage (Foto) skizzierte Belegung des COM-Ports gefunden
PIN 5+6 sind bereits mit dem Smartmeter belegt, bleibt 3 und 4, um dort die Daten vom ioBroker abzugreifen - soweit müsste das passen.
Nun zur Hardware - und da bestehen bei mir existenzielle Fragen:
Da ich keinen LAN-Anschluss in meiner Garage habe, benötige ich eine Verbindung über WLAN in mein Netz, so wie sich auch der Shine-Wifi-Stick dort verbindet.
Nun suche ich ein "Stück Hardware, was die 2 PINs mit meinem WiFi-Netz" verbindet - unfachmännischer konnte ich es nicht ausdrücken ???
Gelesen habe ich so etwas wie Modbus-Adapter RTU.
Und nun brauche ich einen Tipp, was sich dazu eignet, ohne noch lange zu löten, zu flashen o.ä.
Wer kann/will mir helfen?
Sieht nach PIN 3+4 aus
Den Rest solltest du alles in meinem Wiki finden. Ich konnte deinen Worten hier nicht wirklich folgen :(
Dein Wiki habe ich gelesen, was Fertiges mit SV ist leider nicht dabei (Seriell -> WiFi), also doch Bastelarbeit!
Sorry, dass ich mich so kompliziert ausgedrückt habe, dass ich nicht verstanden werde ???
Am Ende hoffe ich, dass ich mehr Daten über die serielle Schnittstelle bekomme, wie über den Shine-WiFi-Stick und den Chinaserver, oder ist das nicht zu erwarten?
Bastelarbeit, naja... 4 Kabel um die Modbus Platine mit dem ESP32 zu verbinden und dann nochmal 2 Kabel für die Modbus Verbindung zum Growatt ist nicht wirklich Bastelarbeit ;)
@Uron
kommt drauf an, wie Du die Daten haben willst.
Wenn Du nicht löten magst.
Es gibt z.b. bei Amazon ein "RS485 to WiFi/Ethernet Module Rail-Mount Serial Server Modbus MQTT Gateway" um die 50€
Damit kann man sich das Modbus Signal entweder transparent übertragen lassen, oder eben über MQTT.
Problem gegenüber einer Quelloffenen Community Lösung:
Wenn irgendwas nicht passt, gibt es meist keine Unterstützung.
Growatt soll sich so weit ich gelesen habe nicht zu 100% an den Standard Registernummern orientieren und dann wären Anpassungen notwendig.
Wenn das Interface des Moduls keine freie Zuordnung Registernummer <> Reading zulässt wäre dann an der Stelle Schluss.
Bei einer Community Lösung findet sich eher jemand der Anpassungen vornehmen kann da der Quellcode vorliegt.
8 Lötpunkte setzen und den ESP flashen ist auch kein Hexenwerk.
Zitat von: Tobias am 15 März 2023, 10:55:57
Bastelarbeit, naja... 4 Kabel um die Modbus Platine mit dem ESP32 zu verbinden und dann nochmal 2 Kabel für die Modbus Verbindung zum Growatt ist nicht wirklich Bastelarbeit ;)
Des Lötens bin ich mächtig - 6 Kabel an Platine löten ist überhaupt nicht das Problem, mir fehlen leider die Hardware-Basics:
Wohin mit der Platine (an einen Raspi oder Arduino mit WLAN-Modul?), wenn JA, ist die Stromversorgung und WiFi klar, wenn NEIN, bleiben viele Fragen
Was muss ich an Software einsetzen und wie?
Sorry, mit solchen Ahnungslosen habt ihr es sicher nicht oft zu tun. Ich finde aber keinen Anfang und stelle deshalb dumme Fragen.
Zitat von: Teamdrachen am 15 März 2023, 11:09:00
@Uron
kommt drauf an, wie Du die Daten haben willst.
Wenn Du nicht löten magst.
Es gibt z.b. bei Amazon ein "RS485 to WiFi/Ethernet Module Rail-Mount Serial Server Modbus MQTT Gateway" um die 50€
Damit kann man sich das Modbus Signal entweder transparent übertragen lassen, oder eben über MQTT.
Problem gegenüber einer Quelloffenen Community Lösung:
Wenn irgendwas nicht passt, gibt es meist keine Unterstützung.
Growatt soll sich so weit ich gelesen habe nicht zu 100% an den Standard Registernummern orientieren und dann wären Anpassungen notwendig.
Wenn das Interface des Moduls keine freie Zuordnung Registernummer <> Reading zulässt wäre dann an der Stelle Schluss.
Bei einer Community Lösung findet sich eher jemand der Anpassungen vornehmen kann da der Quellcode vorliegt.
8 Lötpunkte setzen und den ESP flashen ist auch kein Hexenwerk.
ohne Communitylösung wäre das für mich überhaupt nicht zu machen, nur das ist der Weg für mich.
Ich versteh die Frage nicht ganz.
Im Wiki steht doch das die Modbus Platine an den ESP32 anzuschließen ist.
Der ESP32 hängt im Wlan und pusht alles zum MQTT Server.
Mehr als diese 2 Komponenten gibt es nicht.
OK, dann versuche ich es mal und beschaffe die Teile.
Um das in meiner Garage am WR nicht fliegend zu machen, suche ich mir noch ein Gehäuse und die Stromversorgung 3,3V- nicht zu vergessen - Steckdose installieren inclusive.
Fürs Flashen werde ich sicher auch noch irgendwo eine Erläuterung finden.
Danke bis hierhin!
Ich habe alles in einer 100mm Aufputz verteilerdose drin. Plus per Mini-USB Kabel an einem USB Steckernetzteil. Der ESP wird via MicroUsB mit 5V versorgt.
Zitat von: Tobias am 15 März 2023, 12:21:06
Ich habe alles in einer 100mm Aufputz verteilerdose drin. Plus per Mini-USB Kabel an einem USB Steckernetzteil. Der ESP wird via MicroUsB mit 5V versorgt.
Na das ist ja mal ein Wort, damit komme ich definitiv klar.
Hab mit so einem ESP32 überhaupt noch nicht gearbeitet - scheint aber doch kein Problem zu sein.
Brauche aber trotzdem noch einen Tipp zur Hardwareauswahl:
1. Ich habe einen ESP32 gefunden https://www.ebay.de/itm/385438586151?hash=item59bdee1527:g:jV4AAOSwk-9jLBgZ (https://www.ebay.de/itm/385438586151?hash=item59bdee1527:g:jV4AAOSwk-9jLBgZ)
2. Ist dazu ein Breakoutboard sinnvoll https://www.ebay.de/itm/385452930065?hash=item59bec8f411:g:XAoAAOSw2zpj146k (https://www.ebay.de/itm/385452930065?hash=item59bec8f411:g:XAoAAOSw2zpj146k)
oder
3. besser so etwas im Paket? https://www.ebay.de/itm/385438585279?hash=item59bdee11bf:g:-rMAAOSwmb1jpl9q (https://www.ebay.de/itm/385438585279?hash=item59bdee11bf:g:-rMAAOSwmb1jpl9q)
Nur der erste Link, das breakout Board braucht man nicht.
Allerdings braucht man female-female jumperkabel
https://www.ebay.de/itm/185054497924?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=p795EKDWQse&sssrc=2349624&ssuid=7EVXg8klS0a&var=&widget_ver=artemis&media=COPY
Und den Modbus Adapter nicht vergessen
https://www.ebay.de/itm/255283295160?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=kSLcqpXwSAK&sssrc=2349624&ssuid=7EVXg8klS0a&var=&widget_ver=artemis&media=COPY
Zitat von: Tobias am 15 März 2023, 16:28:35
Nur der erste Link, das breakout Board braucht man nicht.
Allerdings braucht man female-female jumperkabel
https://www.ebay.de/itm/185054497924?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=p795EKDWQse&sssrc=2349624&ssuid=7EVXg8klS0a&var=&widget_ver=artemis&media=COPY
Und den Modbus Adapter nicht vergessen
https://www.ebay.de/itm/255283295160?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=kSLcqpXwSAK&sssrc=2349624&ssuid=7EVXg8klS0a&var=&widget_ver=artemis&media=COPY
Vielen Dank, ich bin guter Hoffnung, dass das ggf. mit Unterstützung klappen wird.
Hallo Zusammen,
könnt ihr mir bitte sagen wo man die "YorPlantId" findet? habe jetzt das ganze Portal durchsucht, kann es nicht finden auch in der APP nicht.
Danke
Zitat von: noanda am 15 März 2023, 23:05:04
Hallo Zusammen,
könnt ihr mir bitte sagen wo man die "YorPlantId" findet? habe jetzt das ganze Portal durchsucht, kann es nicht finden auch in der APP nicht.
Danke
- Mittels Developer Tools den Netzwerkverkehr analysieren und (nach Refresh der Seite) eine Anfrage mit dem Parameter "plantId=" finden (Firefox: Typ "XHR").
https://forum.fhem.de/index.php/topic,98637.msg1250537.html#msg1250537
Zitat von: Tobias am 15 März 2023, 16:28:35Nur der erste Link, das breakout Board braucht man nicht.
Allerdings braucht man female-female jumperkabel
https://www.ebay.de/itm/185054497924?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=p795EKDWQse&sssrc=2349624&ssuid=7EVXg8klS0a&var=&widget_ver=artemis&media=COPY
Und den Modbus Adapter nicht vergessen
https://www.ebay.de/itm/255283295160?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=kSLcqpXwSAK&sssrc=2349624&ssuid=7EVXg8klS0a&var=&widget_ver=artemis&media=COPY
So, ich bin nun soweit und habe meinen ESP32 mit dem Adapter (TTL RS485 Adapter 485 UART) verbunden (am ESP32 an RX/TX); SV ist auch dran, aber im Moment noch nicht der WR.
Nun brauche ich doch Hilfe, welche Firmware muss ich flashen, geht das mit dem ESP_flash_download_tool 3.9.4? Was muss dort konfiguriert werden?
hast Du schon kompiliert?
Geh einfach nach der Anleitung unter https://github.com/tobiasfaust/SolaxModbusGateway/wiki/build-with-gitpod vor.
Da ist ein Bild vom Flashtool.
ACHTUNG
Die 80Mhz sind nicht unbedingt richtig, viele der Dev. Boards haben einen 40MHZ SPI Quartz
Muss ich dieses (kostenpflichtige?) Gitpod-Addon installieren oder finde ich diese firmware auch auf einem anderen Weg - ich tue mich unheimlich schwer damit, die Firmware zu finden.
Gitpod ist nicht kostenpflichtig.
Es nimmt die am Ende die Arbeit ab eine IDE, oder Visual Studio zu installieren und einzurichten.
Es wird extern kompiliert und Du musst nur noch die Files downloaden
Hatte das Plug.in gerade auch schon installiert und die drei .bin-Dateien heruntergeladen und im Flashtool eingetragen (s. Anhang)
Nachdem ist geSTARTet habe, hat sich überhaupt nichts getan, auch nicht mit 40 MHz.
Außer COM4 bietet mir das Tool keinen Port an. Der ESP32 ist per USB mit dem Laptop verbunden einen SP bietet er nun auch nicht mehr an!
Irgendeine Idee oder dauert das ewig?
Sieht aus wie treiber nicht installiert.
Öffne mal den Gerätemanager, einfach Start drücken und losschreiben "Gerätemanager"
Was steht da unter den COM-Ports?
USB-SERIAL CH340 (COM4)
Weitere Ports sind nicht angegeben!
O.K. Serial passt.
Was steht denn in dem Command Fenster was mit aufgeht
Sollte so aussehen
case ok
C:\Home\Modbus-MQTT
C:\Home\Modbus-MQTT\partitions.bin
C:\Home\Modbus-MQTT
C:\Home\Modbus-MQTT\bootloader.bin
test offset : 4096 0x1000
case ok
test offset : 4096 0x1000
case ok
test offset : 32768 0x8000
case ok
test offset : 65536 0x10000
case ok
.
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 115200
Changed.
FLASH_CRYPT_CNT 0
ABS_DONE_0 False
Compressed 17488 bytes to 12168...
Im Command-Fenster (Win => Ausführen => cmd) tut sich gar nichts :(
Hab doch noch ein interessantes Fenster im Hintergrund gefunden (s. Anlage) kann es aber nicht interpretieren
Du versuchst einen 8266 mit einem ESP32 Image zu flashen
Oder Du hast beim Start vom ESPFlasher 8266 statt ESP32 ausgewählt
Sollte ich mich doch beim Kompilieren vertan haben.
Vorhanden ist: ESP32 Development Board ESP32-DevKitC-32 ESP-WROOM-32 Board NEW GX SALE
Also, dann alles noch einmal von vorne :'(
Einfach das Flashtool neu starten.
Es erscheint ein kleines Fenster mit Dropdown Menü.
Standard ist ESP8266, Du musst aber ESP32 einstellen
OK, Workmode "Develop" oder "Factory" - sicher das erste!?
Sieht schon besser aus
Den Mode kannst Du lassen wie er ist
Und wie lange dauert das Flashen, läuft so etwa 20 Minuten schon - hab zwar Zeit, aber es wundert schon!
Keine 2 Minuten. Sollte dann im Commandfenster aussehen wie in einem vorherigen Beitrag gepostet.
Das läuft immer noch und sieht so aus - Der Anfang ist anders als bei dir, da gibt es keine Verzeichnisangaben.
test offset : 4096 0x1000
case ok
test offset : 32768 0x8000
case ok
test offset : 65536 0x10000
case ok
..................................... (minutenlang!)
Das sollte nicht so lange dauern, da passt irgendwas nicht.
Heute Morgen, nachdem ich erneut kompiliert habe, stellt sich auf einmal ein positives Ergebnis dar!
test offset : 4096 0x1000
case ok
test offset : 32768 0x8000
case ok
test offset : 65536 0x10000
case ok
..
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
NO XMC flash detected!
FLASH_CRYPT_CNT 0
ABS_DONE_0 False
Compressed 17488 bytes to 12168...
Compressed 3072 bytes to 146...
Compressed 996640 bytes to 607811...
is stub and send flash finish
Den ESP32 erreiche ich per WLAN, jetzt muss "nur" noch konfiguriert werden.
Herzlichen Dank bis hier hin und Danke für die Unterstützung eines absoluten Laien auf diesem Gebiet
Ist das normal, dass der WLAN-Empfang des ESP32 grottenschlecht ist?
In 8m Entfernung zu meinem Router (1 Hauswand dazwischen) verbindet sich der ESP nicht mehr. Kann man den ESP32 irgenwie "tunen" oder hilft nur eine externe Adresse?
Hat jemand damit Erfahrung?
Frage:
Tritt das schon beim ersten Start bzw. auch auf wenn Du + vom 485 Modul ab hast?
Kannst Du in Deinem Router sehen ob der ESP gar nicht verbunden ist, oder sich im 10 Sekunden Takt zu verbinden versucht?
Ich habe zunächst den ESP32 ohne das 485er Module in der Nähe des Router platziert - hier ist er permanent verbunden - klappt m.E. also einwandfrei.
Sobald ich des ESP32 in meine Garage befördere (frei Sicht durch eine Glasscheibe) verbindet er sich nicht mehr und ich kann im Router nicht erkennen, dass er alle 10s einen Verbindungsaufbau versucht. Die betreffende IP-Adresse ....191 befindet sich dann in der FB-Übersicht unter den "Ungenutzten Verbindungen"
Hast Du ein serial Terminal installiert um mal zu schauen was er über USB ausgibt ?
Normalerweise sind 15 Meter kein Problem.
In der Garage auch mal nur den ESP ohne 485 Board getestet?
Wie ich schrieb, habe ich zuletzt den ESP32 ohne 485 Board in der Garage getestet.
Meinst du mit deiner ersten Frage den ESP32 + 485 Board + langes USB-Kabel und dann direkt an den RasPi?
Ja zum beispiel mit minicom.
sudo apt-get install minicom
Starten dann mit
minicom -D /dev/ttyUSB0
Kann auch ttyASM0 sein oder ein anderer Anschluss.
Deswegen vorher
ls -l /dev/serial/by-id
Wozu denn der raspi?
Für die Terminal Ausgabe einfach per usb an den Laptop ran und die Arduino IDE starten und Seriellen Monitor starten und beobachten...
Werde ich morgen mal ausprobieren.
Ich kann die Angaben im Monitor nicht interpretieren!?
Zitat von: Nighthawk am 08 November 2022, 10:16:52Nur zur Info, es existiert auch ein sehr einfacher, günstiger und vor Allem Cloudfreier Weg die Daten in FHEM zu bekommen.
Alles was man dazu braucht ist entweder den Wifi Stick den man umflasht, oder ein ESP8266 der per USB Kabel an den WR gesteckt wird.
Die SW kommt von hier: https://github.com/otti/Growatt_ShineWiFi-S
Und die Daten kommen per MQTT ins FHEM:
defmod Solaranlage MQTT2_DEVICE
attr Solaranlage devicetopic energy/solar
attr Solaranlage event-on-change-reading InputPower:0.1,InverterStatus:.*,InverterTemperature:.*,OutputPower:1 PV1.*:0.1,PVEnergyTotal.*:0.1,TodayGenerateEnergy:0.1,TotalGenerateEnergy:0.1,TemperatureInsideIPM:0.1
attr Solaranlage group PV
attr Solaranlage readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
attr Solaranlage room 20_Verbrauchsmessung
attr Solaranlage sortby 1
attr Solaranlage stateFormat Aktuelle Leistung: OutputPower W | heute erzeugte Energie TodayGenerateEnergy kWh
setstate Solaranlage Aktuelle Leistung: 399.3 W | heute erzeugte Energie 0.4 kWh
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToGrid 0
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToGridTotal 0
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToUser 0
setstate Solaranlage 2022-11-08 10:13:34 ACPowerToUserTotal 0
setstate Solaranlage 2022-11-08 10:13:34 BatteryState 0
setstate Solaranlage 2022-11-08 10:13:34 BatteryTemperature 0
setstate Solaranlage 2022-11-08 10:13:34 BatteryVoltage 0
setstate Solaranlage 2022-11-08 10:13:34 BoostTemperature 0
setstate Solaranlage 2022-11-08 10:13:34 ChargeEnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 ChargeEnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 ChargePower 0
setstate Solaranlage 2022-11-08 10:13:34 Cnt 2407
setstate Solaranlage 2022-11-08 10:13:34 DischargeEnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 DischargeEnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 DischargePower 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToGridToday 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToGridTotal 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToUserToday 0
setstate Solaranlage 2022-11-08 10:13:34 EnergyToUserTotal 0
setstate Solaranlage 2022-11-08 10:13:34 GridFrequency 50
setstate Solaranlage 2022-11-08 10:13:34 INVPowerToLocalLoad 0
setstate Solaranlage 2022-11-08 10:13:34 INVPowerToLocalLoadTotal 0
setstate Solaranlage 2022-10-26 19:54:01 IODev mqtt2_client
setstate Solaranlage 2022-11-08 10:13:34 InputPower 407.4
setstate Solaranlage 2022-11-08 10:13:34 InverterStatus 1
setstate Solaranlage 2022-11-08 10:13:34 InverterTemperature 32
setstate Solaranlage 2022-11-08 10:13:34 L1ThreePhaseGridOutputCurrent 1.9
setstate Solaranlage 2022-11-08 10:13:34 L1ThreePhaseGridOutputPower 399.9
setstate Solaranlage 2022-11-08 10:13:34 L1ThreePhaseGridVoltage 226.4
setstate Solaranlage 2022-11-08 10:13:34 L2ThreePhaseGridOutputCurrent 0
setstate Solaranlage 2022-11-08 10:13:34 L2ThreePhaseGridOutputPower 0
setstate Solaranlage 2022-11-08 10:13:34 L2ThreePhaseGridVoltage 0
setstate Solaranlage 2022-11-08 10:13:34 L3ThreePhaseGridOutputCurrent 0
setstate Solaranlage 2022-11-08 10:13:34 L3ThreePhaseGridOutputPower 0
setstate Solaranlage 2022-11-08 10:13:34 L3ThreePhaseGridVoltage 0
setstate Solaranlage 2022-11-08 10:13:34 LocalLoadEnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 LocalLoadEnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 Mac 24:62:AB:09:48:AC
setstate Solaranlage 2022-11-08 10:13:34 OutputPower 399.3
setstate Solaranlage 2022-11-08 10:13:34 PV1EnergyToday 0.5
setstate Solaranlage 2022-11-08 10:13:34 PV1EnergyTotal 39
setstate Solaranlage 2022-11-08 10:13:34 PV1InputCurrent 6.1
setstate Solaranlage 2022-11-08 10:13:34 PV1InputPower 407.4
setstate Solaranlage 2022-11-08 10:13:34 PV1Voltage 70
setstate Solaranlage 2022-11-08 10:13:34 PV2EnergyToday 0
setstate Solaranlage 2022-11-08 10:13:34 PV2EnergyTotal 0
setstate Solaranlage 2022-11-08 10:13:34 PV2InputCurrent 0
setstate Solaranlage 2022-11-08 10:13:34 PV2InputPower 0
setstate Solaranlage 2022-11-08 10:13:34 PV2Voltage 0
setstate Solaranlage 2022-11-08 10:13:34 PVEnergyTotal 39
setstate Solaranlage 2022-11-08 10:13:34 SOC 0
setstate Solaranlage 2022-11-08 10:13:34 TWorkTimeTotal 787641.5
setstate Solaranlage 2022-11-08 10:13:34 TemperatureInsideIPM 32
setstate Solaranlage 2022-11-08 10:13:34 TodayGenerateEnergy 0.4
setstate Solaranlage 2022-11-08 10:13:34 TotalGenerateEnergy 38.3
setstate Solaranlage 2022-11-02 08:04:29 json2nameValueErrorText json2nameValue: no closing } found
setstate Solaranlage 2022-11-02 08:04:29 json2nameValueInput {"InverterStatus":1,"InputPower":115.3,"PV1Voltage":71.4,"PV1InputCurrent":1.6,"PV1InputPower":115.3,"PV2Voltage":0,"PV2InputCurrent":0,"PV2InputPower":0,"OutputPower":113,"GridFrequency":50.02,"L1ThreePhaseGridVoltage":222.9,"L1ThreePhaseGridOutputCurrent":1.4,"L1ThreePhaseGridOutputPower":115.7,"L2ThreePhaseGridVoltage":0,"L2ThreePhaseGridOutputCurrent":0,"L2ThreePhaseGridOutputPower":0,"L3ThreePhaseGridVoltage":0,"L3ThreePhaseGridOutputCurrent":0,"L3ThreePhaseGridOutputPower":0,"TodayGenerateEnergy":0,"TotalGenerateEnergy":28.7,"TWorkTimeTotal":580932.5,"PV1EnergyToday":0,"PV1EnergyTotal":29.2,"PV2EnergyToday":0,"PV2EnergyTotal":0,"PVEnergyTotal":29.2,"InverterTemperature":19.3,"TemperatureInsideIPM":19.3,"BoostTemperature":0,"DischargePower":0,"ChargePower":0,"BatteryVoltage":0,"SOC":0,"ACPowerToUser":0,"ACPowerToUserTotal":0,"ACPowerToGrid":0,"ACPowerToGridTotal":0,"INVPowerToLocalLoad":0,"INVPowerToLocalLoadTotal":0,"BatteryTemperature":0,"BatteryState":0,"EnergyToUserToday":0,"EnergyToUserTotal":0,"EnergyToGridToday":0,"EnergyToGrid�
Parallel hat man auch eine rudimentäte Webansicht, siehe Bild.
Hi nighthawk
welchen Wechselrichter hast du? Ich habe gestern einen Wemos D1 mini geflasht und an meinen SPH gesteckt, aber die Kommunikation zwischen WR und Wemos hat nicht geklappt.
Dann wollte ich den Shinewifi-S Stick flashen, aber der hat sich gewehrt (habe kein Schreibzugriff hinbekommen, obwohl ich GPIO0 und GND beim Start gebrückt hatte ; grüne LED ging aus als ich die Brücke entfernt hatte).
Welchen TTL Adapter hast Du denn am Wemos D1 ?
Wenn der keinen CH340 Chip hat sondern einen FTDI, oder CP21XX funktioniert es nicht.
CH340G
Hast du das auch am laufen und wenn ja wie? Also welche hard- und Software. Könnte es an der FW-Version des WR liegen?
Nein, ich wollte meinen Stick im parallel Betrieb weiterverwenden da die App einenen hohen WAF hat und ich die lokalen Daten "nur" für die Steuerung benötige.
Daher Daten über RS485 abgreifen und via MQTT senden.
Mit der Lösung von Tobias hatte ich aber keinen Erfolg bei meinem BH UP, am Ende hab es daher mit diversen Codesschnipseln und ESPHome umgesetzt.
Achso. Danke für das Feedback. Ich will weg von der Chinacloud.
Zitat von: uron am 27 März 2023, 10:11:16Ich kann die Angaben im Monitor nicht interpretieren!?
Bitte mal die Baudrate auf 115200 stellen ;)
Dann kann man es auch lesen .....
Zitat von: Tobias am 05 April 2023, 08:59:04Bitte mal die Baudrate auf 115200 stellen ;)
Dann kann man es auch lesen .....
So, nach längerer Zeit melde ich mich wieder, hatte andere Prioritäten, die in den Hintergrund rückten, bis mein bislang funktionierender ShineWiFi-x-Stick seit Freitag nicht mehr aktivierbar war, zumindest bekomme ich es nicht hin.
Deshalb doch wieder der Versuch, mit dem ESP32 an die aktuellen Daten des WR zu kommen.
Gerade habe ich nochmals den SerialMonitor mit der empfohlenen Baudrate gestartet.
Wirkliche Handlungswege kann ich aus dem Ergebnis allerdings nicht herauslesen, außer, dass irgendetwas mit der Software (Firmware?) und dem WLAN-Zugang nicht stimmt (Screenshot s. Anlage) Serial Monitor esp32.JPG.
Dies merke ich aber auch daran, dass ich mich nicht nicht auf des ESP aufschalten kann: In meinem Router gibt es 2 IP-Adressen, die 192.168.x.191 unter ungenutzte Verbindungen und 192.168.x.197 auf die ich nicht zugreifen kann, jedoch mit einem ping erreiche.
Alle MQTT-Growatt-Devices stehen auf Offline, logisch, da alle Devices mit der IP-Adresse ...191 konfiguriert sind.
MQTT-Devices Growatt in FHEM.JPG
Beispielhaft hier ein list eines Device
Internals:
CONNECTS 3
Clients :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
ClientsKeepOrder 1
DEF 1883 global
FD 13
FUUID 63d7d3e4-f33f-aab4-350e-e0d8fa6c1e7dbfff
NAME MQTT2_FHEM_Server
NR 686
PORT 1883
STATE Initialized
TYPE MQTT2_SERVER
eventCount 5
MatchList:
1:MQTT2_DEVICE ^.
2:MQTT_GENERIC_BRIDGE ^.
READINGS:
2023-04-09 09:28:54 nrclients 1
2023-04-08 21:16:15 state Initialized
clients:
MQTT2_FHEM_Server_192.168.2.157_37846 1
retain:
Attributes:
alias MQTT2_FHEM_Server
room Büro,MQTT2
Den ESP32 im AP-Modus aufzurufen gelingt auch nicht, da mir seine SSID nicht angezeigt wird. Wie kann man den ESP so resetten, dass ich ihn im AP-Modus und über welche IP-Adresse ansprechen kann?
Hast du einen Tipp, wie ich ein Stück weiterkomme?
Ergänzung:
Im ioBroker erscheint folgende Fehlermeldung:
modbus.0
2023-04-09 10:06:47.460 error Client in error state.
modbus.0
2023-04-09 10:06:47.459 error Socket Error
Irgendwie komm ich mit Deinen IP nicht klar.
Der ESP ist connectet mit 192.168.0.101
Will aber zum MQTT 192.168.2.147
O.K. könnte man so machen, 2 Subnetze, aber dann müsstest Du routen.
FHEM MQTT Bridge läuft aber auf 192.168.2.157, dem ESP hast Du aber die 147 mitgegeben.... damit läuft der in leere.
Du hast 2 unbekannte Adressen in welchem Subnet ?
Check mal bitte Deine DHCP Einstellungen und vor allem.... nutzt Du wirklich mehrere Subnetze?
ESP Wifi kann man forcieren in dem man ihn mal weit weit weg vom Router startet, dann öffnet er den AP als Fallback.
Ja, die IP Einstellungen sind völlig konfus.
Da bitte mal Ordnung reinbringen und dann klappt es auch :)
Zitat von: Teamdrachen am 10 April 2023, 09:58:40Irgendwie komm ich mit Deinen IP nicht klar.
Der ESP ist connectet mit 192.168.0.101
Will aber zum MQTT 192.168.2.147
O.K. könnte man so machen, 2 Subnetze, aber dann müsstest Du routen.
FHEM MQTT Bridge läuft aber auf 192.168.2.157, dem ESP hast Du aber die 147 mitgegeben.... damit läuft der in leere.
Du hast 2 unbekannte Adressen in welchem Subnet ?
Check mal bitte Deine DHCP Einstellungen und vor allem.... nutzt Du wirklich mehrere Subnetze?
ESP Wifi kann man forcieren in dem man ihn mal weit weit weg vom Router startet, dann öffnet er den AP als Fallback.
Danke für die Unterstützung. Mir ist völlig schleierhaft, wo das Netz (192.168.0.101) herkommt, es ist bei mir nicht angelegt. Möglicherweise stammt es vom Nachbarn. Ich muss jetzt schauen, wie ich das ganze wieder resetten kann und werde morgen den Tipp "weit weg vom Router" testen.
Ich denke aber, ich komme nochmals auf euch zurück, da ich nicht weiß, wo die ...2.147 festgelegt worden ist.
Am besten mit powerbank und den ESP beim spazieren mitnehmen ;)
Sehr gute Idee und dann im AP-Modus halten bis ich wieder zu Hause bin!?
Nö, aber mit dem Handy auf den AP gehen und konfigurieren.
Sobald er danach im heimnetz ist sollte er sich sauber verbinden....
Zitat von: Tobias am 10 April 2023, 17:40:21Nö, aber mit dem Handy auf den AP gehen und konfigurieren.
Sobald er danach im heimnetz ist sollte er sich sauber verbinden....
Gibt es noch eine andere Möglichkeit? Ich sehe zwar die SSID des ESP32 "auf freiem Feld" und ich kann mit dem Handy die SSID nach zahlreichen Versuchen verbinden, die IP-Adresse 192.168.4.1 kann ich im Browser aber nicht aufrufen, da "Server nicht erreichbar ist"
So, nun hat es doch noch geklappt, des ESP auf das häusliche Netzwerk "einzuschwören". Das Abschalten des Heimnetzwerkes am Router brachte den Erfolg und ich konnte des ESP im AP-Modus erreichen.
Nun gehts ans Konfigurieren, wollte nur mal die Info loswerden, damit ihr euch nicht unnötig müht!
Nachdem ich nun meine WLAN-Probleme in der Garage mittels zusätzlichem Repeater gelöst habe (der Shine WiFi X von Growatt an gleicher Stelle hat offenbar eine deutlich bessere Antenne und ich muss meinem ESP32 wohl noch eine externe Antenne gönnen), kommt mein nächstes Problem mit der Schnittstelle in Form von fehlenden Daten:
Lt. Default im Tool (s. Anlage) soll RXD auf D16 liegen (GPIO 16?) und TXD auf D17. Sollten das tatsächlich die GPIO-Bezeichnungen sein, geht es hier nicht weiter. Angesteckt ist die serielle Schnittstelle auf den beiden PINs links oben 3 und 4 PIN von links.
Das müsste nach meiner Kenntnis GPIO 1 und 3 sein, die ich aber auf dem Board nicht belegen kann!
Bin ich ganz falsch oder welche Voreinstellungen sind vorzunehmen?
Hey, da steht's doch auf dem Board , an den Pins, direkt drauf: D16 und D17
Oh man, und ich habe mich an den Bezeichungen auf dem Board orientiert.
Leider kommen auch nach dem Umstecken auf 16 und 17 keine Daten an!
Folgende Einstellungen habe ich nun (Anlagen), ist da noch etwas zu verändern?
Wo finde ich im Growatt-WR die Modbus Client-ID?
An Jumperkabel zum Breakoutboard habe ich nur 3,3V, GND, RS und TX - müsste doch korrekt sein?
Kommen denn überhaupt Daten rein ?
Wie/Wo hast Du das Kabel am Growatt eingesteckt und welche Pins vom RJ45 nutzt Du ?
Zitat von: uron am 15 März 2023, 10:31:12Zitat von: Tobias am 28 Januar 2023, 18:46:02Der COM Anschluss ist/ müsste der richtige. Und dann funktioniert es auch mit deinem ;)
So jetzt mache ich mich auf den (steinigen) Weg, steinig deshalb, da ich mit Nicht/Halbwissen ans Werk gehe.
Richtig ist sicher, dass zunächst trotz (dann neuer) Modbus-Verbindung die direkt mit ioBroker kommuniziert, die Verbindung zum Chinaserver aufrecht bestehen bleibt und ich über meinen Shine-WiFi-Stick aktuelle Daten dort mittels App abrufen kann, oder? Wenn ich dann später die Verbindung zum Chinaserver kappe, müsste ich mir wohl im ioBroker eine Dastellung basteln (VIS), damit ich auch unterwegs meine PV-Anlage einsehen kann.
In den Unterlagen zum COM-Anschluss meines Growatt-WR (MIN_4600TL-XH) habe ich die in der Anlage (Foto) skizzierte Belegung des COM-Ports gefunden
PIN 5+6 sind bereits mit dem Smartmeter belegt, bleibt 3 und 4, um dort die Daten vom ioBroker abzugreifen - soweit müsste das passen.
Nun zur Hardware - und da bestehen bei mir existenzielle Fragen:
Da ich keinen LAN-Anschluss in meiner Garage habe, benötige ich eine Verbindung über WLAN in mein Netz, so wie sich auch der Shine-Wifi-Stick dort verbindet.
Wie schon vor einigen Seiten hier im Thread berichtet habe ich das Beakoutboard an die PINS 3 und 4 des COM-Ports angeschlossen!
Die Frage nach den PINs am RJ45 verstehe ich überhaupt nicht!
RX und TX vom ESP müssen korrekt an RX und Tx des Boards dran sein.
Die Modbus A und B Pins dürfen nicht vertauscht sein.
Bei der Verkabelung kann man viel falsch machen und nur die exakt richtige Kombination funktioniert ;)
Passen RX und TX blinkt zumindest Eine der beiden LEDs auf dem Board im Abfrageintervall auf.
Passen dann auch noch die Modbus Pins und die Modbus Konfiguration blinken beide LEDs auf und es kommen Daten.
Wurde die Konfiguration in der Weboberfläche verändert, sicherheitshalber ein reboot des esp machen.
Nur eine der beiden LEDs auf dem Board blinkt, dann passen wohl RX und TX!
Da auch TX (Board) definitiv mit D17 (ESP32) und analog RX mit D16 verbunden ist, bliebe nur noch die Modbus-Konfiguration.
Einen separaten PIN für "Modbus Direction Control RTS-Pin (Default: 18)" brauche ich gem. Beschreibung nicht (Board HW-0519).
Einen Reboot habe ich gemacht, seltsam ist nur, dass ich danach nicht mehr auf den ESP32 komme, erst wieder nachdem ich ihn stromlos gemacht habe!?
Bliebe nur noch die Client-ID (Default: 01). Wo bekomme ich die her?
Mein Modbus-Adapter im ioBroker meldeterror Client in error state.
und
die Warnmeldung On error: {"errno":-111,"code":"ECONNREFUSED","syscall":"connect","address":"192.168.2.191","port":502}
Gibt es da Zusammenhänge?
Hi,
Wenn du über die weboberfläche ein Reboot initiierst, Stoppe mal das Browserfenster. Es kann sein das es immer weiter lädt und den esp in eine Boot Schleife zwingt.
Die clientID ist die ModbusID den du im WR einstellst. Genauso wie die anderen Modbus Parameter.
Danke für den Boot-Hinweis!
Zur Client-ID: Genau das ist mein Problem: Ich finde im WR die Möglichkeit nicht, Modbuseinstellungen vorzunehmen
Hallo uron,
stell mal die Baud rate auf 9600
Zitat von: gape am 19 April 2023, 01:59:03Hallo uron,
stell mal die Baud rate auf 9600
Hat leider nichts gebracht und ich habe sie wieder zurückgestellt.
Leider kämpfe ich immer noch mit WLAN-Problemen und warte auf ein "China-SMA" für meine Antenne - Lieferung dauert bis Anfang Mai.
In der Zwischenzeit hoffe ich auf meine Anfrage hier im Forum, wo ich im WR die Möglichkeit finde, Modbuseinstellungen vorzunehmen!!!!
Beim Solax Wechselrichter gibt es zwei Möglichkeiten: einmal User Einstellungen und einmal Experten Einstellungen. Die modBus Einstellungen sind nur unter den Experten Einstellungen sichtbar. wie auch immer, die Modus Einstellungen musst du im Benutzerhandbuch deines Wechselrichters suchen, wo sie zu finden sind.
Leider ist das bei Growatt offenbar nicht so einfach wie bei Solax.
In der hier verlinkten Bedienungsanleitung Bedienungsanleitung MIN 4600 TL-XH (https://www.manualslib.de/download/829232/Growatt-Min-2500Tl-Xh.html) findet sich weder ein Expertenmodus noch ein Hinweis auf modBus, der zum Ziel führt.
Dann ändere die ID doch im ESP.
Geht fix und man kann so mal die üblichen Verdächtigen von 1-3 bzw. auch 1-9 durchspielen.
Nachdem ich nun endlich meine WLAN-Probleme mittels einer Zusatzantenne am ESP beseitigt habe, habe ich die IDs von 01-o9 durchgespielt - leider ohne Erfolg. Ich bekomme keine Daten vom WR!
Hat jemand noch eine Idee?
Ich weiß jetzt nicht ob ich hier schon was dazu geschreiben habe wie ich es jetzt seit einiger Zeit mache, ich nutze dazu den ioBroker.
Im ioBroker gibt es dann ein Modul für Growatt, das holt relativ zuverlässig die Daten ab.
bei mir läuft der ioBroker in einem LXC auf dem Proxmox, wenn du die Möglichkeit dazu hast würde ich mehr schreiben.
Ich frage den WR parallel auch über den ioBroker-Adapter ab, da kommen eine Menge Daten rüber. Den ioBroker habe ich auf einem RasPi laufen.
Allerdings fehlen hier Daten, die ich gerne auslesen möchte: Die Daten vom Smartmeter.
Da das Smartmeter ebenfalls über die RS485-Schnittstelle mit dem WR verbunden ist, habe ich mir versprochen, dessen Daten auch am WR abgreifen zu können. Liege ich damit falsch oder kann mir jemand einen Weg zeigen, wie ich an die Smartmeterdaten komme?
Derzeit lese ich den Strombezug und -einspeisung mit einem powerfox-Lesekopf direkt am Zähler ab. Von powerfox möchte ich mich allerdings gerne trennen, da immer wieder Serverprobleme auftreten und der Lesekopf nach 3 Jahren kostenpflichtig wird.Leider funktioniert der Support bei Powerfox auch nicht mehr so, wie anfangs, wo ich begeistert war.
Last but not least wäre high end, wenn ich den Chinaserver von Growatt nicht mehr brauchen würde.
ich habe den Shelly 3EM Pro gekauft somit brauche ich diese Auslesekopf Geschichte nicht
Ja, der Shelly Pro 3EM ist auch eine sehr gute Möglichkeit, aber es ist doch traurig, dass ein zweites Messgerät gebraucht wird, wo ich doch das SmartMeter habe, nur weil ich nicht an die Daten herankomme.
da sprichst du mir aus der Seele, was diese verkackten Chinesen da alles an unseren Daten rum schrauben und uns da nicht ran lassen... man sollte deren Wechselrichter garnicht mehr kaufen.
Was für ein Sackstand um an meine Daten zu bekommen.... ich betone MEINE DATEN.
Nicht übel nehmen meine Wortwahl, aber es ich echt so... Frechheit
Es gibt verschiedene Modelle, was sich vor allem auf die Modbus Adressen auswirkt.
Beim SPH 4000-10000TL3 BH-UP kommen die wichtigsten Daten aber mit.
Beispiele:
AC Power to User Total = Netzbezug = Adresse 1021
AC Power to Grid Total = Einspeisung = Adresse 1029
INV Power to Local Load Total = Eigenversorgung = Adresse 1037
Da ich jetzt auch einen SPH 10000TL3 BH-UP mit meiner Steuerung verknüpfen muss mal für mich selbst und evtl. Andere eine Zusammenfassung, ob ich die Möglichkeiten korrekt verstanden habe:
- Die Daten mit HTTPMOD oder ähnlichen skripten aus der Cloud Abgreifen. Update interval ist vermutlich ähnlich schlecht wie in der App.
- Die Kommunikation des ShineWIFI Moduls abhorchen und zu MQTT, Vorteil/Nachteil Cloud bleibt am Laufen, Nachteil Update Rate unbekannt?
https://github.com/johanmeijer/grott
- Modbus mit entprechender Hardware (Raspberry ESP32 etc. und Modbus Adapter) direkt abfragen und zu MQTT schicken. Welchen Port nimmt man da am SPH; R485-3?
https://github.com/tobiasfaust/SolaxModbusGateway
- Den ShineWIFI umflashen Cloud Verbindung dann aber nicht mehr möglich.
https://github.com/otti/Growatt_ShineWiFi-S
So weit so korrekt?
Zitat von: Qowy am 24 Juli 2023, 15:49:26Da ich jetzt auch einen SPH 10000TL3 BH-UP mit meiner Steuerung verknüpfen muss mal für mich selbst und evtl. Andere eine Zusammenfassung, ob ich die Möglichkeiten korrekt verstanden habe:
- Die Daten mit HTTPMOD oder ähnlichen skripten aus der Cloud Abgreifen. Update interval ist vermutlich ähnlich schlecht wie in der App.
- Die Kommunikation des ShineWIFI Moduls abhorchen und zu MQTT, Vorteil/Nachteil Cloud bleibt am Laufen, Nachteil Update Rate unbekannt?
https://github.com/johanmeijer/grott
- Modbus mit entprechender Hardware (Raspberry ESP32 etc. und Modbus Adapter) direkt abfragen und zu MQTT schicken. Welchen Port nimmt man da am SPH; R485-3?
https://github.com/tobiasfaust/SolaxModbusGateway
- Den ShineWIFI umflashen Cloud Verbindung dann aber nicht mehr möglich.
https://github.com/otti/Growatt_ShineWiFi-S
So weit so korrekt?
Für die HTTPMOD-Variante siehe https://forum.fhem.de/index.php?topic=98637.msg1250537#msg1250537
Das Interval ist abhängig von der Einstellung des Sticks, kann auf 1 Minute gesetzt werden.
grott kann auch komplett den Datenverkehr behandeln und die Cloud umgehen.
Zitat von: moonsorrox am 14 Dezember 2022, 13:16:36ich habe das auch mal nachgestellt, funktioniert super
Was mir nicht ganz klar ist
ZitatgetInvDayChart
da erscheint bei mir nur eine Zahl, das ist die gerade aktuelle Produktion mit 4 Stellen hinter dem Komma, habe ich was übersehen.?
BKW 350.94998
Das hört sich alles echt kompliziert an, warum so ein Aufwand mit shinewifi umflashen oder Netzwerk abhorchen wenn es auch einfach geht???
ZitatModbus mit entprechender Hardware (Raspberry ESP32 etc. und Modbus Adapter) direkt abfragen und zu MQTT schicken. Welchen Port nimmt man da am SPH; R485-3?
https://github.com/tobiasfaust/SolaxModbusGateway
Hallo Tobias,
ich habe deinen Beitag interessiert gelesen, da ich schon meine Gastherme mit ESP-EMS und MQTT an Fhem angebunden habe.
Seit nun drei Wochen läuft bei mir ein Growatt SPH3000, den ich so wie du beschrieben hast koppeln wollte, auch aus dem genannten Grund dass die shinewifi Verbindung zu Cloud erhalten bleiben soll.
Meine Frage dazu währe ob du ev. ein paar Schaltbilder bzw. Fotos von deiner Anlagenkopplung hast.
Ich bin in dem Stadium dass die Teile ESP32 NodeMCU und den MAX485 Module TTL Switch bestellt sind.
Gruß
Eckhard
Von mir noch ein Update der letzten Tage.
Ich verwende einen ESP32-WROOM-32 und den HW-97 am Growatt SPH_3000 TL_BL-UP.
Die Verdrahtung der Module habe ich wie in Tobias seiner Anleitung gemacht.
Am Wechselrichter wird die Batterie über CAN-Bus gesteuert, so habe ich die RS485 auf VPP umgestellt. Die Modbusadresse im WR ist 001.
Leider habe ich keine LED-Kontrolle ab TXD und RxD. Habe die Beiden auch schon vertauscht, auch die RS485-1 und RS485-2 am WR habe ich benutzt aber ohne Erfolg.
Alles läuft (MQTT/Fhem) nur Daten vom Wechselrichter kommen keine.
Keine Ahnung was falsch ist. Die einige Möglichkeit währe noch ein anderes Breakout-Bord zu verwenden.
Hat noch jemand eine anderen Tip?
Gruß
Eckhard
Hi,
Die RX und TX LEDs sind auf dem Modbus breakout Board.
Diese müssen wie beschrieben leuchten bei einer Kommunikation.
Ansonsten schau mal bitte in die Issues in meinem Report, da wird dies ebenso diskutiert.
Ggf mal ohne Batterie probieren, auch die Baudrate prüfen. Es ist definitiv ein Verdrahtungen- bzw. Konfigurationsproblem.
Grüsse
Hallo Tobias,
danke für die Info, ich habe die Issuse gelesen.
Baudrate habe ich jetzt auch mal auf 9600 umgestellt.
Lustig ist, dass mein Growatt schon wieder anders aussieht als in der einen Problembeschreibung gezeigt wird.
Jeder Growatt hat unterschiedliche Pin Belegungen ... toll. Pin 4/5 und 1/5 hab ich schon probiert, 7/8 noch nicht.
Ich hab jetzt erstmal ein anderes breakout Board mit LED`s bestellt, mal sehen was ich da sehe :-\
Warum meinst du, mal ohne Batterie probieren? die ist am CAN-Bus mit dem WR verbunden.
Ich werds mal probieren.
Gruß
Eckhard
Thomas,
ich noch mal ;D
ich hatte es nicht glauben wollen ...
Es sind doch die Pins 1 und 5 an den RS485-1/2, nur musste ich sie tauschen, wie der Hinweis in deiner Beschreibung .
Im Zusammenhang der eingestellten Baudrate 9600 hat die Verbindung nun geklappt.
Ein paar Problemchen habe ich aber noch mit MQTT und Fhem.
1. jedes mal wenn ich den ESP32 neu starte erscheint ein neuer MQTT2 Device trotz der Einstellung in der Basis Config "benutze statische MQTT ClientID" und fester IP-Adresse.
Er hat auch Probleme mit dem Wiederaufbau der Netzwerkverbindung. Erst wenn ich die RS485 Verbindung trenne geht das Netzwerk und MQTT wieder.
Wie kann ich das verhindern?
MQTT2_DEVICE
MQTT2_Growatt_1_004CEE78 Online
MQTT2_Growatt_1_1691 Offline
MQTT2_Growatt_1_0328 Offline
2. was bedeuten die beiden Daten?
relay1:.* relay1
relay2:.* relay2
Die gehören noch zur Statusanzeige, in der Item Conf sind sie nicht mit aufgelistet.
define MQTT2_Growatt_1_004CEE78 MQTT2_DEVICE Growatt_1_004CEE78
attr MQTT2_Growatt_1_004CEE78 readingList Growatt_1_004CEE78:home/Growatt_1/IP:.* IP\
Growatt_1_004CEE78:home/Growatt_1/version:.* version\
Growatt_1_004CEE78:home/Growatt_1/state:.* state\
Growatt_1_004CEE78:home/Growatt_1/relay1:.* relay1\
Growatt_1_004CEE78:home/Growatt_1/relay2:.* relay2\
Growatt_1_004CEE78:home/Growatt_1/InverterRunState:.* InverterRunState\
Growatt_1_004CEE78:home/Growatt_1/InputPower:.* InputPower\
Growatt_1_004CEE78:home/Growatt_1/PowerPv1:.* PowerPv1\
Growatt_1_004CEE78:home/Growatt_1/PowerPv2:.* PowerPv2\
Growatt_1_004CEE78:home/Growatt_1/GridFrequency:.* GridFrequency\
u.s.w.
wenn du dazu noch einen paar Tips hättest.
Gruß
Eckhard
Du darfst dich nicht auf die clientID verlassen sondern musst die topicnamen benutzen. Diese sind fest. Die clientID ist eigentlich nur zum einstellen wenn man mehrere Gateways im Einsatz hat.
Die Relay's kannst du über die Config ausschalten wenn dein WR keine Relais bereitstellt und du diese auch mit dem ESP verbunden hast.
Bzgl netzwerkverbindung: Versuch mal mit hterm dir die Ausgabe auf der seriellen Konsole anzusehen. Siehe Wiki, das sieht so aus als ob der ESP rebootet weil er mit irgendeinem Teil der WR Antwort nicht zurecht kommt. Wenn es so ist, schalte mal auf LogLevel 5, verbinde den WR wieder, schau was passiert, mache im repo bitte ein Issue auf und lade dort mal das Log vom hterm hoch
OK,
Danke erstmal für die Tips.
Ich werd das mal probieren.
Nun bin ich nicht so Firm wie du, ich werd es mal versuchen.
Zitatmache im repo bitte ein Issue auf und lade dort mal das mal gucken vom hterm hoch
Bis jetzt war ich nicht so auf diesen Seiten unterwegs. hterm kenne ich 8)
Englich ist nicht so mein Ding, ein hoch auf den Google Übersetzer.
Ich bin in dem Alter, ich habe nur Russisch in der Schule als Fremdsprache gehabt. :D
Danke und
bis demnächst
Eckhard
Hi Eckhard,
Natürlich kannst du dort auch auf deutsch schreiben ;) das ist kein Problem
Ja ok,
ich habs so halbwegs mit Google hin bekommen.
Was denkst du, kannst du da was finden?