Reboot mit System und Ablauflogik

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

BadenPower

Reboot mit System und Ablauflogik

Beitrag von BadenPower » 27.09.2017, 19:58

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.
Geräteliste CCU-Reboot.jpg
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.
Programm CCU-Rebooter.jpg
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.
Programm CCU-Reboot-Start.jpg
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.
Programm CCU-Reboot-02-Init-GeierLicht.jpg
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:
Programm ActAB-GeierLicht-Helligkeit.jpg
Programm ActSB-GeierLicht-Taglicht.jpg
.
Zuletzt geändert von BadenPower am 27.09.2017, 20:26, insgesamt 2-mal geändert.

BadenPower

Reboot mit System und Ablauflogik

Beitrag von BadenPower » 27.09.2017, 19:59

Screenshots Bootprogramme 01 bis 10
.
Dateianhänge
Programm CCU-Reboot-01-DeviceId.jpg
Programm CCU-Reboot-02-InitVar.jpg
Programm CCU-Reboot-03-Config.jpg
Programm CCU-Reboot-04.jpg
Programm CCU-Reboot-05.jpg
Programm CCU-Reboot-06.jpg
Programm CCU-Reboot-07.jpg
Programm CCU-Reboot-08.jpg
Programm CCU-Reboot-09.jpg
Programm CCU-Reboot-10-Finish.jpg

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: Reboot mit System und Ablauflogik

Beitrag von nimmnenkeks » 27.09.2017, 22:05

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 :mrgreen:

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

BadenPower

Re: Reboot mit System und Ablauflogik

Beitrag von BadenPower » 27.09.2017, 22:28

nimmnenkeks hat geschrieben:- Auslöser, welche keine eigentliche Programm-Bedingung sind können verwendet werden
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.
nimmnenkeks hat geschrieben: - einzele SONST-WENN-Abschnitte können auf einfache Weise temporär deaktiviert werden, ohne das gesamte Programm zu deaktivieren
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
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: Reboot mit System und Ablauflogik

Beitrag von nimmnenkeks » 27.09.2017, 23:33

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.
Diese Lösung würde "Vieles" einfacher machen, wenn man (wie ich) noch Skript-Noob ist.
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...
BadenPower 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.
.
Danke :!:

BG Keks

Gluehwurm
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

Beitrag von Gluehwurm » 27.09.2017, 23:39

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

Benutzeravatar
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

Beitrag von funkleuchtturm » 28.09.2017, 10:00

... gut, daß ich das nicht brauche :mrgreen:
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

Benutzeravatar
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

Beitrag von Samson71 » 28.09.2017, 10:22

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.
Gruß, Markus

BadenPower

Re: Reboot mit System und Ablauflogik

Beitrag von BadenPower » 28.09.2017, 11:05

Samson71 hat geschrieben:Kann ich problemlos auch die Tasten dafür verwenden?
Wenn diese Tasten in einem Programm "gedrückt" werden können und in Programmen der Tastendruck ausgewertet wir, dann ja.


Hier einmal ein Programm, welches zusätzliche Trigger hat, die in den Programmbedingungen keine Rolle spielen.
ActSVB-Rollos-Öffnen-Wecken-Zeittrigger.jpg
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.
.

dtp
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

Beitrag von dtp » 28.09.2017, 11:08

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. 8)
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.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“