Hier das Beispiel von Badenpower, welche vollkommen OHNE Skript auskommt und ausschließlich mit UI-Mitteln umsetzbar ist:
Reboot mit System und Ablauflogik
viewtopic.php?f=31&t=39187&hilit=reboot+in+reih+und
Während des Reboots können entsprechende Werte der SysVars gesetzt werden, wie z.B. Fensterkontakte/Drehgriffsensoren u.v.m.
Dazu die SysVars (wie Roland schon beschrieben hat) als Werteliste anlegen.
Bsp. für SysVars:
TFK (Tür-/Fensterkontakt) -> unbekannt;geschlossen;geöffnet
TFG (Fenstergriffdrejsensor) -> unbekannt;geschlossen;gekippt;offen
Nun legt man für jeden TFK/TFG ein UI-Programm an, welches die Zustände der SysVar ändert (oder macht es per Skript).
Die SysVar als Trigger/Prüfung in Programmen zu den Sensoren nutzt man dabei die Zustände
OHNE den Zustand
"unbekannt (State 0)".
Diese SysVars packt man in eine gewünschte Reboot-Sequenz (hier als Bsp. CCU-Reboot-02-Init-Geierlicht).
die SysVars der Tür-/Fensterkontekt(e) und setzt sie der Reihe nach auf "unbekannt".
Je nach Bedarf auch andere SysVars für den Täglichen Betrieb.
Da der Zustand/Wert "unbekannt" kein Auslöser/Trigger oder Prüfungspunkt ist, reagieren die Programme darauf nicht.
Ebenfalls kann man über den Wert der "SYS-RebootSequenz-Id" festlegen, wann Programme überhaupt erst reagieren dürfen.
Da die Reboot-Sequenz in o.g. Beitrag bei "10" (oder je nach Anwendungsfall höher) endet, nimmt man eben für alle Programme (welche erst nach abgeschlossener Reboot-Sequenz laufen sollen) im
"Wenn"
den Systemzustand "SYS-RebootSequenz-Id" -> den Wert: -kleiner 10- (Beispiel)
Die Nutzung der Reboot-Sequenz dient nicht nur einer vordefinierten Abarbeitung von Programmen, sondern auch einer Möglichkeit "mal eben" ALLE Programme zu deaktivieren, die nach obigem Beispiel aufgebaut sind indem man einfach die SysVar " true" auf false stellt (z.B. mit virtueller Taste).
Der Programmaufbau (siehe auch genau in den Fred von Badenpower) ist so gestaltet, das man die Auslöser/Trigger im EXEC-Bereich hat.
Somit kann man über die weitern "Sonst, wenn" die weiteren Bedingungen gestalten.
Auszug aus dem Beitrag Seite 1:
Alle andern Programme (ausser die, welche nur manuell gestartet werden und daher deaktiviert sind) sind in 3 Teilbereiche gegliedert.
Der WENN-Abschnitt (Header-Bereich) jedes Programme enthält als Bedingungen einige Systemvariablen in einer bestimmten Konstellation, welche dafür sorgt, dass im Normalbetrieb dieser Abschnitt nie ausgeführt wird. Und beim Neustart eben nur notwendige Programme in einer bestimmten Reihenfolge Tätigkeiten ausführen.
Der 1. SONST-WENN-Abschnitt (Exec-Bereich) enthält alle Programmauslöser und am Anfang des Bereichs immer 2 mal die Systemvariable "SYS True". Alle Auslöser sind hierbei UND-verknüpft. Das Prüfen der Systemvariable "SYS True" auf die Werte true und false und die UND-Verknüpfungen sorgen dafür, dass der dazugehörige DANN-Abschnitt auch nie ausgeführt werden kann.
Ab dem 2. SONST-WENN-Abschnitt folgt der eigentliche Arbeitsbereich. Hier werden die Bedingungen nur noch geprüft.
Selbstverständlich können auch die "normalen" Programme in die Abarbeitungsreihenfolge beim Start eingebunden werden:
Da bei einem Reboot ALLE aktiven Programme getriggert werden ist bis zur Beendigung der Reboot-Sequenz eine Abarbeitung der Programme ausgeschlossen, bis die Reboot-Sequenz-Id "10" erreicht ist.
Somit werden bei veralteten SysVar-Werten auch keine Programme ausgeführt, wenn der veraltete SysVar-Wert ein Programm triggern würde.
Man muss auch nicht in jeden "Sonst, wenn" Zweig die SysVar für den Reboot einsetzen, 1x im "Wenn" eingesetzt reicht.
Hier ein sehr nützlicher Hinweis zur Programmgestaltung:
viewtopic.php?f=31&t=39187&hilit=reboot ... nd#p386519
In der Problemstellung mit den TFK's ändert sich der Zustand der SysVars nach dem Reboot erst bei manueller Auslösung (auf entsprechenden SysVar-Wert), oder nach Übermittlung der zyklischen Statusmeldung (sofern der Sender das macht).
Bei Programmen, welche z.B. Rollladen steuern und die Fenster-/Türstellung berücksichtigen ist das ebenfalls nützlich.
Hat man einen unbemerkten Reboot/Ausfall und das Fenster/Tür wurde während der Downtime geöffnet stimmen SysVar-Werte (geöffnet/geschlossen) halt nicht mehr... und schwuppps ausgesperrt, Beule o.ä.
..