Howto - Vermeidung von Programmstarts nach Neustart der CCU

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

Moderator: Co-Administratoren

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von dtp » 16.08.2015, 11:30

Hallo,

auch wenn es schon einige Male hier im Forum erwähnt wurde, möchte ich noch mal im Rahmen der Tipps & Tricks die Vorgehensweise zusammenfassen, mit der man unbeabsichtigte Programmstarts nach einem Neustart der CCU vermeiden kann. Die nachfolgenden Screenshots entstammen meiner laufenden CCU2-Konfiguration. Daher werde ich diejenigen Systemvariablen, Programme etc, jeweils rot umranden, die man zwingend zur Ausführung benötigt. Auf die übrigen Systemvariablen werde ich ggf. im Rahmen weitere Howtos eingehen.

Vielleicht noch eines vorweg. Um Konflikte bei der Namensgebung für Geräte, Systemvariablen und Programme zu vermeiden, habe ich mir angewöhnt, Systemvariablen immer das Typenkürzel "SV" und Programmen immer das Typenkürzel "PRG" zu verpassen. Geräte erhalten kein weiteres Typenkürzel. Weiterhin vergebe ich Namen stets nach dem Muster "Ort Typenkürzel Beschreibung" bzw. "Ort Gerätebezeichnung".

Und noch ein Hinweis, der sich erst im Laufe dieses Threads herausgestellt hat. Das nachfolgende Programm scheint erst bei Systemen mit einer gewissen Mindestanzahl angemeldeter HM-Komponenten reibungslos zu funktionieren. Dabei ist aber derzeit unklar, wo die Grenze liegt. Eine zuverlässige Funktionsweise dürfte nach Erfahrungsberichten für Systeme mit mindestens 20 bis 30 Komponenten gegeben sein.

Fangen wir also mal an. Wesentlich für die Funktionsweise ist die bereits fest in der CCU integrierte und nicht löschbare Systemvariable "Anwesenheit". Diese wird bei jedem Neustart der CCU immer auf den Wert true gesetzt. Und genau dies machen wir uns nun zunutze.

1. Erzeuge eine neue Systemvariable "Haus SV Anwesenheit" (Logikwert) und definiere wahr = "anwesend"; falsch = "nicht anwesend" oder Entsprechendes.
Haus SV Anwesenheit.jpg
Haus SV Anwesenheit.jpg (22.39 KiB) 40490 mal betrachtet
2. Benenne die alte Systemvariable "Anwesenheit" um in z.B. "CCU SV Status" und definiere wahr = "Neustart"; falsch = "Normalbetrieb" oder Entsprechendes.
CCU SV Status.jpg
CCU SV Status.jpg (18.58 KiB) 36886 mal betrachtet
3. Schaue hinter der Systemvariablen "CCU SV Status" durch Klick auf den Button "Programme" nach, mit welchen Programmen sie verknüpft ist und ändere dann in jedem Programm die dortige Systemvariable "CCU SV Status" in "Haus SV Anwesenheit". Diese Vorgehensweise hat den Vorteil, dass Skripte, in denen die ehemalige Systemvariable "Anwesenheit" abgefragt oder gesetzt wurde, nicht geändert werden müssen.

4. Schreibe ein neues WebUI-Programm "CCU PRG Reboot", das unter "Wenn" die Systemvariable "CCU SV Status" mit dem Zustand "Neustart" prüft und dann die Aktivität "CCU SV Status verzögert um 45 Sekunden Normalbetrieb" durchführt.
CCU PRG Reboot.jpg
Du kannst auch einen kürzeren oder längeren Zeitraum definieren. Solange die Systemvariable "CCU SV Status" aber nicht auf den Wert "Normalbetrieb" gesetzt wurde, erfolgt keine Abarbeitung der entsprechenden Programm-Bedingungen. Ist die Zeitspanne dagegen zu kurz definiert, werden Programme ausgeführt, die beim Start eigentlich nicht ausgeführt werden sollten. Bei mir hat sich eine Zeit von 45 Sekunden als optimal erwiesen.

5. In WebUI-Programmen, die beim Start der CCU nicht mehr ausgeführt werden sollen, füge in JEDE Wenn- bzw. Sonst-Wenn-Abfrage die UND-verknüpfte Zusatzbedingung "CCU SV Status Normalbetrieb nur prüfen" ein. Vermeide auf jeden Fall Sonst-Abfragen am Ende dieser WebUI-Programme, da diese SONST-Zweige nach einem Neustart der CCU definitiv ausgeführt werden. Näheres hierzu im nachfolgenden Posting anhand eines konkrete Beispiels.

6. Optional kannst du dir mit Hilfe eines entsprechenden Skripts eine Push-Nachricht zusenden lassen, die dich über den Neustart der CCU informiert. Das Skript könnte z.B. wie folgt aussehen, wobei es die Besonderheit aufweist, dass in Abhängigkeit der Systemvariablen "Haus SV Anwesenheit" die Priorität der Push-Nachricht geändert und am Ende ein zentrales Programm zum Versenden von Push-Nachrichten aufgerufen wird. Näheres dazu in meiner Signatur. Zudem wird eine weitere Systemvariable "CCU SV Letzter Neustart" mit dem aktuellen Zeitpunkt gefüllt, so dass man auf einfache Weise den letzten Neustart speichern und ggf. im Startbildschirm des WebUI anzeigen kann.

Code: Alles auswählen

! Meldung CCU-Reboot
! Version 1.0, Autor: dtp

! +++++ Variablendeklaration +++++
string message; string now; string present;

! +++++ Sound für Pushover-Nachricht
if(dom.GetObject("CCU SV Pushover Sound")){dom.GetObject("CCU SV Pushover Sound").State("bugle");}

! +++++ Variable present umwandeln für Nachrichtenausgabe +++++
present = dom.GetObject("Haus SV Anwesenheit").Value();
if(present == 1){
  present = "in Anwesenheit.";
  dom.GetObject("CCU SV Push Prio").State("-1");
}
else{
  present = "in ABWESENHEIT.";
  dom.GetObject("CCU SV Push Prio").State("0");
}

! +++++ Erzeugen des Zeitstempels und Setzen der Systemvariablen über den Neustart +++++
now = system.Date("%d.%m.%Y, %H:%M");
dom.GetObject("CCU SV Letzter Neustart").State(now);

! +++++ Erzeugen der Nachricht +++++
message = "CCU neu gestartet";
message = message#"\n"#present;

! +++++ Programm "CCU PRG Push-Nachrichten" ausführen +++++
dom.GetObject("CCU SV Push Text").State(message);
dom.GetObject("CCU PRG Push-Nachrichten").ProgramExecute();
Gruß,

Thorsten
Zuletzt geändert von dtp am 14.03.2018, 09:15, insgesamt 6-mal geändert.
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.

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von dtp » 16.08.2015, 12:32

Hier dann mal ein Beispiel für die Abfrage des CCU-Status in einem Programm zur Anzeige meiner Briefkasteneinwürfe.
EG Briefkasten PRG Post.jpg
Wie man sehen kann, enthält sowohl der Wenn-Zweig, als auch der Sonst-Wenn-Zweig die Statusabfrage. Entsprechend sollte man es bei allen Programmen machen, die bei Neustart der CCU nicht ausgeführt werden sollen. In der Regel dürften dies wirklich nahezu alle Programme sein. Bei mir hat lediglich das im ersten Posting gezeigte Programm "CCU PRG Reboot" eine abweichende Bedingung, nämlich die, dass die Systemvariable "CCU SV Status" den Wert "Neustart" aufweisen muss. Nur dann wird das Programm "CCU PRG Reboot" ausgeführt.

WICHTIG: Wie bereits im Eingangsposting erwähnt, dürfen in den betreffenden WebUI-Programmen keine SONST-Zweige verwendet werden, da diese ansonsten nach einem Neustart immer ausgeführt würden. Ausnahme: man will explizit das Ausführen einer gewissen Aktion nach einem Neustart erzwingen.

Ich hoffe, mit dieser Anleitung kann nun jeder eine entsprechende Statusabfrage in seiner CCU implementieren.

Vielleicht noch ein Hinweis. Wenn ihr Eure Systemvariable "Anwesenheit" zur Statusabfrage nutzen möchtet, aber die neue Systemvariable auch wieder "Anwesenheit" heißen soll, dann müsst ihr zunächst eine temporäre Systemvariable erzeugen, die z.B. den Namen "Anwesenheit tmp" erhält. Anschließend benennt ihr die Systemvariable "Anwesenheit" um in z.B. "CCU Status", um schließlich die Systemvariable "Anwesenheit tmp" in "Anwesenheit" umzubenennen. Ihr müsst also praktisch zwischen den obigen Schritten 2 und 3 noch einen entsprechenden weiteren Schritt einfügen.

Bis dann,

Thorsten
Zuletzt geändert von dtp am 14.03.2018, 09:22, insgesamt 3-mal geändert.
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.

segelliebhaber
Beiträge: 34
Registriert: 16.01.2015, 21:49
System: CCU
Wohnort: Österreich

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von segelliebhaber » 14.03.2016, 12:09

Hallo,
ich sehe, du hast in deinem Programm u.a. die Zeile, dass du die Servicemeldungen automatisch quittieren kannst.
Kannst du mir dafür eine Lösung zukommen lassen?!
Ich würde das auch geren machen.
Vielen Dank!
362 Kanäle in 78 Geräten:
1x HM-WDS40-TH-I, 4x HM-LC-Sw2-FM, 14x HM-Sec-SCo, 6x HM-LC-Bl1-FM, 9x HM-TC-IT-WM-W-EU, 4x HM-LC-Sw1-FM, 1x HM-RC-Sec4-2, 1x HM-LC-Sw1-Pl-2, 1x HM-LC-Sw4-DR, 2x HM-MOD-EM-8, 1x HmIP-MOD-OC8, 1x HmIP-WRC6, 2x HmIP-BSL, 2x HM-ES-PMSw1-Pl, 1x HM-LC-Sw4-Ba-PCB, 1x HM-WDS30-OT2-SM, 1x HM-MOD-Re-8, 1x HmIP-RCV-50, 4x HmIP-FSM, 1x HM-Sec-SD-2, 1x HM-OU-CFM-TW, 1x HM-OU-CM-PCB, 1x HmIP-PMFS, 1x HM-RC-8, 4x VIR-LG-RGBW-DIM, 4x VIR-LG-WHITE-DIM, 1x HM-Sec-SD-2-Team, 1x HM-Sec-SC-2, 1x HM-PB-2-WM55, 1x VIR-HUE-GTW, 1x HM-WDS30-T-O, 1x HM-PB-6-WM55, 1x HM-RC-Dis-H-x-EU, 1x HM-LC-RGBW-WM

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von JRiemann » 14.03.2016, 12:16

Hallo!
Hier findest Du was Du suchst:
http://homematic-forum.de/forum/viewtop ... ive+skript

Grüße!
Jörg
Viele Grüße!
Jörg

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von dtp » 14.03.2016, 13:52

Übrigens, das mit der Systemvariablen "CCU SV Servicemeldungen Auto-Ack" habe ich mittlerweile wieder verworfen. Da es sehr selten vorkommt, dass ich diese Funktion ausschalte, wird sie nunmehr direkt im Allinclusive-Skript gesetzt.

Da ich ja das zentrale Push-Nachrichten-Programm in Verbindung mit Telegram nutze, habe ich auch das Allinclusive-Skript darauf angepasst. Ich nutzte derzeit die zweite Variante.

Gruß,

Thorsten
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.

Benutzeravatar
elabgrando
Beiträge: 46
Registriert: 07.02.2014, 17:02

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von elabgrando » 18.03.2016, 22:36

Hallo zusammen, hallo dtp

danke erst einmal für deine tollen Tips&Tricks

ich habe ein Problem das nach einem Systemneustart das Programm CCU PRG Reboot nicht gestartet wird und somit meine SV
CCU SV Status von rebooted nicht auf Normalbetrieb gestellt wird!

Bild

Ich weiss nicht was ich falsch mache?

Ich habe auch schon mit Verzögerungszeiten bis zu 4 Minuten versucht und beim Script dann immer Anzal Min in Sekunden +5
Ich bekomme auch keine Push Nachricht gesendet!
Klug zu fragen, ist schwieriger, als klug zu antworten.
--------------------------------------------------------------------
286 Kanäle in 70 Geräten:
2x HM-LC-Sw1PBU-FM, 5x HM-LC-Sw1-FM, 2x HMIP-PSM, 8x HM-RC-2-PBU-FM, 1x HM-LC-Sw2-FM, 2x HmIP-WRC6, 1x HM-LC-Sw1-Ba-PCB, 4x HM-LC-Dim1TPBU-FM, 7x HmIP-SWDO-I, 2x HM-RC-Key4-3, 1x HM-RC-Key4-2, 1x HmIP-eTRV-2, 4x VIR-LG-ONOFF, 4x VIR-LG-RGBW-DIM, 1x HM-Sec-Key, 1x HmIP-SPI, 7x HM-LC-Bl1PBU-FM, 1x HmIP-FROLL, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 1x VIR-HUE-GTW, 7x HmIP-BWTH, 2x VIR-LG-DIM, 1x HM-RC-19, 1x HmIP-RCV-50
--------------------------------------------------------------------

Benutzeravatar
papi
Beiträge: 369
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von papi » 19.03.2016, 07:31

Hast Du das Verhalten der Variable mal nach dem Booten beobachtet?

Ggfs. sind die Zustände Deiner Variable vertauscht. Wahr ist "Rebootet", Falsch ist "Normalbetrieb"?
Ich setze voraus, Du hast die einzig dafür taugliche Anwesenheitsvariable dafür zweckentfremdet?

Lasse mal die Bedingung einfach weg!

Benutzeravatar
robbi77
Beiträge: 13771
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 731 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von robbi77 » 19.03.2016, 09:13

Was soll das Programm bewirken?
Bei "nur prüfen" passiert nix.


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

Benutzeravatar
papi
Beiträge: 369
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von papi » 19.03.2016, 11:14

Aber bei "Nix" passiert etwas, darum soll er es ja weglassen.

Benutzeravatar
elabgrando
Beiträge: 46
Registriert: 07.02.2014, 17:02

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitrag von elabgrando » 19.03.2016, 12:31

Hallo Danke euch für die Antworten:
ich habe gestern Abend nach dem Post die CCU2 nochmal neu gestartet! Jetzt wird das Programm ausgeführt und die SV nach 50Sekunden auf Normalbetrieb umgestellt.
Warum das jetzt Plötzlich funktioniert? Ein Wunder.

@papi
beobachtet in wie weit? ich habe immer mal wieder auf der CCu geprüft ob sich der Status in Normalbetrieb ändert. Passierte aber nichts.

ja ich habe die SV angepasst, zustände sind richtig!
Bild
Bild

@robbi77

ich hatte es so verstanden, dass wenn die CCU neu startet die Programme alle durchlaufen. Darum sollte ja die nicht löschbare SV angepasst werde, da diese nach jedem Reboot auf true (rebooted) gesetzt wird. Jetzt wird die CCU neu gestartet also ist die SV CCU SV Status auf rebooted.
Jetzt wird geprüft hat die SV den Status rebooted - dann soll nach 50 Sekunden die SV CCU SV Status auf Normalbetrieb gesetzt werden und im Anschluss bekomme ich noch ne Push Nachricht, dass die CCU neu gestartet wurde.
Das ist ja auch so der Sinn dieses Themas gewesen oder?

@papi ja wenn ich oben keine wenn Abfrage (SV prüfen) würde das Programm auf jedenfall ausgeführt werden. Richtig!

@Herbert_Testmann
Oh ja wunder ich habe die Post's der anderen verstanden ;-) auch als Anfänger was Homematic angeht.

Aber nochmal zum Verständnis
"nur prüfen" bedeutet doch
prüfe ob die SV auf rebooted steht und wenn das der Fall ist, sollen die Bedingungen ausgeführt werden oder nicht?
Klug zu fragen, ist schwieriger, als klug zu antworten.
--------------------------------------------------------------------
286 Kanäle in 70 Geräten:
2x HM-LC-Sw1PBU-FM, 5x HM-LC-Sw1-FM, 2x HMIP-PSM, 8x HM-RC-2-PBU-FM, 1x HM-LC-Sw2-FM, 2x HmIP-WRC6, 1x HM-LC-Sw1-Ba-PCB, 4x HM-LC-Dim1TPBU-FM, 7x HmIP-SWDO-I, 2x HM-RC-Key4-3, 1x HM-RC-Key4-2, 1x HmIP-eTRV-2, 4x VIR-LG-ONOFF, 4x VIR-LG-RGBW-DIM, 1x HM-Sec-Key, 1x HmIP-SPI, 7x HM-LC-Bl1PBU-FM, 1x HmIP-FROLL, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 1x VIR-HUE-GTW, 7x HmIP-BWTH, 2x VIR-LG-DIM, 1x HM-RC-19, 1x HmIP-RCV-50
--------------------------------------------------------------------

Antworten

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