NEWS
Problem Auslesen PV-Wechselrichter mit Parser und Regex
-
In den Objekten war ich aus Verzweiflung, da es nicht funktioniert hat. Da hatte ich weitere Einstellungen gesehen, und mal rum probiert.
Nachfolgend der Quellcode in code-tags (wieder was dazu gelernt
This XML file does not appear to have any style information associated with it. The document tree is shown below. <root> <Device Name="StecaGrid 3000" NominalPower="3000" Type="Inverter" Serial="748612ZD005337120001" BusAddress="1" NetBiosName="INV005337120001" IpAddress="192.168.178.54" DateTime="2021-03-05T10:58:09"> <Measurements> <Measurement Value="234.0" Unit="V" Type="AC_Voltage"/> <Measurement Value="0.937" Unit="A" Type="AC_Current"/> <Measurement Value="201.3" Unit="W" Type="AC_Power"/> <Measurement Value="49.960" Unit="Hz" Type="AC_Frequency"/> <Measurement Value="402.6" Unit="V" Type="DC_Voltage"/> <Measurement Value="0.501" Unit="A" Type="DC_Current"/> <Measurement Value="22.9" Unit="°C" Type="Temp"/> <Measurement Unit="W" Type="GridPower"/> <Measurement Value="100.0" Unit="%" Type="Derating"/> </Measurements> <Events> <Event Message="ENS Grid Frequency too low" Severity="Error" Type="User" Start="2018-11-07T16:59:27" End="2021-02-03T08:21:09"/> </Events> <Yields/> <Versions> <Software Device="HMI" Name="BFAPI" Version="2.5.3"/> <Software Device="HMI" Name="FBL" Version="2.6.0"/> <Software Device="HMI" Name="APP" Version="2.12.0"/> <Software Device="HMI" Name="PAR default" Version="2.0.4"/> <Software Device="HMI" Name="OEM SG3000" Version="1.0.4"/> <Software Device="PU" Name="BFAPI" Version="2.5.0"/> <Software Device="PU" Name="FBL" Version="1.1.1"/> <Software Device="PU" Name="APP" Version="5.5.0"/> <Software Device="PU" Name="PAR" Version="5.3.1"/> <Software Device="ENS1" Name="BFAPI" Version="2.5.0"/> <Software Device="ENS1" Name="FBL" Version="1.1.1"/> <Software Device="ENS1" Name="APP" Version="3.61.0"/> <Software Device="ENS1" Name="PAR" Version="22.0.7"/> <Software Device="ENS2" Name="BFAPI" Version="2.5.0"/> <Software Device="ENS2" Name="FBL" Version="1.1.1"/> <Software Device="ENS2" Name="APP" Version="3.61.0"/> <Software Device="ENS2" Name="PAR" Version="22.0.7"/> <Hardware Device="HMI" Version="1"/> <Hardware Device="PU" Version="3"/> <Hardware Device="ENS2" Version="2"/> </Versions> <State Value="Active"/> <Tasks> <Task Name="TCP/IP Core" State="Pending/Timeout" Prio="2" ID="31" StackSize="320" StackUsed="178" ContextSwitches="33506310" CPULoad="0.74%" CPULoadPeak="58.27%" WaitFor="LwIP_DynQueue"/> <Task Name="RS485 BusScheduler" State="Pending/Timeout" Prio="20" ID="30" StackSize="256" StackUsed="98" ContextSwitches="278657979" CPULoad="2.28%" CPULoadPeak="10.30%" WaitFor="Task Sem"/> <Task Name="Derating" State="Delayed" Prio="20" ID="29" StackSize="96" StackUsed="28" ContextSwitches="2613845" CPULoad="0.00%" CPULoadPeak="0.03%" WaitFor=" "/> <Task Name="uC/OS-III Timer Dispatcher" State="Pending" Prio="10" ID="28" StackSize="128" StackUsed="42" ContextSwitches="307" CPULoad="0.00%" CPULoadPeak="0.01%" WaitFor="Task Q"/> <Task Name="TCP/IP INET LinkStatus" State="Suspended" Prio="29" ID="27" StackSize="256" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="TCP/IP LinkStatus" State="Delayed" Prio="29" ID="26" StackSize="256" StackUsed="113" ContextSwitches="26658131" CPULoad="0.08%" CPULoadPeak="0.45%" WaitFor=" "/> <Task Name="Datalogger" State="Delayed" Prio="28" ID="25" StackSize="256" StackUsed="134" ContextSwitches="28383801" CPULoad="0.82%" CPULoadPeak="13.53%" WaitFor=" "/> <Task Name="RTC IntervalTimer" State="Delayed" Prio="27" ID="24" StackSize="256" StackUsed="68" ContextSwitches="26129719" CPULoad="0.01%" CPULoadPeak="1.31%" WaitFor=" "/> <Task Name="PowerLimiter" State="Pending" Prio="25" ID="23" StackSize="256" StackUsed="96" ContextSwitches="7" CPULoad="0.00%" CPULoadPeak="0.19%" WaitFor="Task Sem"/> <Task Name="Simulation" State="Suspended" Prio="22" ID="22" StackSize="512" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="Analog Measurements" State="Delayed" Prio="21" ID="21" StackSize="128" StackUsed="64" ContextSwitches="2646266" CPULoad="0.00%" CPULoadPeak="0.18%" WaitFor=" "/> <Task Name="EndOfLine Test" State="Suspended" Prio="20" ID="20" StackSize="256" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="MinMax" State="Delayed" Prio="18" ID="19" StackSize="256" StackUsed="204" ContextSwitches="2677981" CPULoad="0.00%" CPULoadPeak="0.65%" WaitFor=" "/> <Task Name="OperatingHours" State="Delayed" Prio="17" ID="18" StackSize="256" StackUsed="142" ContextSwitches="3627171" CPULoad="0.00%" CPULoadPeak="28.22%" WaitFor=" "/> <Task Name="HMI LCD" State="Pending/Timeout" Prio="16" ID="17" StackSize="512" StackUsed="304" ContextSwitches="130195666" CPULoad="1.29%" CPULoadPeak="32.33%" WaitFor="Task Q"/> <Task Name="HMI Key" State="Delayed" Prio="15" ID="16" StackSize="256" StackUsed="74" ContextSwitches="261283344" CPULoad="0.17%" CPULoadPeak="0.22%" WaitFor=" "/> <Task Name="HMI Buzzer" State="Delayed" Prio="1" ID="15" StackSize="64" StackUsed="39" ContextSwitches="2612659478" CPULoad="0.98%" CPULoadPeak="1.06%" WaitFor=" "/> <Task Name="HMI Backlight" State="Delayed" Prio="2" ID="14" StackSize="128" StackUsed="58" ContextSwitches="252796304" CPULoad="0.59%" CPULoadPeak="0.64%" WaitFor="FLAG Backlight"/> <Task Name="Reset" State="Suspended" Prio="1" ID="13" StackSize="160" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="RS485 Master" State="Pending/Timeout" Prio="3" ID="12" StackSize="512" StackUsed="139" ContextSwitches="1306535971" CPULoad="0.83%" CPULoadPeak="9.85%" WaitFor="Task Sem"/> <Task Name="RS485 Slave" State="Pending/Timeout" Prio="5" ID="11" StackSize="512" StackUsed="79" ContextSwitches="522540173" CPULoad="0.31%" CPULoadPeak="0.37%" WaitFor="SEM RS485 Address Changed"/> <Task Name="TCP/IP SMTPclient" State="Pending" Prio="31" ID="10" StackSize="512" StackUsed="40" ContextSwitches="1" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor="Task Q"/> <Task Name="TCP/IP TELNETserver" State="Suspended" Prio="13" ID="9" StackSize="1024" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="TCP/IP TELNETinput" State="Suspended" Prio="11" ID="8" StackSize="256" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="TCP/IP DEBUGserver" State="Suspended" Prio="24" ID="7" StackSize="128" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="TCP/IP ETHinput" State="Pending/Timeout" Prio="10" ID="6" StackSize="128" StackUsed="63" ContextSwitches="35670076" CPULoad="0.31%" CPULoadPeak="2.14%" WaitFor="Task Sem"/> <Task Name="TCP/IP HTTPclient" State="Suspended" Prio="31" ID="5" StackSize="1024" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="TCP/IP HTTPserver" State="Ready" Prio="31" ID="4" StackSize="1024" StackUsed="798" ContextSwitches="763927" CPULoad="10.70%" CPULoadPeak="75.67%" WaitFor=" "/> <Task Name="EventStorage" State="Suspended" Prio="7" ID="3" StackSize="256" StackUsed="16" ContextSwitches="0" CPULoad="0.00%" CPULoadPeak="0.00%" WaitFor=" "/> <Task Name="Eventmanager" State="Pending" Prio="6" ID="2" StackSize="256" StackUsed="70" ContextSwitches="6" CPULoad="0.00%" CPULoadPeak="0.05%" WaitFor="Task Q"/> <Task Name="Boot" State="Delayed" Prio="0" ID="1" StackSize="544" StackUsed="165" ContextSwitches="52254173" CPULoad="0.07%" CPULoadPeak="97.10%" WaitFor="Task Sem"/> <Task Name="uC/OS-III Timer Task" State="Pending" Prio="11" ID="32" StackSize="256" StackUsed="58" ContextSwitches="261280419" CPULoad="0.11%" CPULoadPeak="0.58%" WaitFor="Task Sem"/> <Task Name="uC/OS-III Stat Task" State="Delayed" Prio="11" ID="33" StackSize="128" StackUsed="44" ContextSwitches="26233615" CPULoad="0.46%" CPULoadPeak="0.54%" WaitFor=" "/> <Task Name="uC/OS-III Tick Task" State="Pending" Prio="10" ID="34" StackSize="128" StackUsed="28" ContextSwitches="2612689331" CPULoad="1.34%" CPULoadPeak="1.41%" WaitFor="Task Sem"/> <Task Name="uC/OS-III Idle Task" State="Ready" Prio="63" ID="35" StackSize="128" StackUsed="18" ContextSwitches="2559974556" CPULoad="87.34%" CPULoadPeak="93.21%" WaitFor=" "/> </Tasks> <Statistics> <Statistic Name="Common"> <Value Label="Connected%20To%20Grid">21841688</Value> <Value Label="Active">10127826</Value> </Statistic> <Statistic Name="Power"> <Value Label="0-500W">6451398</Value> <Value Label="500-1000W">1506382</Value> <Value Label="1000-1500W">962366</Value> <Value Label="1500-2000W">974553</Value> <Value Label="2000-2500W">223869</Value> <Value Label="2500-3000W">9195</Value> <Value Label="3000-3500W">63</Value> <Value Label="3500-4000W">0</Value> <Value Label="4000-4500W">0</Value> <Value Label="4500-5000W">0</Value> <Value Label="5000-5500W">0</Value> <Value Label="5500-6000W">0</Value> <Value Label="%3E6000W">0</Value> </Statistic> <Statistic Name="AC%20Voltage"> <Value Label="%3C200V">0</Value> <Value Label="200-230V">14635</Value> <Value Label="230-240V">16028749</Value> <Value Label="240-250V">913024</Value> <Value Label="250-255V">0</Value> <Value Label="255-260V">0</Value> <Value Label="260-265V">0</Value> <Value Label="%3E265V">0</Value> </Statistic> <Statistic Name="PV%20Voltage"> <Value Label="%3C100V">10793888</Value> <Value Label="100-200V">281478</Value> <Value Label="200-300V">272581</Value> <Value Label="300-400V">8840750</Value> <Value Label="400-500V">1652991</Value> <Value Label="500-600V">0</Value> <Value Label="600-700V">0</Value> <Value Label="700-800V">0</Value> <Value Label="800-850V">0</Value> <Value Label="850-900V">0</Value> <Value Label="900-950V">0</Value> <Value Label="950-1000V">0</Value> <Value Label="%3E1000V">0</Value> </Statistic> <Statistic Name="Derating"> <Value Label="Temperature">0</Value> <Value Label="External">0</Value> <Value Label="P(f)">0</Value> <Value Label="Startup">161</Value> <Value Label="UserLimit">0</Value> <Value Label="Hardware%20Limit">61</Value> <Value Label="Frequency%20TooHigh">59408</Value> </Statistic> <Statistic Name="Temp%20Ambient"> <Value Label="%3C-20%C2%B0C">0</Value> <Value Label="-20-0%C2%B0C">0</Value> <Value Label="0-20%C2%B0C">6248784</Value> <Value Label="20-40%C2%B0C">15592904</Value> <Value Label="40-60%C2%B0C">0</Value> <Value Label="60-80%C2%B0C">0</Value> <Value Label="80-100%C2%B0C">0</Value> <Value Label="%3E100%C2%B0C">0</Value> </Statistic> <Statistic Name="Temp%20T1"> <Value Label="%3C-20%C2%B0C">0</Value> <Value Label="-20-0%C2%B0C">0</Value> <Value Label="0-20%C2%B0C">221288</Value> <Value Label="20-40%C2%B0C">9741575</Value> <Value Label="40-60%C2%B0C">164963</Value> <Value Label="60-80%C2%B0C">0</Value> <Value Label="80-100%C2%B0C">0</Value> <Value Label="%3E100%C2%B0C">0</Value> </Statistic> <Statistic Name="Temp%20T2"> <Value Label="%3C-20%C2%B0C">0</Value> <Value Label="-20-0%C2%B0C">0</Value> <Value Label="0-20%C2%B0C">2167634</Value> <Value Label="20-40%C2%B0C">7421361</Value> <Value Label="40-60%C2%B0C">538831</Value> <Value Label="60-80%C2%B0C">0</Value> <Value Label="80-100%C2%B0C">0</Value> <Value Label="%3E100%C2%B0C">0</Value> </Statistic> <Statistic Name="Temp%20T3"> <Value Label="%3C-20%C2%B0C">0</Value> <Value Label="-20-0%C2%B0C">0</Value> <Value Label="0-20%C2%B0C">2454138</Value> <Value Label="20-40%C2%B0C">6919167</Value> <Value Label="40-60%C2%B0C">754521</Value> <Value Label="60-80%C2%B0C">0</Value> <Value Label="80-100%C2%B0C">0</Value> <Value Label="%3E100%C2%B0C">0</Value> </Statistic> <Statistic Name="Temp%20T4"> <Value Label="%3C-20%C2%B0C">0</Value> <Value Label="-20-0%C2%B0C">0</Value> <Value Label="0-20%C2%B0C">978963</Value> <Value Label="20-40%C2%B0C">7688155</Value> <Value Label="40-60%C2%B0C">1460708</Value> <Value Label="60-80%C2%B0C">0</Value> <Value Label="80-100%C2%B0C">0</Value> <Value Label="%3E100%C2%B0C">0</Value> </Statistic> <Statistic Name="Temp%20Tmax"> <Value Label="%3C-20%C2%B0C">0</Value> <Value Label="-20-0%C2%B0C">0</Value> <Value Label="0-20%C2%B0C">221145</Value> <Value Label="20-40%C2%B0C">8449234</Value> <Value Label="40-60%C2%B0C">1457447</Value> <Value Label="60-80%C2%B0C">0</Value> <Value Label="80-100%C2%B0C">0</Value> <Value Label="%3E100%C2%B0C">0</Value> </Statistic> </Statistics> </Device> </root>
-
@tombir beeil dich, gleich ist die Sonne weg
-
Tja, dann geht das Licht aus...
-
@homoran sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
ging soweit trotzdem (hoffentlich) AC_Current[^\d]+([\d.]+)
@Tombir das hattest du aber schon gesehen?
-
@homoran said in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
AC_Current[^\d]+([\d.]+)
Es funktioniert!!!!
Ich weis zwar auf Anhieb noch nicht, wie, aber ich werde deine Lösung noch genau studieren.
Was war an meinem Ansatz falsch und warum hat regex101 trotzdem funktioniert?
-
Das ist mein 1. Entwurf einer Anzeige mit Steuerungselementen dazu
-
@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Das ist mein 1. Entwurf einer Anzeige mit Steuerungselementen dazu
in etwa das hier:
-
Da kann ich mich mit meiner Lösung nur verstecken.
Du bist mir um Meilen voraus!Aber abgucken darf ich, oder?
Übrigens: Deinen Post mir der 1. Lösung hatte ich wirklich übersehen. War zu sehr mit dem Quellcode und code-tags beschäftigt.
Noch einmal vielen, vielen Dank! Du hast mir den Tag gerettet!
-
@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Du bist mir um Meilen voraus!
aber...
@
tombirsagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:Das ist mein 1. Entwurf
-
Hallo homoran,
ich verstehe inzwischen deine Lösung.Jetzt ist die Sonne weg, und leider gibt es wieder einen Fehler in der Auswertung - es wird die Freuquenz als Leistung ausgegeben.
Den Grund habe ich im Quellcode gefunden: Wenn keine Leistung vorhanden ist, wird nichts angezeigt. Es werden dann die nächsten Zahlen gefiltert (siehe Quellcode unten)
<root> <Device Name="StecaGrid 3000" NominalPower="3000" Type="Inverter" Serial="748612ZD005337120001" BusAddress="1" NetBiosName="INV005337120001" IpAddress="192.168.178.54" DateTime="2021-03-05T18:23:07"> <Measurements> <Measurement Value="233.3" Unit="V" Type="AC_Voltage"/> <Measurement Unit="A" Type="AC_Current"/> <Measurement Unit="W" Type="AC_Power"/> <Measurement Value="49.981" Unit="Hz" Type="AC_Frequency"/> <Measurement Value="317.9" Unit="V" Type="DC_Voltage"/> <Measurement Unit="A" Type="DC_Current"/> <Measurement Unit="°C" Type="Temp"/> <Measurement Unit="W" Type="GridPower"/> <Measurement Value="100.0" Unit="%" Type="Derating"/> </Measurements>
Kann man den Filter irgendwie auf die Zeile 6 begrenzen?
-
@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Wenn keine Leistung vorhanden ist, wird nichts angezeigt.
so ist es
murks!
Mal sehen, ob man das abfangen kann
-
@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Kann man den Filter irgendwie auf die Zeile 6 begrenzen?
Im Parser nicht dass ich es wüsste
Versuch mal
([\d.]+)[^U]+Unit="W"
das gibt jetzt zumindest gar nichts an.Da kann man doch einen Ersatzwert angeben, setz den mal auf 0
Edit:
Oder:([\d.]+)?.{17}AC_Po
-
@homoran said in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
([\d.]+)[^U]+Unit="W"
Habe ich eingetragen, mit Ersatzwert 0.
Es wird leider nichts angezeigt, auch nicht der Ersatzwert.Ich hatte folgendes versucht:
AC_Current[^\d]+([\d.]+)"\sUnit="W"Aber auch da wird nichts angezeigt.
Ich denke, ich werde mal bis morgen auf die Sonne warten müssen - halt bis Sonntag, da ich morgen den ganzen Tag bei meiner Tochter auf der Baustelle arbeite.
Melde mich am Sonntag wieder mit den neuesten Erkenntnissen.
Würde mich freuen, wenn ich am Sonntag wieder was von dir lese -
@tombir ich hatte noch was editiert
Alle beiden Varianten gehen zumindest mit deinen beiden Quelltexten, gibt allerdings jetzt kein Ergebnis aus.
Ich weiß nicht ob das zu Problemen führt, dann wird der letzte Wert vielleicht nur nicht geändertWie das mit dem Ersatzwert ist weiß ich ehrlich gesagt nicht, da ich damit noch nie gearbeitet habe
-
Ich habe gestern Abend kurz vor Sonnenuntergang beide Varianten getestet - keine hat funktioniert, d.h. keine Anzeige.
Ich habe dann noch etwas herum probiert und bin darauf gekommen:
AC_Current[^\d]+([\d.]+).\s......WDas sieht zwar nicht sehr schön aus, scheint aber zu funktionieren. Wenn ich statt der vielen Punkte einen Buchstaben von Unit (was ich ja suche) eintrage, funktioniert nichts. Verstehe ich nicht, da regex101 mit Unit kein Problem hat.
Wenn die PV läuft, werden die Werte angezeigt, nachts wird allerdings NaN (Not a Number) angezeigt. Ich denke, das kann ich aber mittels Script zu 0 ändern.
Also: Im Prinzip Problem gelöst!
Hätte ich aber ohne deine Hilfe nicht geschafft. -
@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
keine hat funktioniert, d.h. keine Anzeige.
das war mir klar!
aber kannst du mit "keine Anzeige" nicht leben, wenn kein Wert da ist?
IMHO sollte dann nur der letzte Wert im Datenpunkt bleiben.@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Ich denke, das kann ich aber mittels Script zu 0 ändern.
Das wäre dann die andere (Luxus-) Variante
-
@homoran said in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
aber kannst du mit "keine Anzeige" nicht leben, wenn kein Wert da ist?
IMHO sollte dann nur der letzte Wert im Datenpunkt bleiben.Da wird nichts angezeigt auch nicht bei Sonne.
-
@homoran said in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Das wäre dann die andere (Luxus-) Variante
Nicht ganz.
Ich brauche den Wert um damit Entscheidungen zu treffen. Mit NaN kann Blockly anscheinend nichts anfangen. -
@tombir sagte in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
Da wird nichts angezeigt auch nicht bei Sonne.
Seltsam.
mit dem zuerst von dir geposten vollständigen Quelltext klappt das bei mir.Dann muss ich mir das nochmal ansehen
-
@homoran said in Problem Auslesen PV-Wechselrichter mit Parser und Regex:
([\d.]+)?.{17}AC_Po
Hallo,
([\d.]+)?.{17}AC_Po geht es, aber bei GridPower, nimmt er den "-" nicht.
BSP:
<Measurement Value='-66.3' Unit='W' Type='GridPower'/>
bekommen ich nur 66.3, möchte aber das "-" auch anzeigt.