[Hinweis] Prüfen ob Systemvariable leer ist im Script

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

pke
Beiträge: 22
Registriert: 06.08.2019, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: [Hinweis] Prüfen ob Systemvariable leer ist im Script

Beitrag von pke » 17.08.2019, 23:10

Xel66 hat geschrieben:
17.08.2019, 01:54
pke hat geschrieben:
16.08.2019, 23:55
Warum sollte dieses Verhalten von Systemvariablen eigentlich sinnvoll sein?
Wieso stellt sich diese Frage überhaupt? Wird eine Systemvariable erstmalig angelegt, dann hat sie den Status "???". Ist sie erstmalig beschrieben und anschließend geleert, ist sie eben leer und weist "nie" wieder den Status "???" auf. Insofern ist dieses Verhalten in der Praxis absolut irrelevant und braucht eigentlich nicht betrachtet zu werden.

Gruß Xel66
Wie prüfst Du denn in der Regel ab, ob etwas in einer String-Variable gesetzt ist? Denn wie schon geschrieben mittels

Code: Alles auswählen

if (sysvar.Value() != "") 
würde der Zweig bei einer nicht initalisierten Variable ausgeführt werden.
Bei

Code: Alles auswählen

if (sysvar.Value())
hingegen nicht.
Und dieses Verhalten ist immer genau dann relevant, wenn ich mein Script davon abhängig machen will, dass in einer Variable auch etwas sinnvolles drinsteht (eben nicht ??? und nicht "").
Ich weiss zwar nicht, wie Ihr scripted, aber ich kenne so ein Verhalten aus keiner anderen (Script) Sprache.

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: [Hinweis] Prüfen ob Systemvariable leer ist im Script

Beitrag von Xel66 » 18.08.2019, 11:14

Black hat geschrieben:
17.08.2019, 20:47
Ich weiss dann schon dass das die 3 fragezeichen ergibt.
Mein diesbezügliche Kommentar war auch nicht an Dich gerichtet. :-)
pke hat geschrieben:
17.08.2019, 23:10
Wie prüfst Du denn in der Regel ab, ob etwas in einer String-Variable gesetzt ist?
Gar nicht, da ich eine Negativlogik für diesen Fall benutze. Ich triggere mehrere Scripts über die Aktualisierung der jeweils zugehörigen Stringvariable (Mail-, Pushversand und TTS-Ausgabe etc.). Bei mir steht die Systemvariable im WENN als Trigger und ich prüfe auf einen Inhalt, der entweder für die weitere Behandlung irrelevant ist ("") oder einen Inhalt besitzt, der eine weitere Abarbeitung unnötig macht ("leer"). Die eigentliche Aktion hinterlege ich dann im SONST. Somit erfolgt eine Ausführung des Scripts immer, wenn die vorhergehende Prüfung ein FALSCH ergibt (und beim Systemstart, was ich aber im Script selbst abfange). So erübrigt sich eine diesbezügliche Fehlerbehandlung im Script von vornherein.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

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