NEWS
Strom Verbrauch und separat Überschuss berechnen
-
Das skript:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="8QfIKsruysJpkfI_Laz=">Einspeiseenergie</variable> <variable id="SDbPbz:OQ}DXoHFlfr6;">PV_Ertrag</variable> </variables> <block type="variables_set" id="mbhzmxw}Olt:RED`$HM?" x="188" y="88"> <field name="VAR" id="8QfIKsruysJpkfI_Laz=">Einspeiseenergie</field> <value name="VALUE"> <block type="get_value" id="fv.Pyn+=XNj3mBR^O*y#"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV_Einspeisung.PV_Einspeisung_Wh</field> </block> </value> <next> <block type="comment" id="zB]aZ2A+Q7t}Zj)v/Mp0"> <field name="COMMENT">Leistung (W)</field> <next> <block type="on_ext" id="_s6W/4RK2_,Ax/VDHl=g"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=".vLIJp|1X|EY%Ed2HG54"> <field name="oid">sonoff.0.Stromzähler.MT681_Power_cur</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="Ah1T+%Zg,Jwu12qd{clW"> <value name="IF0"> <block type="logic_compare" id="!}L8R}/%Elp$%K5Sl(9|"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="@I~zpvc}htlNbY?ce!NV"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id="[T?_,mrEXTI=ga^+u3N`"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="Oo~f?,+KUpsHqmTcN[WZ"> <field name="COMMENT">Energie Wh</field> <next> <block type="math_change" id="pTtl{hR/]%qAvX;A2Fz="> <field name="VAR" id="8QfIKsruysJpkfI_Laz=">Einspeiseenergie</field> <value name="DELTA"> <shadow type="math_number" id="Uk@[+;hZ(9z{7j!R!*)~"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="WX:QVL4gOAnA.cJH9H`x" inline="false"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="q*0#7)IKIdS}sN%W7tfw"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="BNX`[d!HLVfIwcXs86Ep"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="J)-A5vC7c^f~YA_D,D,?"> <field name="NUM">1</field> </shadow> <block type="on_source" id="gl7iH#}}_gADCuUu0y@8"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <shadow type="math_number" id="l{SbNq,AT{hE]hFEqSB2"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="alN.)HWWpj`ZQ~Rfl5@{"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="%(VU0;/9G!^AX,q%]9cr"> <field name="NUM">1</field> </shadow> <block type="on_source" id="y(?#xOCCF%vh.)x/JL~!"> <field name="ATTR">state.lc</field> </block> </value> <value name="B"> <shadow type="math_number" id="j=obz_-g%yDMlIBeJ^aH"> <field name="NUM">1</field> </shadow> <block type="on_source" id="TOgG)hcm*3c;`(IzwF`o"> <field name="ATTR">oldState.lc</field> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="@J,i[0seFL!841-ytv/]"> <field name="NUM">-3600000</field> </shadow> </value> </block> </value> <next> <block type="update" id="p+(#|mvOG}YZ0iHd9]PX"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV_Einspeisung.PV_Einspeisung_Wh</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_round" id="`p6;Gl}=kxuj.7[Ft;Qh"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="sETaomKPsuK^N:/J5Xpp"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="v6mCa0tEa)Q%VFC$ULdS"> <field name="VAR" id="8QfIKsruysJpkfI_Laz=">Einspeiseenergie</field> </block> </value> </block> </value> <next> <block type="comment" id="~Y5$,;#Tj$t)NCjk.%s9"> <field name="COMMENT">kWh</field> <next> <block type="update" id="SWrTagNZQwe(2KATCQS9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV_Einspeisung.PV_Einspeisung_kWh</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="rJP5R]kttn]Ed$IWmVAl"> <field name="n">2</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="s0df=%jV0^edxx?OPKbk"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="iF[Ynm5;JlzOvt3[R`I}"> <field name="VAR" id="8QfIKsruysJpkfI_Laz=">Einspeiseenergie</field> </block> </value> <value name="B"> <shadow type="math_number" id="j@Rsu6yq3w4Ti+ZJ7$V7"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> <next> <block type="variables_set" id="Hq?}d)?smw_)GbI[X%_O"> <field name="VAR" id="SDbPbz:OQ}DXoHFlfr6;">PV_Ertrag</field> <value name="VALUE"> <block type="get_value" id="8eFA4h.5dy5i4BTB5mgW"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.PV_Ertrag.PV_Ertrag</field> </block> </value> <next> <block type="on_ext" id="39Zyh3,]?dT$Snl?%Iju"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="0BA(E[a8n0|p]kHrF(JB"> <field name="oid">opendtu.0.total.yieldtotal</field> </shadow> </value> <statement name="STATEMENT"> <block type="math_change" id="h%%#,jKHpq1uu*I+0M)H"> <field name="VAR" id="SDbPbz:OQ}DXoHFlfr6;">PV_Ertrag</field> <value name="DELTA"> <shadow type="math_number" id=":2|w+1{Z4wgjt.jm8/NV"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="z{iBC$3[A!q~q,p-qCWo"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="#cf[4jtT2a$7wH6ai.7/"> <field name="NUM">1</field> </shadow> <block type="on_source" id="`%4:X]97$%4iza!OkG5}"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number" id="u:0W0|1=v%?MyadaBn1H"> <field name="NUM">1</field> </shadow> <block type="on_source" id="LUhI|.bpz85EPa8ENhHx"> <field name="ATTR">oldState.val</field> </block> </value> </block> </value> <next> <block type="update" id="ag%ciS8dt92qUrV8Gu8%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV_Ertrag.PV_Ertrag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="ts63{FF??1N7X]~oPL{W"> <field name="VAR" id="SDbPbz:OQ}DXoHFlfr6;">PV_Ertrag</field> </block> </value> <next> <block type="update" id="(csCPu{!sQBEgT[`,XJ2"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV_Ersparnis.Ersparnis_kWh</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="%ZF=}T8DCk7,f%7twN~p"> <field name="n">2</field> <value name="x"> <shadow type="math_number" id="(RpiGL[FCghz3wNH28|!"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="?g*)8}Sn2{Nv7c^mv)(%"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="D3}dw(Z6W2`5HEyk[@Kb"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="cRRG5Xp/`uyu_%xjS;iN"> <field name="VAR" id="SDbPbz:OQ}DXoHFlfr6;">PV_Ertrag</field> </block> </value> <value name="B"> <shadow type="math_number" id="EDrD2WO$F#1Cw%|{U)7_"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="j+UCQApe[olx#Vbe8$Z:"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="p=^0~m8DpJCAliSe)5X3"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="qcbR.0#nEY0r0]PvzXsi"> <field name="VAR" id="8QfIKsruysJpkfI_Laz=">Einspeiseenergie</field> </block> </value> <value name="B"> <shadow type="math_number" id="gsLF;/(,M)2)utesU;o+"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="#T[Pl*fwLqYq*8EK}Nl)" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="`%((7Q{A2XMLeRy4xE29"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id=";UjjaW^%:SbBU]wPA^7G"> <field name="VAR" id="SDbPbz:OQ}DXoHFlfr6;">PV_Ertrag</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Gruss Duffy
-
@duffy
ja, das wäre was ich bräuchte: Habe nur einen 1-Richtungszähler und würde gerne die Einspeisung ins Netz
dokumentieren, habe vonJave und Blockly leider keine Ahnung. Wäre toll wenn Du mir das Script zur Verfügung
stellen würdest.
Willi -
Hallo Willi,
Das was ich in den post gestellt habe ist das blockly skript.
Du musst den Text nur bei dir in ein Blockly importieren und dann die Datenpunkte auf deine Eigenen anpassen.
Alternativ kannst du dir das Blockly auch anhand der Screenshots zusammen puzzeln. (Ist halt umständlicher)
Eine andere Alternative ist mir noch nicht bekannt aber hier im Forum gibt es echte Profis die da vielleicht noch andere Wege kennen.
Gruss Duffy
Edit:
Bei Skripte auf das + klicken
dann Blockly klicken
Namen eingeben für das Blockly
OK Klicken
Im rechten Fenster auf Blöcke importieren klicken
dort den von mir im Post eingefügten Text rein kopieren
Importieren klicken
Dann deine Datenpunkte anpassen*.
*)Beachte, du musst auch noch eigene Datenpunkte anlegen in 0_userdata damit das Blockly da reinschreiben kann.
z.B.
0_userdata.0.PV_Ertrag.PV_Ertrag
0_userdata.0.PV_Ersparnis.Ersparnis_kWh
0_userdata.0.PV_Einspeisung.PV_Einspeisung_Wh
0_userdata.0.PV_Einspeisung.PV_Einspeisung_kWh -
@duffy Hallo Duffy, ich habe das Script jetzt nachgebaut und es mit meinen Datenpunkten verbunden. Es müsste funktionieren. Eine Fehlermeldung habe ich noch nicht erhalten. Allerdings habe ich noch keine Einträge in meinen Datenpunkten.
PV_Ertrag.PV_Ertrag
PV_Ersparnis.Ersparnis_kWh
PV_Einspeisung.PV_Einspeisung_Wh
PV_Einspeisung.PV_Einspeisung_kWhDas kann aber schon durchaus so sein, ich hatte es gestern abend eingeschaltet und bis heute keine siknifkante Sonneneinstahlung von der Solar Anlage. Und eben auch keinen Überschuss produziert.
Ich habe gesehen das du da was mit im Thema drin hast was du gepostet hast.
CurrentDay, PreviousDay, CurrentWeek; PreviousWeek, ec.
Ich möchte mir eine Historie bauen in der ich jeden einzelnen Tag, jede Woche, jeden Monat und das jeweilige Jahr abspeichern kann.
Geht das mit einem Zeitplan?Frank
-
@docemmetbrown sagte: jeden einzelnen Tag, jede Woche, jeden Monat und das jeweilige Jahr
Für Periodenwerte gibt es den Sourceanalytix-Adapter.
Man kann es auch mit Blockly machen. -
@paul53
Hallo Paul, hast du Erfahrungen mit dem Adapter. Ist der stabil? Den gibt es nicht unter der Stable Iobroker Oberfläche. Ich müsste dafür auf beta umstellen um den Adapter zu laden.Frank
-
@docemmetbrown sagte: hast du Erfahrungen mit dem Adapter. Ist der stabil?
Ich habe keine Erfahrung mit dem Adapter, aber viele andere Nutzer.
-
-
@duffy nein, leider keine Daten in den Datenpunkten vorhanden. Ich muss das noch einmal überprüfen
Frank
-
@duffy So, jetzt muss ich mich nochmal melden. Ich denke ich habe das Skript richtig nachgebaut. Kann man vielleicht am Screenshot sehen. Der zweite Screenshot zeigt die Werte die ich in den Objekten habe. Da stimmt was nicht. Man müsste die eingespeiste Enregie sehen können, da ich heute morgen wieder ins Netz eingespeist habe. Was ich nicht genau weis, ob die Datenpunkte die dafür nötig waren richtig gesetzt sind.
Ich hatte Lokalisiert: Von oben nach unten
Einspeiseenergie=PV_Einspeisung_Wh müsste stimmen
Falls Objekt, Objekt ID=Lesekopf Easymeter SML power_use_sum (Stomzähler Momentverbrauch) Müsste stimmen
PV_Einspeiseenergie_Wh
PV_Einspeiseenergie_kWh
PV_Ertrag
Das nächste Falls Objekt, ich weis nicht ob das richtig ist, kommt bei mir aus einem anderen Skript
Strom_Bezug_Tagesverbrauch=das wäre der Tagesverbrauch den ich von meinem Stromanbieter bezieheIst das richtig so? Oder wo ist der Fehler?
Hier sind die Screenshots.
Frank
-
@docemmetbrown Hallo Duffy, ich habe mir jetzt mal das Skript was du hochgeladen hast reingezogen. Da sind am ende noch 2 Blöcke drin die in dem fertigen Skript nicht vorkommen. Kann ich die löschen?
Frank
-
@docemmetbrown
Falsche Trigger-Datenpunkte: "Power_Use_Sum" hört sich nicht nach Leistung an. "Tagesverbrauch" enthält sicherlich nicht den kumulativen Zählwert.Falsche Variable links und es muss durch 1000 dividiert werden.
-
@paul53
Hallo Paul. Bei mir ist der Datenpunkt: "Power_Use_Sum" der momentverbrauch an Strom meines Stromzählers. Gemeint ist Summer aller Phasen im Momentanverbrauch KilowattFrank
-
@docemmetbrown sagte: Momentanverbrauch Kilowatt
Das Skript rechnet mit W. Der Wert wird negativ bei Einspeisung?
-
@docemmetbrown sagte: Tagesverbrauch den ich von meinem Stromanbieter beziehe
Ist das richtig so?Nein, es muss die von der PV erzeugte Energie (in kWh) in den Trigger.
-
@paul53 said in Strom Verbrauch und separat Überschuss berechnen:
Nein, es muss die von der PV erzeugte Energie (in kWh) in den Trigger.
O.K. Das habe ich nun geändert. Präzise Formulierung wäre Total Energie Solar in kWh, das bedeutet die bereits von der Solaranlage erzeugte Energie in kwh. Der Datenpunkt ist von mir nun darauf geändert worden. Konnte man in deinen Screenshots auch so erahnen.
Nun muss ich noch den ausgelesenen Wert des Momentanverbrauchs meines Zählers in Watt umstellen, da ich den nur als kW habe. Beispiel 0,678kW in 678W
Stimmt das so?
Frank
-
@docemmetbrown sagte: in Watt umstellen, da ich den nur als kW habe.
Dann ändere besser das Skript auf kW und lasse den DP "PV_Einspeisung_Wh" weg.
Wenn der Energiewert des WR bei dir auch Sprünge macht, dann ändere den unteren Trigger auf "wurde geändert".
-
@paul53 Hallo Paul, ich versuche jetzt die Werte die ich in W und Wh benötige in diesen Dimensionen bereit zu stellen.
Die momentanen Zählerwerte habe ich bereits in W umstellen können, da in dieser Tasmota Firmware ein Script arbeitet. Aber den Wert den ich vom Balkonkraftwerk benötige "Ertrag Gestern" den habe ich auch nur in kWh. Da ich diese Werte von einem Shelly 1PM mit Tasmota bekomme, ist das umstellen im Shelly nicht so einfach, da dort kein Skript arbeitet.Frank
-
@docemmetbrown sagte: Wert den ich vom Balkonkraftwerk benötige "Ertrag Gestern" den habe ich auch nur in kWh.
Das Skript ist auf PV-Ertrag "Energy Total" in kWh ausgelegt.
-
Hallo zusammen,
ich wollte basierend auf dieses Skript, so ein Art anteilige Mieterstromberechnung durchführen. Wir sind ein Mehrfamilienhaus mit 5WE und ich wollte den anteiligen PV Stromanteil meiner Wohnung, im Verhältnis zum Gesamthausverbrauch berechnen. Aber der Code kann nicht stimmen, weil der berechnete Anteilige PV Energieanteil ist manchmal größer als der komplette PV Ertrag des Tages.
Habt ihr vielleicht eine Idee wo mein Fehler liegt oder eine andere Idee wie ich das umsetzen kann?