E-Mail Addon: dom.GetObject, Systemvariable Anwesenheit und wie man sie repariert

diverse Zusatzsoftware

Moderator: Co-Administratoren

Antworten
traveller
Beiträge: 1
Registriert: 06.07.2022, 21:51
System: CCU
Hat sich bedankt: 1 Mal

E-Mail Addon: dom.GetObject, Systemvariable Anwesenheit und wie man sie repariert

Beitrag von traveller » 06.07.2022, 22:44

tl;dr
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)
Wenn ich nun "Übernehmen" und dann "TCL-Check" anklicke, erhalte ich im o.a. Log folgendes:
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]
TCL-Check sagt aber im Popup: "Das Tcl-Skript ist okay!"

Versende ich dann eine Mail, die $v1 bis $v4 printed, so sehe ich dort

Code: Alles auswählen

2
0
null
null
Tausche ich

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
Problem schien also eindeutig irgendwo in der Zeile / bei der Systemvariablen "Anwesenheit" zu liegen - dachte ich!

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());
Output bei mir:
${sysVarServiceMessages}
${sysVarAlarmMessages}
Anwesenheit
Mittels des Skripts von u.a. alchy

Code: Alles auswählen

dom.GetObject(41).Name("Servicemeldungen");
dom.GetObject(40).Name("Alarmmeldungen");
konnte ich 40 und 41 reparieren ... und plötzlich geht "magisch" auch "Anwesenheit" im Email-Skript ohne Probleme ...!
(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 ...

Antworten

Zurück zu „Sonstige Addons“