Habe folgendes Problem
Ich schaffe es nicht folgenses XML auszulesen und in Variablen zu schreiben
Code: Alles auswählen
<?xml version="1.0"?>
-<siteCurrentPowerFlow>
<updateRefreshRate>3</updateRefreshRate>
<unit>kW</unit>
-<GRID>
<status>Active</status>
<currentPower>0.16</currentPower>
</GRID>
-<LOAD>
<status>Active</status>
<currentPower>0.21</currentPower>
</LOAD>
-<PV>
<status>Active</status>
<currentPower>0.37</currentPower>
</PV>
-<connections>
-<connection>
<from>LOAD</from>
<to>Grid</to>
</connection>
-<connection>
<from>PV</from>
<to>Load</to>
</connection>
</connections>
</siteCurrentPowerFlow>
so habe ich es probiert um die wichtigsten Sachen auszulesen
ich denke das das Problem ist dass zwischen z.B. GRID zwei Werte zum auslesen sind
bzw wie kann ich die Werte der Connection in eine Variable (Zeichenkette) schreiben, dass dann in der variablen steht z.B. from PV to Load oder from LOAD to Grid?
Code: Alles auswählen
load tclrega.so
# Daten von SE holen
# ==================
set url "https://monitoringapi.solaredge.com/site/xxxxx/currentPowerFlow.xml?api_key=xxxxx"
exec /usr/bin/wget --no-check-certificate -q -O /usr/local/addons/solaredge/export1.xml $url
set f [open "/usr/local/addons/solaredge/export1.xml"]
set input [read $f]
close $f
# Werte aus XML Datei auslesen
# =============================
regexp "<GRID><currentPower>(.*?)</currentPower></GRID>" $input dummy currentv0 ;
regexp "<LOAD><currentPower>(.*?)</currentPower></LOAD>" $input dummy currentv1 ;
regexp "<PV><currentPower>(.*?)</currentPower></PV>" $input dummy currentv3 ;
# Werte in Variable schreiben
# =============================
set rega_cmd ""
append rega_cmd "var w0 = dom.GetObject('SolarEdge-GRID');"
append rega_cmd "w0.State('$currentv0');"
append rega_cmd "var w1 = dom.GetObject('SolarEdge-LOAD');"
append rega_cmd "w1.State('$currentv1');"
append rega_cmd "var w2 = dom.GetObject('SolarEdge-PV');"
append rega_cmd "w2.State('$currentv2');"
# Daten an die CCU2 übergeben
# =============================
rega_script $rega_cmd