Das Verhalten des tcl-Skriptes im "E-Mail CCU Addon" verwirrte mich etwas - der Abruf der Logikwert-Systemvariablen "Anwesenheit" machte komische Dinge. Erst eine Reparatur der Systemvariablen "Alarmmeldungen" und "Servicemeldungen" stellte das erwartete Verhalten her.
Im Einzelnen:
Umgebung:
CCU3 (3.63.9) (nach Umstieg von CCU2 mit einem CCU2-Backup initialisiert)
CUxD 2.9.3
E-Mail CCU Addon 1.7.4
Ich kann aus dem E-Mail-Addon erfolgreich E-Mails versenden, der TCL-Check im E-Mail Addon sagt mir "alles okay", aber wenn ich in /var/log/messages schaue, bekomme ich Fehlermeldungen, und Werte werden bei Ausführung nicht korrekt abgerufen:
Skript im TCL-Reiter des Email-Plugins:
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var v1 = (dom.GetObject("Hz_Prg_Bad")).Value();
var v2 = (dom.GetObject("Test1")).Value();
var v3 = (dom.GetObject("Anwesenheit")).Value();
var v4 = (dom.GetObject("TestBoolean")).Value();
} ]
set v1 $values(v1)
set v2 $values(v2)
set v3 $values(v3)
set v4 $values(v4)
TCL-Check sagt aber im Popup: "Das Tcl-Skript ist okay!"Jul 6 21:47:33 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: var v1 = (dom.GetObject("Hz_Prg_Bad")).Value(); var v2 = (dom.GetObject("Test1")).Value(); var v3 = (dom.GetObject("Anwesenheit")).Value(); var v4 = (dom.GetObject("TestBoolean")).Value(); [ExecError():iseESPexec.cpp:12883]
Versende ich dann eine Mail, die $v1 bis $v4 printed, so sehe ich dort
Code: Alles auswählen
2
0
null
null
var v3 = (dom.GetObject("Anwesenheit")).Value();
gegen
var v3 = "HelloWorld";
aus, so erhalte ich in der Mail
Code: Alles auswählen
2
0
HelloWorld
true
Sowohl "Anwesenheit" als auch "TestBoolean" sind aber beides Systemvariablen vom Typ "Logikwert" die unter
"Status und Bedienung / Systemvariable" in der Web GUI der CCU3 angezeigt werden:
Anwesenheit mit "wahr = anwesend", "falsch = nicht anwesend" und TestBoolean mit "wahr = ist wahr", "falsch = ist falsch".
Weitergeschaut im Forum bin ich auf folgendes Skript gestoßen:
Code: Alles auswählen
WriteLine(dom.GetObject(41).Name());
WriteLine(dom.GetObject(40).Name());
WriteLine(dom.GetObject(950).Name());
Mittels des Skripts von u.a. alchy${sysVarServiceMessages}
${sysVarAlarmMessages}
Anwesenheit
Code: Alles auswählen
dom.GetObject(41).Name("Servicemeldungen");
dom.GetObject(40).Name("Alarmmeldungen");
(Anmerkung: "${sysVarAlarmMessages}" ging im Email-TCL-Skripts vor der Umbenennung auch)
Strange wo da der Zusammenhang konkret liegt, aber vllt. hilft es anderen bei ähnlichen Problemen (genau dieses Szenario habe ich jedenfalls im Forum nicht gefunden vorher).
Meine CCU3 ist übrigens initial "betankt" mit einem Backup der CCU2 - vllt. ist das der Ursprung allen Übels ...