NEWS
Strom Verbrauch und separat Überschuss berechnen
-
@duffy sagte: mein "Total" nur Wh ausgibt.
Wenn der "PV-Ertrag" in Wh ermittelt wird, muss die Differenz durch 1000 geteilt werden.
-
Wärst du bitte so nett und zeigst mir wo ich das reinflicken muss?
Übrigens, ich habe das nun einmal beobachtet, der Total Wert yielday aus der openDTU wird erst morgens beim Wechselrichter Start wieder auf null gesetzt.
Wird das in dem Blockly berücksichtigt oder zählt das „nur“ den PV Ertrag hoch.
Wäre ja weiter auch kein Problem da man den Wert ja über Sourceanalytics auswerten lassen könnte.Noch eine Frage, spielt es eine Rolle ob man einen Wert direkt von einem Adapter nimmt, zb openDtu, yielday in Wh oder ob ich ihn aus einem durch ein Blockly errechneten Wert aus 0_userdata in kWh nehme. (Die Quelle für 0_userdata ist ebenfalls der openDTU Adapter)? Können sich da Fehler aufsummieren weil die Werte unterschiedlich verarbeitet werden?
Oder vielleicht einfacher gefragt, ist es ratsam möglichst immer unverarbeitete Rohdaten zu verwenden. ?
Liebe Grüsse Duffy
-
@duffy sagte: wo ich das reinflicken muss?
@duffy sagte in Strom Verbrauch und separat Überschuss berechnen:
zählt das „nur“ den PV Ertrag hoch.
Es wird nur der PV-Ertrag aus "Total" hochgezählt. Für Periodenwerte verwende Sourceanalytix.
-
-
Das Blockly läuft nun seit einigen Tagen sauber durch und funktioniert ausgezeichnet.
Ich stelle hier noch mal ein finalen Screenshot des Blocklys ein zum Nachbau, wenn da jemand interesse hat.Nochmals vielen dank an @paul53 dessen Verdienst das Blockly ist, ich habe es nur nach Bildern zusammengebaut. (Malen nach Zahlen eben )
LG Duffy
-
Guten Morgen Paul53,
leider ist mir bei der Berechnung des Ertrags und der Eigennutzung durch das Blockly ein Fehler aufgefallen, der aber nicht jeden Tag auftritt.
Donnerstag Morgen, als der WR wieder gestartet ist wurden die neuen Werte ganz normal zum Vortag weiter hoch gezählt.
so weit alles gut.Nun ist mir heute Morgen wiederholt aufgefallen das zu dem Vortageswert plötzlich über 180 kw dazugekommen sind.
Ich habe das mal in eCharts aufezeichnet und zwar mit den Messpunkten "Ersparnis" und "Ertrag".
In Source Analytics sieht das dann so aus:
Der Datenpunkt "Enspeisung" bleibt aber von dem Fehler unberührt der zählt ganz normal weiter.
Kannst du dir erklären wie von einem auf den anderen Tag so ein drastischer Anstieg zustande kommen kann?
Gruß Duffy
-
@duffy sagte: Kannst du dir erklären wie von einem auf den anderen Tag so ein drastischer Anstieg zustande kommen kann?
Kann ich leider nicht. Der Sprung muss aus dem WR kommen.
-
Hmm, der Sprung zeigt sich aber nicht in der Aufzeichnung von der Gesamtstromproduktion.
Das ist ja das komische und auch in der OpenDTU bzw auch im openDTU Adapter sind keine ca. 180kwh dazu gekommen.
Soll ich mal in ecarts die in Frage kommenden Werte aufzeichnen um vielleicht so dem Fehler auf die Spur zu kommen?
Alternativ habe ich ja noch den Datenpunkt der den täglichen Ertrag ermittelt. Dieser minus Einspeisung wäre ja auch wieder Ersparnis.
Weis nur nicht wie ich das im Blockly ändern muß.Gruß Duffy
-
@duffy sagte: sind keine ca. 180kwh dazu gekommen.
Es wird auf "ist größer als letztes" getriggert. Deshalb meine Vermutung: Der WR macht einen negativen und einen positiven Sprung. Der negative Sprung wird durch den Trigger ausgefiltert. Ändere mal den Trigger auf "wurde geändert" und beobachte weiter.
-
Hi Paul,
Habe es jetzt mal umgestellt und werde es beobachten.
Ich Zeichne nun auch mal die Daten von PV Total auf um da ein Sprung des WR zu erkennen ist.
Danke für die Idee und einen schönen Tag.
Gruß Duffy
-
@duffy
Besser als "wurde geändert" ist eine Ausfilterung großer Sprünge: -
-
Hallo Paul53, hallo iob Forumleser,
ich habe nun einmal alle 3 oben beschrieben Blockly Varianten für einige Tage getestet und bin zu folgendem Ergebnis gekommen.
Das Blockly was ich am 13.06.23 hier als stabil befunden hatte brachte im weiteren Verlauf folgenden Fehler.
Am Morgen, sporadisch, wenn der Wechselrichter seine Arbeit wieder aufnahm machte der Datenpunkt für PV-Ertrag und Eigennutzung einen Sprung von oft über +190kWh und somit war die Ermittlung im Eimer.Am 23.06. hat Paul53 vorgeschlagen, danke dafür, den Trigger von "ist größer als letztes" auf "wurde geändert" zu setzen, fast zeitgleich kam noch ein Vorschlag den Sprung über einen Filter heraus zu bekommen.
Ich habe beide neuen Vorschläge umgesetzt mit folgendem Ergebnis.
Nur die Änderung des Triggers auf "wurde geändert" war erfolgreich. Die Werte Ertrag, Einspeisung und Eigennutzung wurden sauber mitgeschrieben.
Das Blockly mit dem Filter gab falsche Ergebnisse aus, zu wenig Einspeisung zu viel Eigennutzung. (Wäre ja schön gewesen wenn es so gewesen wäre )Anbei noch ein Beispielbild eines Tages.
Rechts die Aufzeichnung des Blocklys mit Filter über Sourceanalytics und links das Blockly mit dem Trigger "wurde geändert"
(also links die Aufzeichnung mit reproduzierbaren Ergebnissen)Ich hoffe meine bescheidenen Erfahrungen helfen vielleicht anderen interessierten weiter und nochmals danke an @paul53 für die tolle Blockly Vorlage.
Es grüßt euch Duffy
-
sorry, war im falschen Post
-
@peter-berg in wie vielen Threads zu ioBroker möchtest du noch um Unterstützung für externe Geräte mit Tasmota erfragen?
-
@duffy said in Strom Verbrauch und separat Überschuss berechnen:
Das Blockly läuft nun seit einigen Tagen sauber durch und funktioniert ausgezeichnet.
Ich stelle hier noch mal ein finalen Screenshot des Blocklys ein zum Nachbau, wenn da jemand interesse hat.Nochmals vielen dank an @paul53 dessen Verdienst das Blockly ist, ich habe es nur nach Bildern zusammengebaut. (Malen nach Zahlen eben )
LG Duffy
@duffy said in Strom Verbrauch und separat Überschuss berechnen:
Das Blockly läuft nun seit einigen Tagen sauber durch und funktioniert ausgezeichnet.
Ich stelle hier noch mal ein finalen Screenshot des Blocklys ein zum Nachbau, wenn da jemand interesse hat.Nochmals vielen dank an @paul53 dessen Verdienst das Blockly ist, ich habe es nur nach Bildern zusammengebaut. (Malen nach Zahlen eben )
LG Duffy
Prima, würde mich auch interessieren. Kannst Du mir das Script mailen? (willi.dennerlohr.de) Wäre toll.
MfG Willi -
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