ich tüftel schon länger an einem Skript, dass mir eine Systemvariabel zerlegt und ich einen bestimmten Teil auslese und verändert wieder zurück schreibe.
Hintergrund, mein vorhandenes Stromzähler Skript läuft ab und zu über, und ich möchte mir dafür einen Workaround bauen und den Fehler abfangen, sobald der Wert negativ ist.
Dazu muss ich der Variabel "Stromzaehler_Start" (vor dem Zeichen | ) den Wert 838.8607 dazu addieren:
Variabel: Stromzaehler_Start = "123456.78|0"
HM-Programm:
Wenn "Stromverbrauch_heute < 0 kW"
Dann Skript:
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var start=dom.GetObject('Stromzaehler_Start').Variable();
}]
set start $values(start);
# Werte aus Variabel auslesen
# =============================
regexp "(.*?)|" $input dummy wertvorne ;
regexp "|(.*?)" $input dummy werthinten ;
set wertneu [expr {$wertvorne + 838.8607}]
# Werte in Variabel schreiben
# =============================
set rega_cmd ""
append rega_cmd "var w0 = dom.GetObject('Stromzaehler_Start_neu');"
append rega_cmd "w0.State('$wertneu|$werthinten');"
rega_script $rega_cmd
Ich habe es auch getestet, das Skript als .tcl Datei direkt auf der CCU2 auszuführen, klappt aber auch nicht.
Hat einer eine Idee
Gruß
Matthias