NEWS
[Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana
-
Hallo zusammen,
meine PV produziert jetzt seit 1,5 Tagen. Das Thema ist für mich also noch neu.
Hatte mir auf die Schnelle die modbus-Daten ausgelesen und historisiert. Danke für die Holding-Register!Eine Frage habe ich aber: Bekommt ihr in Grafana auch solche "Ausreißer" in den Morgen-/ Abendstunden dargestellt? Die Werte kommen so über den modbus-Adapter, es ist kein Grafana-Problem.
Die Daten werden sekündlich abgerufen und sind auf drei Minuten geglättet, aber das ist ja hier eher egal. Ohne Glättung sieht es genauso aus. Die grüne und die blaue Linie sind der 40084. Hatte den Wert noch einmal umbenannt, deshalb zwei Werte.
Die gelbe Linie ist 40207. Die sieht (erst einmal) gut aus.Danke für eure Ideen,
Tobias -
Nein, bekomme ich nicht. Ich takte auch im Abstand von 1s und mache dann eine Mittelwertbildung über 600s. Das passt dann relativ gut zur Solaredgeanzeige.
Falls es Dir hilft mein Script ... (habe ich so mit Blockly) umgesetzt ...
var iD, Liste1, Liste2, Liste3, Liste4, Liste5, Intervall; iD = 600; Liste1 = []; Liste2 = []; Liste3 = []; Liste4 = []; Liste5 = []; Intervall = setInterval(async function () { Liste1.push(getState("0_userdata.0.1_Netzbezug").val); if (Liste1.length >= parseFloat(iD) + 1) { setState("0_userdata.0.1_Netzbezug_D"/*1_Netzbezug_D*/, (parseFloat(Liste1.reduce(function(x, y) {return x + y;})) / iD), true); Liste1 = []; } Liste4.push(getState("0_userdata.0.4_Energieverbrauch").val); if (Liste4.length >= parseFloat(iD) + 1) { setState("0_userdata.0.4_Energieverbrauch_D"/*4_Energieverbrauch_D*/, (parseFloat(Liste4.reduce(function(x, y) {return x + y;})) / iD), true); Liste4 = []; } Liste2.push(getState("0_userdata.0.2_PV_Aktuell").val); if (Liste2.length >= parseFloat(iD) + 1) { setState("0_userdata.0.2_PV_Aktuell_D"/*2_PV_Aktuell_D*/, (parseFloat(Liste2.reduce(function(x, y) {return x + y;})) / iD), true); await wait(500); setState("0_userdata.0.5_PV_Frei_D"/*5_PV_Frei_D*/, (parseFloat(getState("0_userdata.0.2_PV_Aktuell_D").val) - getState("0_userdata.0.4_Energieverbrauch_D").val), true); Liste2 = []; } Liste3.push(getState("0_userdata.0.3_Batterie").val); if (Liste3.length >= parseFloat(iD) + 1) { setState("0_userdata.0.3_Batterie_D"/*3_Batterie_D*/, (parseFloat(Liste3.reduce(function(x, y) {return x + y;})) / iD), true); Liste3 = []; } Liste5.push(getState("0_userdata.0.2_PV_Aktuell").val); if (Liste5.length >= 86401) { setState("0_userdata.0.2_PV_Aktuell_S"/*2_PV_Aktuell_S*/, (parseFloat(Liste5.reduce(function(x, y) {return x + y;})) / 3600), true); Liste5 = []; } }, 1000);
-
@tobias
Das Problem hatte ich auch, du hast vermutlich vergessen den Skalierungsfaktor zu berücksichtigen, der Ändert sich im TagesverlaufGruß Markus
-
@mkniehl
Jein - ich hatte einen Fehler in der Formel.Danke Dir aber trotzdem - hätte ich ja hier auch mal reinschreiben können.
-
@hennerich said in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:
Außerdem wird zwingend der Energiezähler mit Modbus Anschluss benötigt.
Hallo.
Leider bekomme ich den Energiezähler mit Modbus Anschluss nicht mehr. Es wurde mir der neue Inline Energiezähler von SolarEdge geliefert.
Wie funktioniert das dann damit? Oder gibt es da dann keine Möglichkeit die Werte in iobroker zu übernehmen? -
@manfredh-1
Moin,also hier scheint es die Dinger noch zu geben
https://www.photovoltaik4all.de/solaredge-energiezaehler-modbus-se-mtr-3y-400v-aBlöd ist natürlich, wenn du schon viel Geld für das neue Teil ausgegeben hast.
Hast du schon mal in der Doku nach einer Schnittstelle geschaut?Edit: also in der Doku steht was von ModBus:
-
@hennerich said in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:
Blöd ist natürlich, wenn du schon viel Geld für das neue Teil ausgegeben hast.
Hast du schon mal in der Doku nach einer Schnittstelle geschaut?Danke für die Info. Ja, ich hab den schon geliefert bekommen und auch bezahlt.
Das Datenblatt habe ich auch gelesen. Hoffe nur, dass wenn ich die Energiezähler über ModBus RS485 verbinde, das dann genauso funktioniert, wie mit dem alten Energiezähler mit Modbus-Anschluss.. -
........
-
Irgend etwas stimmt hier doch nicht. Warum bekomm ich einen - Hausverbrauch?
-
Servus,
Setz den wert mal auf "Unsigned 16bit (Big Endian), dann sieht es schon anders aus/ Chris
-
@chris87Danke oh man... das wars. Im SolarEdge Modbus Regsiter Mapping steht int16.
Gibts ein Register für die LG Batterie?
-
Hallo zusammen,
hier mal meine Liste (alle SF Umrechnungen enthalten, keine seperate Umrechnung notwendig) :
Achtung
Die Werte mit RW am Ende sind beschreibbar und sollten mit äußerster Vorsicht behandelt werden./ Chris
-
@chris87 Gibts es ne Möglichkeit deine Liste direkt in die Holding Register zu importieren?
Was auch noch ist, mir werden in den javascripten die Einheiten nicht angezeigt, obwohl sie als Units eingetragen sind.
-
@christiank #
einfach oben (TSV bearbeiten), alles was drinnen ist löschen und meinen kompletten Spoiler einfügen. -
@christiank
bezüglich der Units.
Wie hast du die Datenpunkte erzeugt?
Wenn du ihn Manuell erzeugt hast, schreib einfach in die Objektdaten "unit": "W",/ Chris
-
@chris87 Liste habe ich importiert, Danke dafür.
Allerdings werden jetzt meine JS anders angezeigt. Z.B. TempWechselrichter ist jetzt um 2 Kommastellen verschoben. Anstatt 50Grad stehen jetzt 0,5. Register 40101 wird mir jetzt auch als 50 Grad angeziegt, sprich ich brauch den Faktor gar nicht mehr...
Datenpunkte hab ich im Skript per JS erstellt. Dort ist aber unit hinterlegt, wird nur nicht übertragen.
Irgend etwas passt bei mir noch nicht. 40084_I_AC_Leistung sollte mir die aktuelle Sonnenenergie anzeigen.
SolarEdgeMonitoring zeigt mir 3,4kW an, was in Bezug auf das Wetter passt. Modbus zeigt mir 5,2KW an. -
@scheuler Hallo Bernd, hast du passende Register zum Heizstab gefunden? Ich habe bis heute nichts passendes gefunden.
Gruß
Michael -
@christiank sagte in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:
Allerdings werden jetzt meine JS anders angezeigt. Z.B. TempWechselrichter ist jetzt um 2 Kommastellen verschoben. Anstatt 50Grad stehen jetzt 0,5. Register 40101 wird mir jetzt auch als 50 Grad angeziegt, sprich ich brauch den Faktor gar nicht mehr...
Hallo @ChristianK, das habe ich oben geschrieben, ich habe die Umrechnungen bereits im Modbus-Adapter gemacht.
Wie sieht dein JS aus, das Problem muss ja da liegen.
Die Eigentliche Solarleistung muss errechnet werden, 40084 zeigt dir nur die Wechselrichter-Leistung an. Du musst 40084 + 102837 rechnen, dann hast die reine PV Leistung.
-
@glasfaser
Herzlichen Dank, diese Liste funktioniert bei mir jetzt endlich.Allerdings nur bis Zeile "40108 I_Status_Anbieter" inklusive, danach nicht mehr.
Hab einen SE9K, die restlichen Felder werden wohl nicht unterstützt und liefern beim Versuch einen Fehler.Der Wert von
40093 I_AC_Energie_WH AC Gesamt-Energieproduktion Wh
stimmt auch mit dem überein was mein Sonnen Akku gemessen hat seit Beginn, passt also perfekt.Ich hatte am Anfang Probleme überhaupt irgendwas auszulesen, hatte beide Offsets probiert wie im Tutorial beschrieben. So wie ich das sehe muss man aber immer von ganz vorne alle Register auslesen, sonst geht garnix.
-
@technikaffin sagte in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:
Hab einen SE9K, die restlichen Felder werden wohl nicht unterstützt und liefern beim Versuch einen Fehler.
Danach wird der SolarEdge Zähler abgefragt und mein LG Akku .
Hier mal aktuell das Modbus-Register von mir.: