Skript - Bestimmte Zeile aus Variable auslesen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Skript - Bestimmte Zeile aus Variable auslesen

Beitrag von matze-pe » 07.02.2018, 08:50

Hallo,

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
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Skript - Bestimmte Zeile aus Variable auslesen

Beitrag von dtp » 07.02.2018, 15:26

Hab keine Ahnung von tcl-Code. Aber vielleicht helfen Dir meine Zählerskripte für die CCU ja etwas weiter.

Gruß,

Thorsten

PS.: Das Skripting für die CCU1/CCU2 unterscheidet sich aber schon deutlich vom tcl-Code. Du solltest also wissen, was du tust. ;)
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Skript - Bestimmte Zeile aus Variable auslesen

Beitrag von alchy » 07.02.2018, 18:20

Im Klickibuntiprogramm "Dann Script " dürfte ein TCL Script eher schlecht aufgehoben sein. :shock:
Das was du willst per HM Script sollte so ungefähr so gehen:

Code: Alles auswählen

object start = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Stromzaehler_Start");
if(start){ 
string wertvorne = (start.Value()).StrValueByIndex("|",0);
string werthinten = (start.Value()).StrValueByIndex("|",1);
var wertneu =  wertvorne.ToFloat() + 838.8607;
start.State(wertneu#"|"#werthinten);
}
auf zum schnellen Kopieren.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Skript - Bestimmte Zeile aus Variable auslesen

Beitrag von matze-pe » 08.02.2018, 08:03

Super, dankeschöön :)
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“