NEWS
SMA Energy Meter in Echtzeit auslesen
-
Ich möchte mir auch gerne einen SMA Energie Meter kaufen. Was kostet dieser? Finde keine Preise? Wie genau ist diese Erfassung?
-
Hallo,
kann der Wechselrichter ModBus? Dann könntest du dir über den ModBus Adapter alle Daten ziehen. Bei mir kommuniziert der EnergyMeter mit dem Wechselrichter. Dadurch habe ich mir das mit dem NodeRed gespart.
Gruß Marco `
Was meinst du mit Wechselrichter? Ich möchte gerne mein Stromverbrauch mit mit Bus abgreifen z.B. Modbus weiß aber nicht was ich dazu alles brauche. -
Hi Wobo,
ich habe via Node-Red die Werte von Iobroker mit den Werten in der CCU2 verknüpft.
Siehe Bild:
Hallo Kirbsi,
https://www.google.de/#q=sma+energy+meter&tbm=shop
Das Teil hat eine Ethernet-Schnittstelle und sendet im Broadcast sekündlich die aktuellen Daten. Das NodeRed-Script zum abgreifen der Daten habe ich schonmal hier veröffentlicht.
Gruß Marco
-
Hi Marcolotti,
könntest du mir etwas helfen bei dem node red Thema.
Ich möchte ebenfalls die Daten meines Energy Meter 2.0 in iobroker bekommen. Eine Übergabe an die CCU bräuchte ich nicht unbedingt,
ich möchte nur die Werte in iobroker visualisieren.
Ich hatte aber bisher noch keinerlei Berührungspunkte mit node red und daher auch keine Ahnung wie ich dein Script oben nun verwenden muss, damit es läuft.
Ich habe den node red adapter in iobroker installiert und dann stehe ich auch schon an …
Muss ich etwas konfigurieren ? Wo muss ich dein Script reinkopieren ?
Was ist mit http Stammpfad gemeint ? Was mit zusätzliche NPM Module ?
Wenn ich den Reiter node-red.0 öffne, dann erscheint nur der weinende Smiley (keine Seite verfügbar)
Momentan siehts bei mir so aus:
Vielen Dank für deine Hilfe.
Beste Grüße
-
Hallo Qlink,
ich gehe mal davon aus, dass du bereits über Adapter Node-Red installiert hast. Der weinende Smilie kommt bei mir auch immer, wenn die Node-Red Instanz noch nicht fertig gestartet ist oder man mal die Reiter wechselt. Konfigurieren musst du da eigentlich nichts mehr.
Danach gehst du rechts auf das Menüsymbol -> Import -> Clipboard und kopierst das Script hinein.
Danach sollte sich alles aufbauen. Beim Doppelklick auf die blauen Felder z.B. Verbrauch kannst du festlegen, mit welchem Objekt du es verknüpfen willst. Kannst dir also auch selber welche anlegen unter Objekte und diese dann verknüpfen.
Danach bitte auf Deploy gehen und losgehts schon.
Gruß Marco
-
Hi Marcolotti,
vielen Dank für deine Hilfe.
Ich bekomme jetzt Werte in iobroker rein.
Seltsamerweise bleibt aber der Wert "aktuelle_Einspeisung" bei 0kW ? Woran kann das liegen ?
Ich hätte gerne auch noch den Wert Netzbezug von W in kW umgerechnet und idealerweise auf 2 Kommastellen gerundet.Ich hätte dafür ein Umrechnungsscript probiert zu schreiben, aber der Wert in iobroker bleibt bei 0.
Habe ich einen Fehler in meinem Script oder etwas vergessen ?Wie kann ich die Rundung auf 2 Kommastellen bewerkstelligen ?
Beste Grüße
-
Versuch mal
setState("idNetzbezugkW", ((Math.round(getState("idNetzbezug").val / 1000) * 100) / 100), true);
Gruß Marco
-
Hi Marco,
ich bekomme jetzt einen umgerechneten Wert in kW, aber die Rundung auf 2 Kommastellen funktioniert noch nicht.
Bei 3340W Verbrauch zeigt er mir nun 3kW an bei dem berechneten Wert. d.h. er rundet auf ganze Zahlen…
Hast du auch eine Idee warum ich bei deinem Script beim Wert aktuell Einspeisung keinen Wert vom Energy Meter erhalte ?
Vielen Dank für deine Hilfe.
Beste Grüße
-
Hi,
mit welchem Widget zeigst du den an? Also bei mir funktioniert diese Vorgehensweise.
Gruß Marco
-
Hi Marco,
in vis kann ich die Werte ja beliebig mit einem Multiplikator anzeigen lassen. Dafür bräuchte ich die Umrechnung auch nicht. Da klappt alles gut.
Das Umrechnungsskript bräuchte ich um in flot die Kurven vergleichbar mit einer einheitlichen y-Achse anzeigen zu können.
Ich glaub dass das Umrechnungsskript auf ganze Zahlen rundet und nicht auf 2 Kommastellen.
Kann es sein das hier noch etwas geändert werden muss ?
Funktioniert bei dir das Umrechnungsskript, so dass beim Ergebnis ein Wert mit 2 Kommastellen angezeigt wird?
var idNetzbezug = 'hm-rega.0.40900'; // Datenpunkt-ID vorhanden var idNetzbezugkW = 'javascript.0.Netzbezug.kW'; // Datenpunkt-ID für neuen DP Netzbezug in kW function calckW() { var Netzbezug = parseFloat(getState(idNetzbezug).val); setState(idNetzbezugkW, ((Math.round(getState(idNetzbezug).val / 1000) * 100) / 100), true); } on(idNetzbezug, calckW); // bei jeder Änderung von Netzbezug
-
Hallo Qlink,
daher wird der Wert ja erst mit 100 Multipliziert -> gerundet (er rundet nur auf ganze Zahlen) und danach durch 100 subtrahiert.
Ich habe bei mir nochmal nachgesehen, wie es Blockly macht:
Vorher musst du noch deine Umrechnung auf kW machen.
Math.ceil(100 * getState("javascript.0.PV_Anlage.StromkostenanzeigeMonat").val/1000) / 100
Für sowas ist Blockly wirklich wunderbar.
Gruß Marco
-
Hi marcolotti,
so funktionierts perfekt!
Vielen Dank für deine Hilfe
Beste Grüße
-
Ich möchte gerne per Blockly die Werte addieren zu einem Gesamtverbrauchswert.
Irgendwie klappts aber nicht …
Wo liegt der Fehler ?
-
Hallo,
Trigger: Falls WERT von Objekt Netzbezug.
mach mal aktualisiere "WERT" von Objekt Gesamtverbrauch.
Den Gesamtverbrauch (Hausverbrauch) ermittelst du aber anders. Anbei mal mein Blockly-Script.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="A_|oG95s;SJyu.E{x%7V" x="-637" y="-587"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id=",XHVS?h[R1:AZAj~(]{I"><field name="oid">modbus.0.inputRegisters.30775_PVLeistung</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="qHHO|g6/TAQ.).Yo{lH?"><value name="IF0"><block type="logic_compare" id="ReyL(zZ-IFCB!(,SQ7e."><field name="OP">GT</field> <value name="A"><block type="get_value" id="8d,ucU}B{Mu_/WoqL*wW"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30865_Bezug</field></block></value> <value name="B"><block type="math_number" id="7gE)SC`pgjZ,OaJMKO@X"><field name="NUM">1</field></block></value></block></value> <statement name="DO0"><block type="update" id="gKGH45oZ.F#AW?GZDqUx"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="%%je1MKU.._nRf^9FUk7"><field name="OP">ADD</field> <value name="A"><shadow type="math_number" id="_y%]3cOycFhKAJnHhJi("><field name="NUM">1</field></shadow> <block type="get_value" id="bdETUtBo:uyyeb]WQBO-"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30865_Bezug</field></block></value> <value name="B"><shadow type="math_number" id="-Z[8!/-igUXos;(vJUVw"><field name="NUM">1</field></shadow> <block type="get_value" id="/.AZOS,oX]g-1|ppFf-q"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.Werte.PVLeistung</field></block></value></block></value></block></statement></block></statement> <next><block type="on_ext" id="+hCBHdKPoJ07auWNVqF]"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="*+mSamkO0_PDL=-{%cK7"><field name="oid">modbus.0.inputRegisters.30865_Bezug</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="0K4{*}3bY@,{E.kwU2iQ"><value name="IF0"><block type="logic_compare" id="ed)^9`y`u5M({wRJ0QK-"><field name="OP">LT</field> <value name="A"><block type="get_value" id="q60LaHAnF9zFFy*t)8kv"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="g`gA;;Igq%#{~XX:lVXG"><field name="NUM">1</field></block></value></block></value> <statement name="DO0"><block type="update" id="Zwm;%=MetHz@Z[rTU^k*"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="1K{jq}Q;uUh|#T1Fnml;"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30865_Bezug</field></block></value></block></statement></block></statement> <next><block type="on_ext" id=").9fLJ-=]~P)cBvbL@N8"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="K(p8q^h+TEg6`+Tz|zHd"><field name="oid">modbus.0.inputRegisters.30867_Einspeisung</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="aOwi+@J%Af2z`M]iUntU"><value name="IF0"><block type="logic_compare" id="HUpU+1WgogWAt~g::j1]"><field name="OP">GT</field> <value name="A"><block type="get_value" id="s!Ryj}gQ_Rbb2hT9FOqr"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30867_Einspeisung</field></block></value> <value name="B"><block type="math_number" id="`c{;cIl!vvFwx3#M85m."><field name="NUM">1</field></block></value></block></value> <statement name="DO0"><block type="update" id="8#B{9[vq+}.yjz4yt({;"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="6_p4XZ+.80LPnLU26+Qy"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="_y%]3cOycFhKAJnHhJi("><field name="NUM">1</field></shadow> <block type="get_value" id="/V5kC~bpl~iB)okjV~Y-"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.Werte.PVLeistung</field></block></value> <value name="B"><shadow type="math_number" id="-Z[8!/-igUXos;(vJUVw"><field name="NUM">1</field></shadow> <block type="get_value" id="R(!t|d+6)8LLtF,vqJrs"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30867_Einspeisung</field></block></value></block></value></block></statement></block></statement> <next><block type="on_ext" id="?36x-AQU8nD[OmAgz[_]"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="tUm]PB6uk2%jJAb}2te:"><field name="oid">javascript.0.PV_Anlage.AktHausverbrauch</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="PxZ/oA[33q#/d~xL=!M{"><value name="IF0"><block type="logic_compare" id="oUy-3/+PJeC:uIB9JTkl"><field name="OP">GT</field> <value name="A"><block type="get_value" id="-EfAF.m7|8F2NN7sTPm6"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field></block></value> <value name="B"><block type="get_value" id="6tvlPvH7#`/c6*0)z}_g"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.MaxVerbrauchHeute</field></block></value></block></value> <statement name="DO0"><block type="update" id="7~kniq!7nBj?^0]Ibhk!"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MaxVerbrauchHeute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="KqDq?2tl*2wVnB!lu;8Z"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field></block></value></block></statement></block></statement> <next><block type="schedule" id="5BUMKb@ibWS7o?x2HzV+"><field name="SCHEDULE">59 59 23 * * *</field> <statement name="STATEMENT"><block type="update" id="}%Q^Ta92/;nMH7!^ct|e"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MaxVerbrauchHeute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="HnO;1qG,Ylaj*A@P=c(-"><field name="NUM">0</field></block></value> <next><block type="update" id="|qy!pM2Uu~x:1Kreg)Oa"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MaxPVHeute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="fxF.%(]-Eo/Q|RkyMhKA"><field name="NUM">0</field></block></value></block></next></block></statement> <next><block type="on_ext" id="n9_GDzS1NxQt2!RfN@Be"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="4;_,hSYl5TxrGbMP,[l}"><field name="oid">modbus.0.inputRegisters.30775_PVLeistung</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="^Q.6FAXh!F7|qs6Nz/+#"><value name="IF0"><block type="logic_compare" id="y?-W.IqVC)OMg~rZ]t:8"><field name="OP">GT</field> <value name="A"><block type="get_value" id="NJFvsM[F-qi;W=o`m.ly"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.Werte.PVLeistung</field></block></value> <value name="B"><block type="get_value" id="Jd`/x7z!1L_[%FltwK[S"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.MaxPVHeute</field></block></value></block></value> <statement name="DO0"><block type="update" id="*HHkx8OmN=E)HkaCdqLz"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MaxPVHeute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="l]/F%O}Yfn_nRj*I?@RD"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.Werte.PVLeistung</field></block></value></block></statement> <next><block type="controls_if" id="Of|KASl2L#md3Ja5=BtB"><value name="IF0"><block type="logic_compare" id="4CLR;Ws?UfX])eQ8^mw*"><field name="OP">GT</field> <value name="A"><block type="get_value" id="LG!0Q+G[j(NJ~z:T]cO1"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.Werte.PVLeistung</field></block></value> <value name="B"><block type="get_value" id="(7I?/+syvHG:S@XcH},C"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.MAXPVever</field></block></value></block></value> <statement name="DO0"><block type="update" id="CL,.4(Wj5Sm].!4y@?pm"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MAXPVever</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="._6z#.CayIYZT.7#c*VG"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.Werte.PVLeistung</field></block></value></block></statement></block></next></block></statement> <next><block type="on_ext" id="m2w.v~KBYw4MNQAZ%4e6"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="2^/i*jy?5F[n9W?N|j}j"><field name="oid">javascript.0.PV_Anlage.AktHausverbrauch</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="PSIuUZVF2K(,lk{P5b!N"><value name="IF0"><block type="logic_compare" id="Kl(Kt;=?F(Imszqzzi1u"><field name="OP">GT</field> <value name="A"><block type="get_value" id="aRM%{M?GRx0bPQAmdysW"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field></block></value> <value name="B"><block type="get_value" id="f!B5KEC)Kek]YHFH8RnY"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.MAXVerbrauchever</field></block></value></block></value> <statement name="DO0"><block type="update" id="(uh]J)8E9BWJ8HjyC=Hp"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MAXVerbrauchever</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id=":AS43UBCU|d/)vy[`0F_"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field></block></value></block></statement> <next><block type="controls_if" id="%b8RpM92~YV2,QS5D?4~"><value name="IF0"><block type="logic_compare" id="NSjOvY#BB,KrdffsFBbU"><field name="OP">LT</field> <value name="A"><block type="math_arithmetic" id=",J.XLc7i2y1|mMQbNy/f"><field name="OP">ADD</field> <value name="A"><shadow type="math_number" id="NH32l;.J+J)|Wm@Au~0e"><field name="NUM">1</field></shadow> <block type="get_value" id="Eis/z}IaDz4qR/w?{GWl"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field></block></value> <value name="B"><shadow type="math_number" id="~URDq5C3v{k[VYcx7-I!"><field name="NUM">10</field></shadow></value></block></value> <value name="B"><block type="get_value" id="lW]UZDSjI7pOgV^?;GDA"><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.MinVerbrauchever</field></block></value></block></value> <statement name="DO0"><block type="update" id="nNr6_]Wghq-]NAkpi:^Q"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.MinVerbrauchever</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="rGwq^6qZiHx:!0T)5Jx("><field name="ATTR">val</field> <field name="OID">javascript.0.PV_Anlage.AktHausverbrauch</field></block></value></block></statement></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></xml>
Gruß Marco
-
Meinst du so:
Funktioniert leider trotzdem nicht
Wie kann ich dein Blockly in Textform importieren und wieder in Blocklys umwandeln ?
-
Siehe Bild.
-
Hallo,
vielen Dank für die Anleitung, es funktioniert bei mir.
Laut ioBroker werden bei mir jetzt die Werte in Systemvariablen der CCU geschrieben.
Leider kann ich das auf der CCU nicht nachvollziehen da die CCU seit der Einstellung in ioBroker nicht mehr erreichbar ist.
Es kommt nur die Meldung "Zuviele gleichzeitige Verbindungen!!"
Baut ioBroker denn für jede Variable eine eigene Verbindung auf?
Ist das füllen von 2 Variablen in der CCU schon zu viel für die Verbindung?
Muss ich die Übertragungsrate irgendwie reduzieren?
Oder fehlen noch eine Einstellung oder Software in der CCU?
Sorry für die vielen Fragen aber ich bin absoluter Anfänger mit ioBroker.
Eines hätte ich dann auch noch:
Kann ich die Werte in ioBroker irgendwie loggen um mir den Verbrauchsverlauf grafisch anzeigen zu lassen?
Als Maximum würde ich gerne eine Woche zurück anschauen können
Könnte mir hier bitte jemand helfen?
Gruß Peer
Nachtrag:
Ich verwende einen RPi3 mit ioBroker und eine CCU2
Screenshots der ioBroker Einstellung kann ich heute Abend nachreichen.
Das Steuern z.B. der Lampen an der CCU über die VIS von ioBroker funktioniert.
Nachtrag 2:
Ich kam gerade doch wieder auf die CCU Weboberfläche
Die Systemvariablen werden nicht aktualisiert.
So sind sie in der CCU eingestellt:
Und das steht auf der Startseite:
Nachtrag 3:
Ich hab nochmal den Namen geändert und alles aktualisiert.
Leider ohne Erfolg.
Die Einstellung des Objektes schaut so aus:
Und so schauts in node.red aus:
Hoffe ihr könnt mir helfen
Gruß Peer
-
Hallo Peer,
eigentlich sollte das mit der CCU anstandslos klappen. Kontrolliere bitte nochmal, ob du bei NodeRed das richtige eingetragen hast. Unter Verbrauch dieses Value.
<–--
Alternativ schick mir doch mal deinen Node-Red Flow (exportieren). Da kann ich mir das mal anschauen.
Laut deiner Bilder hast du ja den History-Adapter bereits in Verwendung. Wenn nicht, installiere ihn mal und tätige mal folgende Einstellungen.
Unter Objekte, rechts auf das Zahnrad drücken (Objekt deiner Wahl). In der nächsten Maske:
Gruß Marco
-
Servus Marco
Der Flow ist der aus dem ersten Post.
Ich hab nur nach dem anlegen die entsprechenden Systemvariablen zugewiesen.
Unter Objekte tauchen bei hm-rega.0 auch die richtigen Werte auf.
Die Einstellung in NodeRed schauen so aus:
Sollten also auch passen.RPi und CCU2 sind auch schon mal neu gestartet werden
Ich schick dir den Flow mal per PN (EDIT: Darf ich leider noch nicht)
Hast du noch ne Idee?
Die History schau ich mir nochmal genauer an
Danke für den Tip
Gruß Peer
-
Servus Zusammen
hat noch jemand eine Idee warum die Daten nicht an die CCU weiter gegeben werden?
Oder soll ich lieber einen neuen Threat aufmachen wo es nur um das Thema geht?
Gruß Peer