HomeMatic CCU2 bei ELV bestellen

Howto - Vermeidung von Programmstarts nach Neustart der CCU

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

Werbung


Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitragvon 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) 14537-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) 10933-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, 10:15, insgesamt 6-mal geändert.
dtp
 
Beiträge: 4765
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon 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, 10:22, insgesamt 3-mal geändert.
dtp
 
Beiträge: 4765
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon segelliebhaber » 14.03.2016, 13: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!
segelliebhaber
 
Beiträge: 16
Registriert: 16.01.2015, 22:49

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon JRiemann » 14.03.2016, 13:16

Hallo!
Hier findest Du was Du suchst:
viewtopic.php?f=31&t=24618&hilit=allinclusive+skript

Grüße!
Jörg
Viele Grüße!
Jörg
Benutzeravatar
JRiemann
 
Beiträge: 3155
Registriert: 12.11.2015, 22:05
Wohnort: Aurich

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon dtp » 14.03.2016, 14: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
dtp
 
Beiträge: 4765
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon elabgrando » 18.03.2016, 23: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.
--------------------------------------------------------------------
201 Kanäle in 56 Geräten:

1x HM-LC-Sw1PBU-FM, 5x HM-LC-Sw1-FM, 6x HM-RC-2-PBU-FM, 1x HM-LC-Sw2-FM, 1x HM-SwI-3-FM, 2x HmIP-WRC6, 4x HM-LC-Dim1TPBU-FM, 7x HmIP-SWDO-I, 1x HM-RC-Key4-3, 2x HM-RC-Key4-2, 1x HM-LC-Sw1-Ba-PCB, 1x HmIP-eTRV-2, 1x HM-Sec-Key, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 1x HmIP-FROLL, 7x HM-LC-Bl1PBU-FM, 3x HMIP-PSM, 1x HM-SCI-3-FM, 7x HmIP-BWTH


--------------------------------------------------------------------
Benutzeravatar
elabgrando
 
Beiträge: 43
Registriert: 07.02.2014, 18:02

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon papi » 19.03.2016, 08: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
papi
 
Beiträge: 208
Registriert: 18.12.2013, 09:40
Wohnort: Willich, NRW

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon robbi77 » 19.03.2016, 10: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
Benutzeravatar
robbi77
 
Beiträge: 7582
Registriert: 19.01.2011, 20:15
Wohnort: Landau

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon papi » 19.03.2016, 12:14

Aber bei "Nix" passiert etwas, darum soll er es ja weglassen.
Benutzeravatar
papi
 
Beiträge: 208
Registriert: 18.12.2013, 09:40
Wohnort: Willich, NRW

Re: Howto - Vermeidung von Programmstarts nach Neustart der

Beitragvon elabgrando » 19.03.2016, 13: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.
--------------------------------------------------------------------
201 Kanäle in 56 Geräten:

1x HM-LC-Sw1PBU-FM, 5x HM-LC-Sw1-FM, 6x HM-RC-2-PBU-FM, 1x HM-LC-Sw2-FM, 1x HM-SwI-3-FM, 2x HmIP-WRC6, 4x HM-LC-Dim1TPBU-FM, 7x HmIP-SWDO-I, 1x HM-RC-Key4-3, 2x HM-RC-Key4-2, 1x HM-LC-Sw1-Ba-PCB, 1x HmIP-eTRV-2, 1x HM-Sec-Key, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 1x HmIP-FROLL, 7x HM-LC-Bl1PBU-FM, 3x HMIP-PSM, 1x HM-SCI-3-FM, 7x HmIP-BWTH


--------------------------------------------------------------------
Benutzeravatar
elabgrando
 
Beiträge: 43
Registriert: 07.02.2014, 18:02

Nächste

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

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.