NEWS
Solaredge Adapter (Photovoltaikanlage)
-
@bluppdiwupp said in Solaredge Adapter (Photovoltaikanlage):
Hallo,
ich suche nach einer Anleitung zum Auslesen der Daten aus der Monitoring API für einen Solaredge SE15K mit SE ModBus. API ist vorhanden.
Ich weiß leider nicht, wo man die hier im Forum befindlichen Scripts einfügt.
Der Zugang über TCP funktioniert schon gut, ist aber allerdings durch openWB belegt. Auch das openBW sendet bereits verschiedene Daten im iobroker, es fehlen aber auch einige.
Ziel soll sein, den openWB Raspi unberührt zu lassen und über iobroker eine schöne Grafik über Grafana zu erstellen.
Gibt es Tipps? Danke im voraus...Hilft dir das hier weiter? https://forum.iobroker.net/topic/38322/solaredge-modbus-iobroker-grafana
-
Hallo zusammen,
ich habe gestern die Batterie angeschlossen bekommen und seit dem folgende Situation.
modbus.0.holdingRegisters.40099_I_DC_Spannung
bleibt immer über 800V auch Nachts, vorher ist sie bei Sonnenaufgang gestiegen und Abend auf 0V gesunken.modbus.0.holdingRegisters.40108_I_Status
bleibt immer bei 4 auch Nachts, der hat sich sonst auch immer auf 2 geändert.modbus.0.holdingRegisters.40101_I_DC_Leistung
Was vorher die Leistung der Module war, ist scheinbar nun die DC-Leistung die der WR in AC umwandelt. Also auch das aus der Batterie.Wie komm ich an die Daten der Batterie und die aktuelle PV-Leistung-DC. Ich habe nun schon tagelang gegoogelt und alles was ich bisher gefunden habe, funktioniert nicht.
Hinzu kommt das die Daten des Portal nicht genau mit den Daten des Modbus passen.
Die Gesamterzeugung liegt 1,2 kWh auseinander. Habt Ihr das auch?Folgende Geräte sind im Einsatz
SE10K-RWS
SE-MTR-3Y-400V-A
BYD LVS 8.0Vielleicht hat jemand eine Idee.
Beste Grüße
Daniel -
@Has3nb3inMH said in Solaredge Adapter (Photovoltaikanlage):
Hallo zusammen,
ich habe gestern die Batterie angeschlossen bekommen und seit dem folgende Situation.
modbus.0.holdingRegisters.40099_I_DC_Spannung
bleibt immer über 800V auch Nachts, vorher ist sie bei Sonnenaufgang gestiegen und Abend auf 0V gesunken.modbus.0.holdingRegisters.40108_I_Status
bleibt immer bei 4 auch Nachts, der hat sich sonst auch immer auf 2 geändert.modbus.0.holdingRegisters.40101_I_DC_Leistung
Was vorher die Leistung der Module war, ist scheinbar nun die DC-Leistung die der WR in AC umwandelt. Also auch das aus der Batterie.Wie komm ich an die Daten der Batterie und die aktuelle PV-Leistung-DC. Ich habe nun schon tagelang gegoogelt und alles was ich bisher gefunden habe, funktioniert nicht.
Hinzu kommt das die Daten des Portal nicht genau mit den Daten des Modbus passen.
Die Gesamterzeugung liegt 1,2 kWh auseinander. Habt Ihr das auch?Folgende Geräte sind im Einsatz
SE10K-RWS
SE-MTR-3Y-400V-A
BYD LVS 8.0Vielleicht hat jemand eine Idee.
Beste Grüße
DanielHast du vielleicht eine Lösung gefunden für das Problem? I_Status ist bei mir auch immer auf "4". Außerdem zeigt der Registerwert für die PV Produktion bei mir falsche Werte (angeblich auch nachts Produktion...)
Ich überlege schon den SE Support anzuschreiben, auch wenn das warscheinlich nicht viel bringt -
@cybtrash Hallo, für die DC-Produktion habe ich keine vernünftige Lösung gefunden. Mit der Batterie scheint der WR nicht mehr abzuschalten. Die Batteriedaten habe ich mir über die API-Schnittstelle geholt. Allerdinge werden die nur alle 5 Minuten zur Verfügung gestellt.
Meinst du den Zähler der die PV-Produktion als Lifetime-Summe anzeigt? Der bleibt bei mir Nachts unverändert.
-
@has3nb3inmh Dürfte ich deine Konfiguration als CSV zum Importieren bekommen? Ich habe genau die gleichen Geräte (aber LVS 24kWh )
Hast du die Scale Factor umrechnungen mit Blockly gemacht?
Vielen Dank!
-
Hallo! Ich bin jetzt auch stolzer Besitzer einer SolarEdge PV Anlage - mit dem CSV von @stevie77 hat das Auslesen der Werte über den modbus Adapter super funktioniert! Wenn man die Skalierungsfaktoren richtig angibt hat man auch korrekte kommazahlen (dass der kühler z.b. über 3000°C Hat glaub ich nicht :))
Meine Frage ist nun ob ich mit irgendeiner Adresse auch den "täglichen" verbrauch messen kann. wenn nicht isses auch kein beinbruch, hab mir 2 Variablen angelegt und den aktuellen gesamtverbrauch (40094) gespeichert. am nächsten tag wird dann in die zweite variable zur selben zeit (cron oder astro night) dieser wert vom neuen gesamtverbrauch abgezogen und man erhält die produzierte Energie. Ändert sich Variable 2 hab ich noch einen trigger auf ein Telegram script das mich dann am Smartphone darüber informiert. Das ist alles recht schön aber doch etwas umständlich, wenns nicht anders geht - dann ok, wenns eine variable über die daily production gäbe wärs natürlich cooler
lg, Phil.
-
@marvintherobot Es gibt wohl keine Tagesproduktionsanzeige. Ich habe das so gemacht wie du es sagst mit einer Variablen, die bei Sonnenuntergang jeweils den Wert speichert und die Differenz zu gestern berechnet.
-
@marvintherobot sagte in Solaredge Adapter (Photovoltaikanlage):
Meine Frage ist nun ob ich mit irgendeiner Adresse auch den "täglichen" verbrauch messen kann.
Mach damit, ist ziemlich genau. Ich messe und visualisiere damit den Hausverbrauch und die Einspeisemenge. Die Modbus-Register musst du allerdings für dein SE-System anpassen (bei mir E3/DC).
Habe ich aus nem anderen ioBroker-Foren-Thema kopiert (und den Autor auch schon mal wegen Weiterverbreitung gefragt):// Hausverbrauchszähler, der den täglichen Hausverbrauch im State 'javascript.0.e3dc.dailyPowerConsumptionShort' bereit stellt. const idHausverbrauchModbus = 'modbus.0.holdingRegisters.40072_Hausverbrauch_Leistung'; const idHausverbrauch = 'javascript.0.e3dc.dailyPowerConsumption'; const idHausverbrauchKurz = 'javascript.0.e3dc.dailyPowerConsumptionShort'; createState('javascript.0.e3dc.dailyPowerConsumption', 0, {name: 'Hausverbrauch aktueller Tag', type: 'number'}); var debug = false; var logging = true; var count = 0; var Summe = 0; var Timer = null; var merker = false; // Zähler on(idHausverbrauchModbus, function(dp) { var Leistung = getState(idHausverbrauchModbus).val; if (Leistung >= 1){ if (merker)schedulestart(); merker = false; count ++; Summe = Summe + Leistung; if (debug)log(['Summe: ' + Summe, ', Zähler: '+count, ', Addition: + ' +Leistung ].join('')); } }); //Skriptstart schedulestart() // jede minute in W/h umrechen W = P*t function schedulestart(){ if (debug)log('Funktion Schedulestart aktiv'); var AufDieMinute = '* * * * *'; Timer = schedule(AufDieMinute, function(){ if (debug)log('minuten Schedule aktiv'); var hausverbrauch = getState (idHausverbrauch).val; var Pmin = Summe/count; if (count>0 && Summe >0){ setState(idHausverbrauch, hausverbrauch + Pmin/60/1000,true);//kWh if (debug)log(['Schedule Umrechnen W = P*t. Minutenwert Leistung: '+ Pmin, ' Minutenwert Arbeit: ' + (Pmin/60/1000), ' Tageswert Verbrauch: ' + hausverbrauch].join('')); setTimeout(function(){ count=0; Summe=0; if (debug)log(['Reset: Count = '+ count, ' Summe = ' + Summe ].join('')); },100); }else{ if(count===0 && Summe ===0){ clearSchedule(Timer); merker = true; if(logging)log('minuten Schedule gestoppt'); } } }); } // jeden Tag um 23:59 Tageswert nullen. schedule({hour: 0, minute: 1}, function () { setState(idHausverbrauch,0,true); if (logging)log('Tagesverbrauchswert nach Ablauf des Tages auf 0 gesetzt.'); }); // Tageshausverbrauch auf eine Kommastelle runden createState(idHausverbrauchKurz); on(idHausverbrauch, function(obj){ setState(idHausverbrauchKurz, getState(idHausverbrauch).val.toFixed(1) , true); });
-
@stevie77 Alternativ kann man sich die täglichen Verbrauchswerte auch recht einfach von der monitoring API von Solaredge besorgen
-
Ist schon etwas her aber das Problem haben alle mit dem System: Siehe: https://www.photovoltaikforum.com/thread/149483-storedge-se8k-monitoringplattform-energie-heute-läuft-rückwärts/?postID=2258421#post2258421
Mich betrifft das leider auch. In den Zustand werden dauerhaft über 60 Watt verbraten, auch wenn der Akku leer ist. Egal ob BXD oder LG Akku.
Hat jemand die Akkuwerte schon über Modbus auslesen können? Mir ist das mit IObroker nicht gelungen, obwohl ich ein Phytonscript gefunden habe, mit dem es geht. Irgendwas scheint nicht zu passen aber ich finde die Ursache nicht.
-
Hi @has3nb3inmh und @cybtrash
@has3nb3inmh said in Solaredge Adapter (Photovoltaikanlage):
Wie komm ich an die Daten der Batterie und die aktuelle PV-Leistung-DC. Ich habe nun schon tagelang gegoogelt und alles was ich bisher gefunden habe, funktioniert nicht.
Seid Ihr da weiter gekommen?
Ich lese leider immer nur vom Problem, aber nicht von der Lösung.
Ich würde ebenfalls gerne die PV-Produktion aus den Modbus-Daten ermitteln.
Sobald meine BYD LVS8.0 an meinem SE10k-RWS entladen wird, werden sind die Leistungswerte in der AC oder DC-Leistung enthalten. Siehe https://www.photovoltaikforum.com/thread/156602-se10k-rws-byd-lvs-8-0-fehlerhafte-produktionswerte
Was tun? Habt Ihr's gelöst oder aufgegeben? Wenn ja - wie?
Gruß,
Oli -
@soeni said in Solaredge Adapter (Photovoltaikanlage):
Hat jemand die Akkuwerte schon über Modbus auslesen können? Mir ist das mit IObroker nicht gelungen, obwohl ich ein Phytonscript gefunden habe, mit dem es geht. Irgendwas scheint nicht zu passen aber ich finde die Ursache nicht.
Akkuwerte auslesen klappt hier mit meinem SE10k-RWS+BYD8.0LVS:
Gruß,
Oli -
Hier mal mein aktueller Stand mit Solaredge SE10K und Solaredge Stromsensor und BYD LVS 24.0:
deviceId address name description unit type len factor offset formula role room poll wp isScale 1 40045 C_Version Spezifischer SolarEdge Wert string 8 1 0 value true false false 1 40069 C_Geräteadresse Modbus-ID der entsprechenden Einheit uint16be 1 1 0 value true false false 1 40072 I_AC_Strom AC-Gesamtstromwert A uint16be 1 1 0 value true false false 1 40073 I_AC_StromA AC-Phase A (L1) Stromwert A uint16be 1 1 0 value true false false 1 40074 I_AC_StromB AC-Phase B (L2) Stromwert A uint16be 1 1 0 value true false false 1 40075 I_AC_StromC AC-Phase C (L3) Stromwert A uint16be 1 1 0 value true false false 1 40076 I_AC_Strom_SF AC-Strom Skalierungsfaktor int16be 1 1 0 value true false false 1 40080 I_AC_SpannungAN AC-Spannung Phase A-N (L1-N) Wert V uint16be 1 1 0 value true false false 1 40081 I_AC_SpannungBN AC-Spannung Phase B-N (L2-N) Wert V uint16be 1 1 0 value true false false 1 40082 I_AC_SpannungCN AC-Spannung Phase C-N (L3-N) Wert V uint16be 1 1 0 value true false false 1 40083 I_AC_Spannung_SF AC-Spannung Skalierungsfaktor V int16be 1 1 0 value true false false 1 40084 I_AC_Leistung AC-Leistungswert W uint16be 1 1 0 value true false false 1 40085 I_AC_Leistung_SF AC-Leistung Skalierungsfaktor int16be 1 1 0 value true false false 1 40086 I_AC_Frequenz Frequenzwert Hz uint16be 1 1 0 value true false false 1 40087 I_AC_Frequenz_SF Frequenz Skalierungsfaktor int16be 1 1 0 value true false false 1 40088 I_AC_VA Scheinleistung VA uint16be 1 1 0 value true false false 1 40089 I_AC_VA_SF Scheinleistung Skalierungsfaktor int16be 1 1 0 value true false false 1 40090 I_AC_VAR Blindleistung VAR uint16be 1 1 0 value true false false 1 40091 I_AC_VAR_SF Blindleistung Skalierungsfaktor int16be 1 1 0 value true false false 1 40092 I_AC_PF Leistungsfaktor % uint16be 1 1 0 value true false false 1 40093 I_AC_PF_SF Leistungsfaktor Skalierungsfaktor int16be 1 1 0 value true false false 1 40094 I_AC_Energie_WH AC Gesamt-Energieproduktion Wh uint32be 2 1 0 value true false false 1 40096 I_AC_Energie_WH_SF AC Gesamtenergie Skalierungsfaktor uint16be 1 1 0 value true false false 1 40097 I_DC_Strom DC-Stromwert A uint16be 1 1 0 value true false false 1 40098 I_DC_Strom_SF DC-Strom Skalierungsfaktor int16be 1 1 0 value true false false 1 40099 I_DC_Spannung DC-Spannungswert V uint16be 1 1 0 value true false false 1 40100 I_DC_Spannung_SF DC-Spannung Skalierungsfaktor int16be 1 1 0 value true false false 1 40101 I_DC_Leistung DC-Leistungswert W uint16be 1 1 0 value true false false 1 40102 I_DC_Leistung_SF DC-Leistung Skalierungsfaktor int16be 1 1 0 value true false false 1 40104 I_Temp_Kühler Kühlkörpertemperatur °C uint16be 1 1 0 value true false false 1 40107 I_Temp_SF Kühlkörpertemperatur Skalierungsfaktor int16be 1 1 0 value true false false 1 40108 I_Status Betriebszustand (1 = Aus, 2 = Schlafen (Automatisches Herunterfahren) – Nachtmodus, 3 = Aufwachen/Starten, 4 = Wechselrichter ist AN und wandelt Energie, 5 = Begrenzte Produktion, 6 = Herunterfahren, 7 = Fehler, 8 = Wartung/Setup) uint16be 1 1 0 value true false false 1 40109 I_Status_Anbieter Anbieter-spezifischer Betriebszustand sowie Fehlercodes: 1 = Aus, 2 = Schlafen (Automatisches Herunterfahren) – Nachtmodus, 3 = Aufwachen/Starten, 4 = Wechselrichter ist AN und wandelt Energie, 5 = Begrenzte Produktion, 6 = Herunterfahren, 7 = Fehler, 8 = Wartung/Setup uint16be 1 1 0 value true false false 1 40207 M_AC_Power Total Real Power (sum of active phases) W int16be 1 1 0 value true false false 1 40211 M_AC_Power_SF AC Real Power Scale Factor uint16be 1 1 0 value true false false 1 40227 M_Exported Total Exported Real Energy Wh uint32be 2 1 0 value true false false 1 40243 M_Energy_W_SF Real Energy Scale Factor uint16be 1 1 0 value true false false 1 40235 M_Imported Total Imported Real Energy Wh uint32be 2 1 0 value true false false 1 102837 Speicher_Ladung Speicher Ladeleistung W floatsw 2 1 0 value true false false 1 102853 Speicher_SoC Speicher SoC % floatsw 2 1 0 value false false false 1 102855 Speicher_Betriebszustand Speicher Betriebszustand (1: Aus 3: Laden 4: Entladen 6: Erhaltungsladen) uint16be 1 1 0 value false false false
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</variable> <variable type="timeout" id="timeout3">timeout3</variable> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> <variable type="timeout" id="timeout4">timeout4</variable> <variable id="WorYn/,IEi?5LB02:/u(">Tagesexport</variable> </variables> <block type="on" id="h0R1-xJM4c@2!dlRFUVh" x="-862" y="-412"> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="CUJCPT^XfqY.?x%vz#qx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Hausverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="?gqf6yiK6:w_-gnl?vK=" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="0!R/%4MiEj7z}^1W@T4{"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="bEgyBi7j5G4UcmQI$E!R"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="~h-J~R5+.T(dK^u3L2o6"> <field name="NUM">1</field> </shadow> <block type="get_value" id="#,l0L@@(6QPtobIL.,)D"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Solaranlage_Leistung_AC</field> </block> </value> <value name="B"> <shadow type="math_number" id="(N)k{jXTtf66OjKCXz81"> <field name="NUM">1</field> </shadow> <block type="on_source" id="jjI].bSj3-w`-/G?Ikmj"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="LH#AE/5^Llm38`I6Dmb_"> <field name="NUM">0</field> </shadow> <block type="math_arithmetic" id="cs.Gq5YgzU|cgSli|Bz7"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="lS%;T8L,efb.)D[,Fc);"> <field name="NUM">0</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="hnJsBCn,uUygiB:h4^Yr"> <field name="NUM">1</field> </shadow> <block type="get_value" id="7mrKPWc:)+o*z6?K6Jt!"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> </block> </value> </block> </value> </block> </statement> </block> <block type="on" id="YYeTFl5=+RUFGKp!fwS8" x="-878" y="-133"> <field name="OID">modbus.0.holdingRegisters.40101_I_DC_Leistung</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="Fy`6%1}jrkR7yIR7j,bM"> <field name="NAME">timeout3</field> <next> <block type="timeouts_settimeout" id="wALq,KRZ=OkTgnFRodgg"> <field name="NAME">timeout3</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="update" id="{8c)~K%7n5#35[IVg*CU"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_round" id="aW3|`$R[cHnB1`5vSAO9"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="nbb7@I/VW7I*Gaam79/3"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="N5XZnoEUm{3Kzm-/]B@/"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="!{7/(]DX3lGP@Il`Y=E1"> <field name="NUM">1</field> </shadow> <block type="get_value" id="_;teC|IbrE2JD_fEN~js"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40101_I_DC_Leistung</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="M:s(2P888iDd:XzoTo4p"> <field name="NUM">1</field> </shadow> <block type="math_single" id="/]%B9azJMI,TVYWo.Q;d"> <field name="OP">POW10</field> <value name="NUM"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="T+;~SGgPH[32R+:S}|M!"> <field name="NUM">0</field> </shadow> <block type="get_value" id="|gkz@RnPUVcfP6F8mj]p"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40102_I_DC_Leistung_SF</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="controls_if" id="AMHTnIFMZSH{c?XHv6wc"> <value name="IF0"> <block type="logic_compare" id=",/Kaam=))V5#8x2cy/^U"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="Z_gIo`c(ugW{zweU*.{m"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung</field> </block> </value> <value name="B"> <block type="get_value" id="*5L=}2cS1KyS-$RK2taz"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Rekordleistung</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id=".}yz|vaKEtGn2gvt{;05"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Rekordleistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="b`^e^!0g:!MO|-jQ:OL;"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> <block type="on" id=";^6GWeYut-nhxE.AUz(J" x="638" y="-87"> <field name="OID">javascript.0.Solaranlage_Leistung.Solaranlage_Leistung_AC</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="Gs=D7_=`mu:`=4!jZ(~|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Solarproduktion</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="58Ed/#VdCRb5rn(4K3I]"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="on_source" id="MwMuZ[$0nBN3Il#TISIt"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="bc^^;uU?=/FCEfAx*7v*"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> </block> </value> </block> </statement> </block> <block type="on" id="OW-oQ:0bZs;!3`6XQKkI" x="-912" y="262"> <field name="OID">modbus.0.holdingRegisters.40084_I_AC_Leistung</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="q%_Egu!g4KOn/2L[!vgy"> <field name="NAME">timeout</field> <next> <block type="timeouts_settimeout" id=":u3%41op%^Qu(+C|xTa|"> <field name="NAME">timeout</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="update" id="zTY~AAkdT)%4e-pY~s-S"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Solaranlage_Leistung_AC</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_round" id="m#;LA^NEnsP_BkDH$q3?"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="g|pp9td2yix@H)mxq$k4"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="[r$qB!.gW+ScSRB*A/0B"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="P`39pThCR];?Nz[%u*-t"> <field name="NUM">1</field> </shadow> <block type="get_value" id="MG/~ix^7B/9x[U!3^{S^"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40084_I_AC_Leistung</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_single" id="Zuf+:;;wNJTP.mQ(@()W"> <field name="OP">POW10</field> <value name="NUM"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">0</field> </shadow> <block type="get_value" id="7H:ZX/fDSSnbEy^:MzBW"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40085_I_AC_Leistung_SF</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> <block type="on" id="7uzz?/X?Dx,ZWT{bKG~F" x="637" y="238"> <field name="OID">modbus.0.holdingRegisters.40094_I_AC_Energie_WH</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="=QV~miJO1Wh54BU:yn9k"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Produktion_heute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="Le/MYT{jKjV,/-CAhdt]"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="x$Q]Wx5dgsp.[!Z.zjU9"> <field name="NUM">1</field> </shadow> <block type="on_source" id="Ws%b!85tg4cNWB+6P5,9"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="=?Y(P`};PeefHO^j,G9`"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Produktion_bis_gestern</field> </block> </value> </block> </value> </block> </statement> </block> <block type="on" id="7LhdcCvQAF6O?)Cv97k)" x="637" y="463"> <field name="OID">modbus.0.holdingRegisters.40227_M_Exported</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="SMc99VNnv~47wAw8Ja61"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Einspeisung_heute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="H*N]9D.GI!,6UFVsB%;;"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="on_source" id="~wB}0V^`a9=E-2`s4$Zf"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="JIjbe+JJ04ks^Tzy0?Ol"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Einspeisung_bis_gestern</field> </block> </value> </block> </value> </block> </statement> </block> <block type="on" id="~]arppNs^XXX+ogQa_Tt" x="-913" y="563"> <field name="OID">modbus.0.holdingRegisters.40099_I_DC_Spannung</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="W4v}YD7/%?$ihkB[oW[}"> <field name="NAME">timeout2</field> <next> <block type="timeouts_settimeout" id="=x_cR,-y@7ewNLd/(7Se"> <field name="NAME">timeout2</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="update" id="LKPuUYW*+`YGF=3ujyV%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.DC_Spannung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_round" id="yDm+i2kefR/*BPE(=@Dx"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="``b;Gbd-Ok^kf/Uh^TNR"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="t-R#;+3MLXA}/IAdbVa5"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40099_I_DC_Spannung</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_single" id="}ML#Z==2!uV]`AT%)Dt+"> <field name="OP">POW10</field> <value name="NUM"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">0</field> </shadow> <block type="get_value" id="xMgK%)@glo{L?2iCJ|8t"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40100_I_DC_Spannung_SF</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> <block type="on" id="n{`D$LM(h6ta669z@~Kt" x="638" y="688"> <field name="OID">modbus.0.holdingRegisters.40235_M_Imported</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="fgXCk=ZzM%3/[x,3,fnI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Zukauf_heute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="K*rP]yKwOE0#6jabz`Fg"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="on_source" id="Ua3+ZJa?$mQl3RT=|ki$"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="ioU+G_=SoxAOa@]7o[+@"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Zukauf_bis_gestern</field> </block> </value> </block> </value> </block> </statement> </block> <block type="on" id="AMoQM|9_7.?pRlj-2f+F" x="-913" y="862"> <field name="OID">modbus.0.holdingRegisters.40207_M_AC_Power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="`eaycN2^]x3,7OqBp+XA"> <field name="NAME">timeout4</field> <next> <block type="timeouts_settimeout" id="pU1`kX}:Mt~}~yk|D|-B"> <field name="NAME">timeout4</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="update" id="nO-Uij_JKuz`o31}+~Xq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="{16GkXCaAvHkJNNq.p*8"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="Mh]LJ0Ph5.KPgmy#53cx"> <field name="NUM">0</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="_cQbA{tL-X*PH0MT@)KT"> <field name="NUM">1</field> </shadow> <block type="math_round" id="!fNg?|Xohw/saU;-P5#3"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="tr?dnsdQanXZveeKSo#l"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="5l.*;j7j_?s[q;-T;ufT"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40207_M_AC_Power</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_single" id="g:Sp5XLI{utoE[7k-f{5"> <field name="OP">POW10</field> <value name="NUM"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">0</field> </shadow> <block type="get_value" id="[sHni@a$PTh6.}1)I1ji"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40211_M_AC_Power_SF</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> <block type="schedule" id="$B-)n0[qMqqLA6ns(R+K" x="637" y="937"> <field name="SCHEDULE">0 0 * * *</field> <statement name="STATEMENT"> <block type="control" id="reprX/Mnv8+b+5a;Z7rZ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Einspeisung_bis_gestern</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="FdK8V/G~rkFAq.i1^-4X"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40227_M_Exported</field> </block> </value> <next> <block type="control" id="G!Zs)5d7mGeF/r4LiX#["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Zukauf_bis_gestern</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="6*3-_~6EWQylKYg2kJ1X"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40235_M_Imported</field> </block> </value> <next> <block type="control" id="5k%A(5jYs1ig;%x7yXey"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Produktion_bis_gestern</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="hN-yDyrqW2gW{BW8OBbz"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40094_I_AC_Energie_WH</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> <block type="on" id="B-_%d7kFurSe,QbSSfDB" x="-863" y="1138"> <field name="OID">modbus.0.holdingRegisters.40108_I_Status</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="NIS;BHH+H-j-MFE|Qd.^"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_compare" id="KS.1QBkU=]eIKHGTfzAH"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="1etJ_}@`id3*WnvF$R37"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="W+N_V!qm^t7U$)LjLT-3"> <field name="NUM">4</field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="A?=)$7_|D$REWIqVc]6x" disabled="true"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="$;dn4aU[=%sh4)fm0_e)"> <field name="TEXT">Solaranlage hat die Produktion gestartet ☀️</field> </shadow> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="mn]y,X.td5=n5[uC,ZLt"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="R+3T;D(MQ6.z}^,_L5@2"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="KU=1])[x@}0#lD82vBj*"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO1"> <block type="telegram" id="1)Ufu%C[E+3.p||g%f6_"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="lP$.My$bXceZE*.e5;se"> <field name="TEXT">Solaranlage stellt die Produktion ein 🌒</field> </shadow> </value> </block> </statement> <value name="IF2"> <block type="logic_compare" id="iDw3qV.cPXtOnxUN|}!]"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="If$f?BO0hTL!DQ6P+~6]"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="Sfn8]o{he?_h{]R3%@w8"> <field name="NUM">7</field> </block> </value> </block> </value> <statement name="DO2"> <block type="telegram" id="l-~;uMDquQf}!k@^imR/"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="6aD|z$p+/GQ-0GK!Jl/e"> <field name="TEXT">Solaranlage meldet einen Fehler! 😱</field> </shadow> </value> </block> </statement> </block> </statement> </block> <block type="astro" id="PA{J4`LUgb*QNbna=Wn^" x="-36" y="1206"> <field name="TYPE">sunset</field> <field name="OFFSET">0</field> <statement name="STATEMENT"> <block type="variables_set" id="nsVZY14,vB~GV3zqLA?w"> <field name="VAR" id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</field> <value name="VALUE"> <block type="math_rndfixed" id="B;C%6l7`6R8CB9Q,Yqe("> <field name="n">1</field> <value name="x"> <shadow type="math_number" id=":luhIPZf8eYAq0B0Lvv$"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="miL)JXF:KkEk!Q$CpWX?"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="/qYj3Nk4_XW;4G0BcZ`I"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="APsnJy)D[H4HGby/--iF"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="uFIB//Cpu7d04w1ZZ[dD"> <field name="NUM">1</field> </shadow> <block type="get_value" id="S`n*O^}zi}5`iySBYy@@"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40094_I_AC_Energie_WH</field> </block> </value> <value name="B"> <shadow type="math_number" id="z(knQ3vuCW3onpW`gJ9{"> <field name="NUM">1</field> </shadow> <block type="get_value" id="[aP9+hl``r1PD~w6}Vm:"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Produktion_bis_gestern</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="RUo/URN?DO}kIX^@Chlc"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="UPTiew:jrYndxI.2=`rb"> <field name="VAR" id="WorYn/,IEi?5LB02:/u(">Tagesexport</field> <value name="VALUE"> <block type="math_rndfixed" id="l-.Uqt@TO=R8:Qb[?JH4"> <field name="n">1</field> <value name="x"> <shadow type="math_number" id="VC2iM){}sS$0U0HfUxZv"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="yU%:UQkU?)E;Ybki-.EY"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="_law3uZ9kpHEEDh;$ue/"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="%PBlf]`+#$I1WOGGW:n?"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40227_M_Exported</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="!@RI[o.hdO3_/!BOt0I;"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Einspeisung_bis_gestern</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="cK?GMkVlEh?4r-o{i}gR"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="telegram" id="?u}%Vs`~(6}eITS`e[Fh"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="HL{dRSIDt~=(%R^yrnMh"> <field name="TEXT">Solaranlage heute </field> </shadow> <block type="text_join" id="k:*shzux+X+e+yK{{p7)"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="0^_~ezUH)Qou%#s$RET?"> <field name="TEXT">Die Solaranlage hat heute </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="q-cguqU$)umnuYw)Z?*_"> <field name="VAR" id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</field> </block> </value> <value name="ADD2"> <block type="text" id="?ywq8fy9_7c3Yl1(OBz}"> <field name="TEXT"> kWh produziert ☀️ und </field> </block> </value> <value name="ADD3"> <block type="variables_get" id="|39ijp:`E@FYF?!YZgd."> <field name="VAR" id="WorYn/,IEi?5LB02:/u(">Tagesexport</field> </block> </value> <value name="ADD4"> <block type="text" id="C(O`P9UJ]ZWO+a@^9rlc"> <field name="TEXT"> kWh eingespiesen</field> </block> </value> </block> </value> <next> <block type="controls_if" id="sImv$.B4K+bZyG@z?y66"> <value name="IF0"> <block type="logic_compare" id="o,Dk@N2_L.8EVDMEhc^_"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="PSjrvcw9Lz`3Rldib.93"> <field name="VAR" id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</field> </block> </value> <value name="B"> <block type="get_value" id=";{Xwsr6/+xc.1{kS]YQg"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Rekord_Tagesleistung</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="z0c_%eHv+]3nh43[*PbH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Rekord_Tagesleistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="Ce:6b5,ZbVbo]9UDPoo-"> <field name="VAR" id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</field> </block> </value> <next> <block type="control" id="G#=qXdAb8oQk;oZ/-!(W"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Leistung.Rekord_Tagesleistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="Vzu|Ikzr*)M?0j#=}r3*"> <field name="VAR" id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</field> </block> </value> <next> <block type="telegram" id="#fhym!.#EP~ZPw~.zn`("> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="o#j%_SeEerjYWZ;[L3+C"> <field name="TEXT"></field> </shadow> <block type="text_join" id="Dk?hsuD@H~PJ@)|X05Gi"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="D!j2^I@m:}CXLQ7NrcY1"> <field name="TEXT">Neue Rekord-Tagesleistung der Solaranlage! ☀️</field> </block> </value> <value name="ADD1"> <block type="text_newline" id="goiOPsjXPSmpL95e^kv+"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="variables_get" id=":l(.XREPon]%[CEpJ:G0"> <field name="VAR" id="nNqB1b6bK3yOaF{%=r67">Tagesleistung</field> </block> </value> <value name="ADD3"> <block type="text" id=",g@EgJr!eYDmfF).GOvE"> <field name="TEXT"> kWh</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
Statusbericht per Alexa abfragen:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="yVq_yl6H*v?=l%;j-=@n">Speicherladung</variable> <variable id=",nIjO4mQyc*.a`#gSy7d">Einspeisung</variable> <variable id="rli+H4BKh^Z1[uy??0b-">Statusbericht_Text</variable> </variables> <block type="on" id="8K9ayuc7yIo!w#nG0II(" x="241" y="97"> <field name="OID">javascript.0.Solaranlage_Statusbericht</field> <field name="CONDITION">gt</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="?8*[m@OYvEfhfGkZEfvp"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solaranlage_Statusbericht</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=",3=QtuDm1r8EjEIDpD*,"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="controls_if" id="8O`[X0ccXu4=poasos-E"> <mutation elseif="1" else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="xjz,3c5K{ddq!anx1OL4"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="A}(hU65BS-5aS6=[x/FJ"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="VA[-`no?3}x}T{h=?:Vx"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> <value name="B"> <block type="math_number" id="21wS6v)ba1tO|c#mz*qu"> <field name="NUM">500</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="RMNv96-wE_0JYIw]]E%("> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="6Zb4LJB+N?hTy7ZJ-48d"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> <value name="B"> <block type="math_number" id="hYjFgxqQ_*WpB1F(sc{{"> <field name="NUM">-500</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="PICh0MX;(m+|bX+swZ2~"> <field name="VAR" id="yVq_yl6H*v?=l%;j-=@n">Speicherladung</field> <value name="VALUE"> <block type="text" id="4U|HAj0EWo$Kbma#OCgN"> <field name="TEXT"></field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="p!en$ptpk]4Y$|+h]VT`"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="KtutV)f6CGj$_*BYhI*5"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> <value name="B"> <block type="math_number" id="(tSF{NtI=7*dcUzQ0Eat"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO1"> <block type="variables_set" id="_~]H7_7N{0cp9r4%G)=4"> <field name="VAR" id="yVq_yl6H*v?=l%;j-=@n">Speicherladung</field> <value name="VALUE"> <block type="text_join" id="i6yk+/s/8,Ka9(cUfN]="> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="R-7UcKN-==Eer=hVb,$u"> <field name="TEXT">Der Speicher wird mit </field> </block> </value> <value name="ADD1"> <block type="math_single" id="rw:d[{4$/TwN%_DGaQlJ"> <field name="OP">ABS</field> <value name="NUM"> <shadow type="math_number" id="t!sF1n*-.d2DO:6-=;^:"> <field name="NUM">9</field> </shadow> <block type="math_rndfixed" id="isc,6Datfbf.U7fp1^!e"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="LIdNnM#%S9;DjP1(_LBs"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="GK0=z$$-Z_dwJkzQsS*o"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> <value name="B"> <shadow type="math_number" id="jebSv7nL_bxmo)uo9$B5"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="na-j7TEGV0kL,!gwI}pb"> <field name="TEXT"> Kilowatt geladen.</field> </block> </value> <value name="ADD3"> <block type="text_newline" id="6VRBu/V8%FY{{B+Jg;}B"> <field name="Type">\n</field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="F`J-Redx^c/-0G`eG!V@"> <field name="VAR" id="yVq_yl6H*v?=l%;j-=@n">Speicherladung</field> <value name="VALUE"> <block type="text_join" id="{Vcpa#5|;jhGKZ;[]a23"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="*e|iIw`tn@elV0ypp;/|"> <field name="TEXT">Wir entladen den Speicher mit </field> </block> </value> <value name="ADD1"> <block type="math_single" id=",.)BEa^hD2vX+gsSw3t)"> <field name="OP">ABS</field> <value name="NUM"> <shadow type="math_number" id="vQs.e{jI=s|=s)$7$46J"> <field name="NUM">9</field> </shadow> <block type="math_rndfixed" id="YcrfPM]2U2T~:DC$8aBg"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="7Q%q0;cxQ0#SPpd0qQ2Y"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="~wtx_zV0_u6fwI8CEOdI"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.102837_Speicher_Ladung</field> </block> </value> <value name="B"> <shadow type="math_number" id="It`44!P*hc7U1GJTc;Va"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="8Y=0XI%BKq?mT,OP;J4f"> <field name="TEXT"> Kilowatt.</field> </block> </value> <value name="ADD3"> <block type="text_newline" id="Lw65-y0f3z)JR|DHEYH$"> <field name="Type">\n</field> </block> </value> </block> </value> </block> </statement> <next> <block type="controls_if" id="oH3%1(j-AD%_l1jQ*lc{"> <mutation elseif="1" else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="~fA!by48q**ZoHgD.pAL"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="4ZZ=)%w.u3`[Xxi^V?[c"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="$@*Tdj7Wkm:n`xrMV:kS"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> </block> </value> <value name="B"> <block type="math_number" id="kUM^vFYB7w8?.MRGB@x*"> <field name="NUM">500</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="c_@z9cG!;cNmsHr+00}]"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="js+6_pxCPo58NHOpg1ff"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> </block> </value> <value name="B"> <block type="math_number" id="/J$s-BoSQ^O?`1CZQ/AT"> <field name="NUM">-500</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="Ty0%qG$nnRFb*E~:[bJO"> <field name="VAR" id=",nIjO4mQyc*.a`#gSy7d">Einspeisung</field> <value name="VALUE"> <block type="text" id="iH#JfdH8pctpP=E:[(?k"> <field name="TEXT"></field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="0uw:!ubZ)i4F:NWF{{]Q"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="jZ-a3$rZXgu:B|^s%g7Y"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> </block> </value> <value name="B"> <block type="math_number" id="QE.K-O1M#:.Kc`7pkR8k"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO1"> <block type="variables_set" id="!_A*lK+~H4@gqNhSkUpT"> <field name="VAR" id=",nIjO4mQyc*.a`#gSy7d">Einspeisung</field> <value name="VALUE"> <block type="text_join" id="S|m][PW|cZyNXT@:S*m#"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="3aK_#j90(Q%R$,O!EE#z"> <field name="TEXT">Wir speisen </field> </block> </value> <value name="ADD1"> <block type="math_single" id="s()~78pNzP.%SA_EplCq"> <field name="OP">ABS</field> <value name="NUM"> <shadow type="math_number" id="~DAXRW,C$#Z)Ua7_9.8d"> <field name="NUM">9</field> </shadow> <block type="math_rndfixed" id="$qh7/m*@@n%Y{)uKkj%?"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="oh~)lBemmd3tVl+$L)/#"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="25A*CK8Xu2|b/TlsV8Ig"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> </block> </value> <value name="B"> <shadow type="math_number" id="PO!M3=2}`32(,}X_oZez"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="K-+yTNt9f[|rYLRXCc|L"> <field name="TEXT"> Kilowatt ins Netz ein.</field> </block> </value> <value name="ADD3"> <block type="text_newline" id="ihzsmtfT6Y?v|t$LDtk_"> <field name="Type">\n</field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="Sv4B=|GnfE/p99wGW=T_"> <field name="VAR" id=",nIjO4mQyc*.a`#gSy7d">Einspeisung</field> <value name="VALUE"> <block type="text_join" id="X%s:p0C]?ePT2P%`FwUC"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="[r4WdUumM5,kapchO:EO"> <field name="TEXT">Wir beziehen </field> </block> </value> <value name="ADD1"> <block type="math_single" id="@c|/@;Sib_l/voSyew#2"> <field name="OP">ABS</field> <value name="NUM"> <shadow type="math_number" id="ioG~ozs(=U+7mpcvu0^!"> <field name="NUM">9</field> </shadow> <block type="math_rndfixed" id="ZA$AVUo4XYHOb6UDg(q^"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="XR_tkeA$b^%_]3xSZcsO"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="O=-F4$P[*E_Ddk(|i4[:"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Netzzuleitung</field> </block> </value> <value name="B"> <shadow type="math_number" id="-vsbR0Q=W^WD:(`N](@Y"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="sN#R!%Q/2CTS^nN|^|rU"> <field name="TEXT"> Kilowatt vom Netz.</field> </block> </value> <value name="ADD3"> <block type="text_newline" id="Ns*;`8ozU}E8NP/@Tr#$"> <field name="Type">\n</field> </block> </value> </block> </value> </block> </statement> <next> <block type="variables_set" id="7Ea;*1qQ?mk].uizRDDf"> <field name="VAR" id="rli+H4BKh^Z1[uy??0b-">Statusbericht_Text</field> <value name="VALUE"> <block type="text_join" id=",*myJKhwd2`$4Sce*}Y|"> <mutation items="9"></mutation> <value name="ADD0"> <block type="text" id="DJ7yDR8sOG3)8N/yDBe2"> <field name="TEXT">Die Solaranlage produziert aktuell </field> </block> </value> <value name="ADD1"> <block type="math_rndfixed" id="lL#2}[?aFK,oF~869p?)"> <field name="n">1</field> <value name="x"> <shadow type="math_number" id="Zrbl$?9%9)e`fqN@S-16"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="_^#{H0G?Rc?nb|(lS[bP"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="64+Xt8aTcU*s)NJ#1Llf"> <field name="NUM">1</field> </shadow> <block type="get_value" id="(knF$rbVfs9^GC/s)JhF"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Solarproduktion</field> </block> </value> <value name="B"> <shadow type="math_number" id="/^8dDky38(5oo#7o-R(v"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="`N`@pn_F5@xB}BFFv[bo"> <field name="TEXT"> Kilowatt.</field> </block> </value> <value name="ADD3"> <block type="text_newline" id="fr$0dQ@pokQ=a5pr(UM;"> <field name="Type">\n</field> </block> </value> <value name="ADD4"> <block type="variables_get" id="DYPHeo/(AU+0X*SgaDsg"> <field name="VAR" id="yVq_yl6H*v?=l%;j-=@n">Speicherladung</field> </block> </value> <value name="ADD5"> <block type="variables_get" id="rT%nRW_s@Sz6Fp=iPyu-"> <field name="VAR" id=",nIjO4mQyc*.a`#gSy7d">Einspeisung</field> </block> </value> <value name="ADD6"> <block type="text" id="t~vB168IMi8()X}qxFer"> <field name="TEXT">Wir haben heute </field> </block> </value> <value name="ADD7"> <block type="math_rndfixed" id="mXEbaiY;$=D)yp-fWE;w"> <field name="n">1</field> <value name="x"> <shadow type="math_number"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="=ot6}H8|oTXu,cyW5C3]"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="xvN/ql1B9Xp98f5}5`M{"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id=",%boSIr($2jHjaOq!XSk"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.40094_I_AC_Energie_WH</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="-cld;/!:f!#}ri_vw6!9"> <field name="ATTR">val</field> <field name="OID">javascript.0.Solaranlage_Leistung.Produktion_bis_gestern</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="H+t0JeUHjc|oGk,:,6ls"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD8"> <block type="text" id="Yd-q@k{II+/Y/j8HIJYX"> <field name="TEXT"> Kilowattstunden produziert.</field> </block> </value> </block> </value> <next> <block type="telegram" id="lRhlQ[vw~k+@+]DVNHE0"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="B7Vnv.U)Xj3:O97^w4{!"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="e:G36G[bC~uX(fONbXOx"> <field name="VAR" id="rli+H4BKh^Z1[uy??0b-">Statusbericht_Text</field> </block> </value> <value name="USERNAME"> <block type="text" id="-AeM]s7@B.WHKk1lj=:j" disabled="true"> <field name="TEXT">Chris</field> </block> </value> <next> <block type="control" id=":d(nJ[7Ch2T(N(e?G]Cq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G0911M0793152N2C.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id=",XfO`rtId;Mvj@~}#Y.v"> <field name="VAR" id="rli+H4BKh^Z1[uy??0b-">Statusbericht_Text</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="math_number" id="4_ipSbC-Vrw?,$HJC%N3" x="400" y="638"> <field name="NUM">0</field> </block> </xml>
Was mir noch fehlt ist eine korrekte Berechnung des Hausverbrauchs bzw. der Leistung der Solarpanels mit korrekt herausgerechneter Ladung oder Entladung des Speichers. Konkret also diese Berechnung:
Ausserdem fehlt mir noch die Modbus-Adresse für den aktuellen Speicher-Füllstand in Prozenz.
-
@chrisprefect said in Solaredge Adapter (Photovoltaikanlage):
Hier mal mein aktueller Stand mit Solaredge SE10K und Solaredge Stromsensor und BYD LVS 24.0:
Wow. Vielen Dank. Da werde ich mir etwas Zeit für nehmen müssen.
Die Batterieregister packe ich Dir hier mal dazu.
Was Du suchst ist 102853 State of Energy SOE Batterieladung %
Siehe unten.
1 102837 Batterieleistung Leistung Batterie W floatsw 2 1 0 level true false false 1 102853 State of Energy SOE Batterieladung % floatsw 2 1 0 level true false false 1 102855 Batterie Status Battery operating state: 0 – Off; 1 – Standby; 2 – Init; 3 – Charge; 4 – Discharge; 5 – Fault; 7 - Idle uint32sw 2 1 0 level true false false 1 102787 Batt Rated Energy Batt Rated Energy Wh floatsw 2 1 0 level true false false 1 102829 Batt1_Avg_T Batterie 1 Average Temperature °C °C floatsw 2 1 0 level true false false 1 103237 StCtrlMode Storage Control Mode uint16be 1 1 0 level true false false 1 101763 AdvancedPwrControlEn AdvancedPwrControlEn uint32sw 2 1 0 level true false false 1 101701 ReactivePwrConfig ReactivePwrConfig uint32sw 2 1 0 level true false false 1 103247 Remote Control Charge Limit Remote Control Charge Limit W floatsw 2 1 0 level true false false 1 101697 CommitSettings Commit Power Control Settings uint16be 1 1 0 level true false false 1 103243 StChDisChMode Storage Charge/Discharge Default Mode uint16be 1 1 0 level true false false
In der Liste sind auch Register enthalten um das Ladeprofil der Batterie zu modifizieren (70%-Limitierung vermeiden). Siehe dazu hier https://www.photovoltaikforum.com/thread/152402-storedge-se10k-ladeleistung-batterie/?postID=2235131#post2235131
Gruß,
Oli -
Das Register 102853 funktioniert bei mir eben nicht
Die Speicherladung 102837 funktioniert, aber bei 102853 kommt nichts. Auch einen Wert drunter und drüber habe ich schon probiert.
-
@chrisprefect said in Solaredge Adapter (Photovoltaikanlage):
Die Speicherladung 102837 funktioniert, aber bei 102853 kommt nichts. Auch einen Wert drunter und drüber habe ich schon probiert.
Was sagt Dein Log des Modbus-Adapters beim Pollen?
-
@osu Oh, da habe ich diese Meldung gesehen:
(31435) Poll error count: 2 code: {"errorCode":131,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"}
Da steht leider nicht welche Adresse illegal ist. Ich habe dann einzeln die Adressen deaktiviert und gesehen, dass es wohl an dieser Zeile lag:
Ohne diese Zeile wird nun auch der SoC in % korrekt ausgelesen! Super
-
Jetzt fehlt mir nur noch die korrekte Berechnung von Hausverbrauch und Solarpanel-Leistung. Wie wird die Batterie Ladung und Entladung da korrekt eingerechnet?
-
@chrisprefect said in Solaredge Adapter (Photovoltaikanlage):
@osu Oh, da habe ich diese Meldung gesehen:
(31435) Poll error count: 2 code: {"errorCode":131,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"}
Da steht leider nicht welche Adresse illegal ist. Ich habe dann einzeln die Adressen deaktiviert und gesehen, dass es wohl an dieser Zeile lag:
Ohne diese Zeile wird nun auch der SoC in % korrekt ausgelesen! Super
Probier mal, ob's am Datentyp liegt (glaube ich aber nicht).
Du hast da uint16, ich habe da uint32sw.Das Register funktioniert bei mir zuverlässig.
-
@chrisprefect said in Solaredge Adapter (Photovoltaikanlage):
Jetzt fehlt mir nur noch die korrekte Berechnung von Hausverbrauch und Solarpanel-Leistung. Wie wird die Batterie Ladung und Entladung da korrekt eingerechnet?
Da bin ich gerade noch am rumpfriemeln.
Ich habe da bisher folgende Probleme
-
falsche Datentypen (einfach lösbar durch Lesen der Doku und Abgleich) führen zu einem Werteüberlauf. Ich vermute ich habe da ggf. noch das eine oder andere Issue, muss ich nochmal genauer unter die Lupe nehmen.
-
unterschiedliche Taktung der Werteermittlung: klar ist, dass die Skalierungsfaktoren gleichzeitig mit den zu skalierenden Werten gelesen werden müssen, sonst liefert der Wert Müll.
Wenn ich nun aber einen Zusammenhang aus den per Modbus gelesenen Werten schaffen will, muss ich die zusammenhängenden Werte ebenfalls zum selben Zeitpunkt lesen und verarbeiten um daraus Werte zu berechnen (wieviel produziere ich auf dem Dach? Was ist mein Hausverbrauch?). Da hapert's leider noch bei mir. Denn obwohl ich die Werte im selben Blockly aus dem Modbus lese und dann lokal speichere passt das häufig nicht zusammen und sorgt ggü. der Berechnungsgrundlage für Deltas. -
mir noch unerklärliche Spikes in meinen Zahlen. Kann eine Folge von oben sein.
Was ich derzeit ermittle ist z.B. folgendes:
Ermittelt mit folgendem Blockly (kann beliebig falsch sein):
Führt zu folgender Visualisierung:
Die Werte sind aber noch Murks, denn auf diese Weise gibt es Abweichungen bei der PV Produktion Ist (objects) vom Soll (Formel / Blockly) wie folgt:
Wie gesagt. Bin noch beim Versuch zu verstehen.
Wenn Du Ideen hast oder die Dinge auffallen, immer her damit.
Gruß,
Oli -