Reboot mit System und Ablauflogik
Moderator: Co-Administratoren
Reboot mit System und Ablauflogik
Reboot in Reih' und Glied:
Da ein Interesse besteht, stelle ich Euch einmal mein System vor, bei dem nach einem Neustart der CCU, in Programmen nur Aktionen ausführt werden, welche auch ausgeführt werden müssen und welches dafür sorgt, dass Programme in einer vorbestimmten Reihenfolge abgearbeitet werden.
Dieses System
- verhindert ungewollte Programmaktionen beim Neustart
- sorgt für definierte Ablaufreihenfolge von Programmen beim Neustart
- bietet die Möglichkeit Variablen beim Neustart zu initialisieren
- Auslöser, welche keine eigentliche Programm-Bedingung sind können verwendet werden
- einzele SONST-WENN-Abschnitte können auf einfache Weise temporär deaktiviert werden, ohne das gesamte Programm zu deaktivieren
- übersichtliche Anordnung aller Programmauslöser, da alle in einem Abschnitt
- durch die zeitlichen Ablaufverzögerungen werden zusätzlich die möglichen Funkkollisionen beim Neustart erheblich reduziert
Zuerst benötigen wir einige Systemvariablen:
"SYS True" => Logik => false = false / true = true
"SYS False" => Logik => false = false / true = true
"SYS-CCU-Reboot" => umbenannte originale Anwesenheitsvariable (ID 950)
"SYS-RebootSequenz" => Logik => false = beendet / true = gestartet
"SYS-RebootSequenz-Id" => Zahl => -1 bis 10
die nächsten zwei Systemvariablen sind optional und dienen dazu im Systemprotokoll die Programmabläufe zu dokumentieren, wenn diese Systemvariablen auf protokolliert gesetzt sind:
"SYS-Protokoll" Zeichenkette
"SYS-Protokoll-Reboot" Zeichenkette
und können durch ein Skript ersetzt werden, welches zusätzlich noch den Auslöser mitloggt.
Um die sequenzielle Abarbeitung von Programmen zu erreichen benötigen wir noch einige der virtuellen Tasten der CCU.
In meinem Bootsystem arbeite ich mit 10 Abschnitten und verwende daher 11 virtuelle Tasten.
Jetzt brauchen wir noch die speziellen "BOOT"-Programme:
Das 1. Programm (CCU-Rebooter) ist das einzige Programm, welches direkt nach einem Neustart der CCU Aktionen ausführt. In diesem Programm werden die BOOT-Systemvariablen initial gesetzt und durch das verzögerte drücken der virtuellen Taste 11 die Boot-Sequenz ausgelöst.
Das nächste Programm (CCU-Reboot-Start) wird durch den kurzen Tastendruck der virtuellen Taste 11 ausgelöst und löst einen langen Tastendruck der VT11, sowie um 30 Sekunden verzögert einen kurzen Tastendruck auf VT01 aus. Gleichzeitig wird die Systemvariable "SYS-RebbotSequenz" auf gestartet und die "SYS-RebbotSequenzId" auf 0 gesetzt.
Danach folgen die 10 (je nach Anzahl der Arbeitschritte) weiteren Bootprogramme nach immer dem gleichen Schema
Bootprogramm X wird ausgelöst durch VT(X)-kurz und löst seinerseits VT(X)-lang und verzögert VT-(X+1)-kurz aus und setzt entsprechend die Sequenz-ID.
Screenshots imnächsten Beitrag, da hier nur 10 Bilder angehängt werden können.
Neben den reinen Boot-Programmen kann man auch noch "Nebenprogramme" anlegen, welche durch den langen Tastendruck ausgelöst werden. Durch die Auswahl der virtuellen Taste kann man eine gezielte Ablaufreihenfolge erreichen. 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 ein Interesse besteht, stelle ich Euch einmal mein System vor, bei dem nach einem Neustart der CCU, in Programmen nur Aktionen ausführt werden, welche auch ausgeführt werden müssen und welches dafür sorgt, dass Programme in einer vorbestimmten Reihenfolge abgearbeitet werden.
Dieses System
- verhindert ungewollte Programmaktionen beim Neustart
- sorgt für definierte Ablaufreihenfolge von Programmen beim Neustart
- bietet die Möglichkeit Variablen beim Neustart zu initialisieren
- Auslöser, welche keine eigentliche Programm-Bedingung sind können verwendet werden
- einzele SONST-WENN-Abschnitte können auf einfache Weise temporär deaktiviert werden, ohne das gesamte Programm zu deaktivieren
- übersichtliche Anordnung aller Programmauslöser, da alle in einem Abschnitt
- durch die zeitlichen Ablaufverzögerungen werden zusätzlich die möglichen Funkkollisionen beim Neustart erheblich reduziert
Zuerst benötigen wir einige Systemvariablen:
"SYS True" => Logik => false = false / true = true
"SYS False" => Logik => false = false / true = true
"SYS-CCU-Reboot" => umbenannte originale Anwesenheitsvariable (ID 950)
"SYS-RebootSequenz" => Logik => false = beendet / true = gestartet
"SYS-RebootSequenz-Id" => Zahl => -1 bis 10
die nächsten zwei Systemvariablen sind optional und dienen dazu im Systemprotokoll die Programmabläufe zu dokumentieren, wenn diese Systemvariablen auf protokolliert gesetzt sind:
"SYS-Protokoll" Zeichenkette
"SYS-Protokoll-Reboot" Zeichenkette
und können durch ein Skript ersetzt werden, welches zusätzlich noch den Auslöser mitloggt.
Um die sequenzielle Abarbeitung von Programmen zu erreichen benötigen wir noch einige der virtuellen Tasten der CCU.
In meinem Bootsystem arbeite ich mit 10 Abschnitten und verwende daher 11 virtuelle Tasten.
Jetzt brauchen wir noch die speziellen "BOOT"-Programme:
Das 1. Programm (CCU-Rebooter) ist das einzige Programm, welches direkt nach einem Neustart der CCU Aktionen ausführt. In diesem Programm werden die BOOT-Systemvariablen initial gesetzt und durch das verzögerte drücken der virtuellen Taste 11 die Boot-Sequenz ausgelöst.
Das nächste Programm (CCU-Reboot-Start) wird durch den kurzen Tastendruck der virtuellen Taste 11 ausgelöst und löst einen langen Tastendruck der VT11, sowie um 30 Sekunden verzögert einen kurzen Tastendruck auf VT01 aus. Gleichzeitig wird die Systemvariable "SYS-RebbotSequenz" auf gestartet und die "SYS-RebbotSequenzId" auf 0 gesetzt.
Danach folgen die 10 (je nach Anzahl der Arbeitschritte) weiteren Bootprogramme nach immer dem gleichen Schema
Bootprogramm X wird ausgelöst durch VT(X)-kurz und löst seinerseits VT(X)-lang und verzögert VT-(X+1)-kurz aus und setzt entsprechend die Sequenz-ID.
Screenshots imnächsten Beitrag, da hier nur 10 Bilder angehängt werden können.
Neben den reinen Boot-Programmen kann man auch noch "Nebenprogramme" anlegen, welche durch den langen Tastendruck ausgelöst werden. Durch die Auswahl der virtuellen Taste kann man eine gezielte Ablaufreihenfolge erreichen. 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: .
Zuletzt geändert von BadenPower am 27.09.2017, 20:26, insgesamt 2-mal geändert.
-
- Beiträge: 453
- Registriert: 30.11.2016, 20:24
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 19 Mal
Re: Reboot mit System und Ablauflogik
Vielen Dank für die Darstellung Deiner
Reboot-Umsetzung
Die Umsetzung in Ablaufblöcke für Programme kannte ich bis letze Woche noch gar nicht.
Somit kann man ja wunderbar den Bootzustand über SysVars definieren/Skripte laufen lassen auf welche dann die Programme weiter triggern (u.v.m was ich gar nicht auf dem Schirm habe )
Ich habe ja schon bei der Rollladensteuerung gemerkt, wie nützlich Wertelisten (statt Logik-Variablen) sein können, aber diese einzusetzen um Zustände beim Reboot zu definieren, wäre mir niemals eingefallen.
Klasse Input
Endlich weniger "Rollladen-Samba" beim Reboot
Das mit:
- Auslöser, welche keine eigentliche Programm-Bedingung sind können verwendet werden
- einzele SONST-WENN-Abschnitte können auf einfache Weise temporär deaktiviert werden, ohne das gesamte Programm zu deaktivieren
klingt auch klasse, aber muss ich erst mal raffen (im Moment zu viele Nebenbaustellen).
Beste Grüße
Keks
Reboot-Umsetzung
Die Umsetzung in Ablaufblöcke für Programme kannte ich bis letze Woche noch gar nicht.
Somit kann man ja wunderbar den Bootzustand über SysVars definieren/Skripte laufen lassen auf welche dann die Programme weiter triggern (u.v.m was ich gar nicht auf dem Schirm habe )
Ich habe ja schon bei der Rollladensteuerung gemerkt, wie nützlich Wertelisten (statt Logik-Variablen) sein können, aber diese einzusetzen um Zustände beim Reboot zu definieren, wäre mir niemals eingefallen.
Klasse Input
Endlich weniger "Rollladen-Samba" beim Reboot
Das mit:
- Auslöser, welche keine eigentliche Programm-Bedingung sind können verwendet werden
- einzele SONST-WENN-Abschnitte können auf einfache Weise temporär deaktiviert werden, ohne das gesamte Programm zu deaktivieren
klingt auch klasse, aber muss ich erst mal raffen (im Moment zu viele Nebenbaustellen).
Beste Grüße
Keks
Re: Reboot mit System und Ablauflogik
Zum Beipiel eine Trigger-Variable ähnlich aufgebaut wie eine virtuelle Taste.nimmnenkeks hat geschrieben:- Auslöser, welche keine eigentliche Programm-Bedingung sind können verwendet werden
Also zum Beispiel ein Programm, welches immer auslösen soll, wenn eine Systemvariable ändert.
Beispiel Screenshot poste ich morgen.
Da alle SONST-WENN-Bedinungen an erster Stelle die Systemvariable "SYS True" auf true prüfen kannst Du dann einfach dort false einstellen und der zugehörige DANN-Abschnitt wird nie ausgeführt, da nach dem Reboot die Systemvariable "SYS True" immer true ist.nimmnenkeks hat geschrieben: - einzele SONST-WENN-Abschnitte können auf einfache Weise temporär deaktiviert werden, ohne das gesamte Programm zu deaktivieren
.
-
- Beiträge: 453
- Registriert: 30.11.2016, 20:24
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 19 Mal
Re: Reboot mit System und Ablauflogik
Diese Lösung würde "Vieles" einfacher machen, wenn man (wie ich) noch Skript-Noob ist.BadenPower hat geschrieben: Zum Beipiel eine Trigger-Variable ähnlich aufgebaut wie eine virtuelle Taste.
Also zum Beispiel ein Programm, welches immer auslösen soll, wenn eine Systemvariable ändert.
Beispiel Screenshot poste ich morgen.
Da bin ich sehr drauf gespannt
Wie man mit einem Satz etwaige Mi(s)tverständnissaus der Welt schaffen kann.... oder zum besseren Versändniss für Noobs (wie mich) beiträgt...
DankeBadenPower hat geschrieben: Da alle SONST-WENN-Bedinungen an erster Stelle die Systemvariable "SYS True" auf true prüfen kannst Du dann einfach dort false einstellen und der zugehörige DANN-Abschnitt wird nie ausgeführt, da nach dem Reboot die Systemvariable "SYS True" immer true ist.
.
BG Keks
-
- Beiträge: 12434
- Registriert: 19.03.2014, 00:37
- System: in Planung
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 380 Mal
Re: Reboot mit System und Ablauflogik
Danke für die Veröffentlichung, muss ich erst mal in Ruhe durcharbeiten und schauen, wie ich das für mich umsetze. Noch hat es einige .
Gruß
Bruno
Gruß
Bruno
- funkleuchtturm
- Beiträge: 2365
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 357 Mal
- Kontaktdaten:
Re: Reboot mit System und Ablauflogik
... gut, daß ich das nicht brauche
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
- Samson71
- Beiträge: 1513
- Registriert: 12.02.2014, 20:51
- Wohnort: Niedersachsen
- Hat sich bedankt: 51 Mal
- Danksagung erhalten: 185 Mal
Re: Reboot mit System und Ablauflogik
Danke auch von mir. Mir geht es ähnlich wie Bruno. In Ruhe Durcharbeiten und Verstehen.
Eine grundsätzliche Frage zur Verwendung der virtuellen Tasten:
Ich nutze diese bereits recht intensiv um z.B. Programme verzögert aus anderen Programmen heraus zu starten. Da sind 11 weitere die belegt werden doch eine ganze Menge.
Meine CCU2 hat auch 50 virtuelle Tasten in einer drahtgebundenen FB, obwohl ich kein wired (Gateway) im Einsatz habe. Kann ich problemlos auch die Tasten dafür verwenden? Aus einem Programm heraus lassen sich diese aktuell als Trigger nutzen. Sie sind aber nicht über die Gerätebedienung nutzbar, bzw. werden dort (anders als die virtuelle drahtlose FB) nicht angezeigt und stehen auch nicht als direkter Trigger z.B. per App zur Verfügung.
Eine grundsätzliche Frage zur Verwendung der virtuellen Tasten:
Ich nutze diese bereits recht intensiv um z.B. Programme verzögert aus anderen Programmen heraus zu starten. Da sind 11 weitere die belegt werden doch eine ganze Menge.
Meine CCU2 hat auch 50 virtuelle Tasten in einer drahtgebundenen FB, obwohl ich kein wired (Gateway) im Einsatz habe. Kann ich problemlos auch die Tasten dafür verwenden? Aus einem Programm heraus lassen sich diese aktuell als Trigger nutzen. Sie sind aber nicht über die Gerätebedienung nutzbar, bzw. werden dort (anders als die virtuelle drahtlose FB) nicht angezeigt und stehen auch nicht als direkter Trigger z.B. per App zur Verfügung.
Gruß, Markus
Re: Reboot mit System und Ablauflogik
Wenn diese Tasten in einem Programm "gedrückt" werden können und in Programmen der Tastendruck ausgewertet wir, dann ja.Samson71 hat geschrieben:Kann ich problemlos auch die Tasten dafür verwenden?
Hier einmal ein Programm, welches zusätzliche Trigger hat, die in den Programmbedingungen keine Rolle spielen.
Die beiden Trigger-Variablen "CON-Rollos-Öffnen-Weckzeit-Manuell" und "CON-Rollos-Öffnen-Weckzeit-Einmalig" lösen das Programm aus, wenn sie aktuallisiert werden, sind aber nicht Teil der Bedingung, da deren Wert für das Auslösen des DANN-Abschnittes keine Rolle spielt, bzw. das Skript immer wenn die anderen Bedingungen zutreffen ausgeführt werden muss, egal welchen Wert diese 2 Variablen haben aber auch zusätzlich auslösen muss, wenn sich der Wert einer der zwei Variablen ändert/aktuallisiert wird, denn das enthaltene Skript sorgt für das Öffnen der Rollos zu dem Zeitpunkt, welcher in einer der beiden Systemvariablen hinterlegt ist.
Es kann ja sein, dass man ausser der Reihe einmal unter der Woche länger schlafen möchte oder früher aufstehen muss. So kann man dann in der rasch die gewünschte Uhrzeit setzen, ohne ein Programm ändern zu müssen.
.
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Reboot mit System und Ablauflogik
Sehr schöne Lösung mit vielen interessanten Aspekten. Für mich persönlich sehe ich zumindest derzeit zwar keinen Bedarf, da es mir genügt, die Ausführung sämtlicher Programme (außer dem CCU-Reboot-Programm) mit all ihren Zweigen beim Start zu unterdrücken. Trotzdem kann es durchaus spannend sein, einzelne Programme und/oder Zweige ja nach Szenario und Bedarf beim Start der CCU ausführbar zu machen.
Gruß,
Thorsten
PS.: BadenPower, Du solltest Deine Signatur anpassen. Und das ist gut so.
Gruß,
Thorsten
PS.: BadenPower, Du solltest Deine Signatur anpassen. Und das ist gut so.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.