Programme beim Start der CCU nicht ausführen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: Programme beim Start der CCU nicht ausführen

Beitrag von Tobias78 » 14.09.2012, 06:18

Das Start_Ctrl Skript läuft bei mir im Hintergrund seit vielen Monaten absolut zuverlässig und fehlerfrei. Instabilität konnte ich nicht feststellen.
Vorher hatte ich es auch per SysVar Variante versucht, das war leider nicht zielführend (Reboots sind ja meist nur fällig, wenn die CCU bereits nicht mehr richtig funktioniert / nicht erreichbar ist...)
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: AW: Programme beim Start der CCU nicht ausführen

Beitrag von JPS » 14.09.2012, 06:46

DrTob hat geschrieben:
Marv21 hat geschrieben: Kann ich die Fensterkontake nicht beim Neustart abfragen?
Oder wissen diese selber nicht in welchen Zustand sie sich befinden?
Nein, kann man nicht. Die TFKs sind, um Strom zu sparen, nicht immer auf Empfang und können so nicht aktiv von Seiten der CCU abgefragt werden. Sie senden ihren Status lediglich bei einer Änderung.
Das stimmt natürlich, lässt sich aber umgehen, wenn man den Status des jeweiligen TFK bei Änderung in eine SysVar schreibt und diese dann abfragt, diesen Weg hatte ich gemeint.
Herbert hat das ja oben auch schon alles beschrieben.

Gesendet von meinem HTC One X mit Tapatalk 2
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Marv21
Beiträge: 131
Registriert: 07.11.2011, 23:07
Hat sich bedankt: 4 Mal

Re: Programme beim Start der CCU nicht ausführen

Beitrag von Marv21 » 14.09.2012, 09:00

Ja der weg wäre möglich :)
Hab mich jetzt erst mal für start-cntrl (solange bis ich probleme damit bekomme ;) ) entschieden.
Batteriestand auf Mediola startseite und HM Startseite + Programm das bei niedrigem stand eine Email schreibt. So sollte ich für unerwünschten Ausfällen mehr oder weniger geschützt sein...

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Programme beim Start der CCU nicht ausführen

Beitrag von anli » 15.09.2012, 08:31

DrTob hat geschrieben:
Marv21 hat geschrieben: Kann ich die Fensterkontake nicht beim Neustart abfragen?
Oder wissen diese selber nicht in welchen Zustand sie sich befinden?
Nein, kann man nicht. Die TFKs sind, um Strom zu sparen, nicht immer auf Empfang und können so nicht aktiv von Seiten der CCU abgefragt werden. Sie senden ihren Status lediglich bei einer Änderung.
Oder einmal am Tag, wenn man zyklische Statusmeldng aktiviert hat, d. h. nach 24 Stunden ist die Anzeige wieder akkurat ;)
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

dzvo
Beiträge: 131
Registriert: 17.07.2012, 18:15

Re: Programme beim Start der CCU nicht ausführen

Beitrag von dzvo » 17.09.2012, 19:46

Hallo in die Runde,

ich habe da ein Ansatz der bei mir auch ganz gut funktioniert. Da mich das Ausführen von einigen Programmen und deren Hinweis aufs IPhone auch nerft habe ich es folgender maßen gelöst.

Ich habe ein Programm 00 Initialisierung welches ohne „Wenn“ Bedingung beim Start einmalig ausgeführt wird.
In diesem rufe ich unter anderem auf:

Code: Alles auswählen

!letzte Ausfuerung von 00 Initialisierung 
time letzterstart = dom.GetObject("00 Initialisierungen").ProgramLastExecuteTime();
dom.GetObject("Neustart").State(letzterstart);
In allen Programmen / Skripten habe ich dann eine Abfrage ob der System Start X Sekunden her ist.

Code: Alles auswählen

integer time = system.Date("%Y-%m-%d %H:%M:%S").ToTime().ToInteger();
integer letzter = dom.GetObject("Neustart").Value().ToTime().ToInteger();

integer dif = time - letzter;

time zeit = dif.ToTime();

if (dif > 240 ) {

! Hier kommt das Script rein…

} !Zeitabfrage Neustart
Funktioniert bei mir soweit ohne Probleme.

Gruß
dzvo
--------------------------------------------
168 Kanäle in 77 Geräten:
5x HM-CC-TC, 6x HM-LC-Dim1PWM-CV, 5x HM-CC-VD, 2x HM-PB-2-WM55, 1x HM-PB-4Dis-WM, 2x HM-SCI-3-FM, 1x HM-Sen-RD-O, 3x HM-WDS30-OT2-SM, 1x HM-WDS100-C6-O, 1x HM-Sen-MDIR-SM, 10x HM-ES-PMSw1-Pl, 6x HM-Sec-RHS, 1x HM-Sec-Sir-WM, 1x HM-Sen-MDIR-O, 1x HM-OU-LED16, 1x HM-Sec-SC, 1x HM-Sec-Key-S, 1x HM-Sen-DB-PCB, 2x HM-LC-Sw1-Ba-PCB, 1x HM-LC-Sw4-WM, 1x HM-Sen-MDIR-WM55, 1x HM-RC-Key4-2, 2x HM-RC-Key3-B, 1x HM-Sec-MDIR, 1x HM-Sec-WDS-2, 1x HM-LC-Sw1-Pl-2, 1x HM-PB-6-WM55, 2x HM-PB-2-WM, 1x HM-CC-SCD, 2x HM-LC-Dim1T-Pl-2, 5x HM-LC-Dim1T-Pl, 3x HM-LC-Bl1PBU-FM, 1x HM-RC-19-B, 1x HM-LC-Sw1-Pl, 1x HM-LC-Sw4-DR, 1x HM-Sec-Win
--------------------------------------------

berTTi
Beiträge: 57
Registriert: 08.08.2011, 20:02

Re: Programme beim Start der CCU nicht ausführen

Beitrag von berTTi » 07.11.2012, 09:57

Hallo Miteinander,

erstmal will ich mich kurz vorstellen. Ich lese in diesem Forum schon lange mit, weil ich in diesem Jahr neu gebaut habe und meine Hütte konsequent mit Homematic automatisiert habe. Auf so manche Frage oder Verständnisproblem war hier die passende Antwort zu finden. Gute Suchbegrife vorausgesetzt :-)

Für das hier behandelte Problem mache ich mir die Tatsache zunutze, dass beim Neustart die vordefinierte Systemvariable für "Anwesenheit" grundsätzlich auf "anwesend" gesetzt wird. Eigentlich behalten die Variablen seit einigen Versionen ihren Zustand nach einem Boot bei. Mit Ausnahme eben dieser "Anwesend"-Variable. Das ist mir schon mal negativ aufgefallen, weil beim Booten das System dann in einen undefinierten Zustand kommt. Findet ein Reboot eben während einer Abwesenheit statt, geht die CCU auf Anwesend mit allen Folgen die daran hängen (Rolläden fahren je nach Tageszeit in bestimmte Positionen, das Motorschloss der Haustüre wird in den Tagmodus versetzt usw usw.
Für Anwesenheit habe ich mir also eine neue Variable definiert, die könnte z.B. "Presence-Status" o.ä. heissen. Die vordefinierte Anwesenheit-Variable wird dann kurzerhand auf CCUStart o.ä. benannt.
Wie bereits erwähnt, wird beim Reboot, die CCUStart (ehemals Anwesenheit) grundsätzlich auf "wahr" gesetzt (scheint hartcodiert zu sein), und zwar lange bevor die Programme alle getriggert werden.
In einem Programm ohne "wenn" Bedingung wird die Variable CCUStart mit einer Verzögerung von z.B. 5 min auf "falsch" gesetzt.
Programme, die beim Starten nicht getriggert werden sollen, haben in der "wenn"-Bedinung eben nochmal die Abfrage, ob CCUStart wahr oder falsch ist. Ausgeführt wird nur, wenn die Variable falsch ist, da sollte das Antriggern aller Programme beim boot schon lange vorbei sein.
Klappt bei mir einwandfrei. Damit verhindere ich, dass Programme ausgeführt werden, deren BEdinung beim Start zutreffen würde (Programme z.B. die aufgrund der aktualisierung einer SysVar ausgeführt werden) usw usw.
Ob das VErhalten der vordefinierten Variable so gewollt ist (bug oder feature?) weiss ich nicht. Ich hoffe, dass sich das mit künftigen Versionen nicht ändert. Ich benutze übrigens noch die 1.506
Schönen Tag noch.

bertti
CCU-1 v1.514
wired: 14x 12/7 Aktor; 12x Rolladenaktor; 2x HMW-IO-12-Sw14-DR; 2x HMW-Sen-SC-12-DR; 3x HMW-LC-Sw2-DR; 1x HMW-Sys-OP-DR
RF: 12x HM-PB-4Dis-WM; 2x 12-Tasten-FB; mp3-Gong; 2x 4-Tasten-FB; 2x HM-LC-Sw4-SM; 7x HM-TC-IT-WM-W-EU; 4x Outdoor-PIR; 2x Outdoor-Temp-Sensor; 1x Keymatic

matheversum
Beiträge: 287
Registriert: 27.04.2009, 13:46

Re: Programme beim Start der CCU nicht ausführen

Beitrag von matheversum » 07.11.2012, 13:43

Man könnte doch auch alle Programme so schreiben, das die Wenn-Bedingung ("Wenn Systemvariable dummy wahr") nie erfüllt ist und dann der Ausführen-Teil nichts wesentliches ("dumme auf false setzen", ist aber sowieso immer) macht.

Man fängt dann einfach mit dem ersten 'Wenn sonst' an.

Beim Reboot würde zwar der erste Zweig, der nix macht, ausgeführt und gut.

Tritt eines der Ereignisse ein, die das Programm triggern, ist die erste Bedingung false und es geht mit der zweiten weiter.

berTTi
Beiträge: 57
Registriert: 08.08.2011, 20:02

Re: Programme beim Start der CCU nicht ausführen

Beitrag von berTTi » 08.11.2012, 10:12

Ich fürchte das bringt nichts. Die Programme werden bekanntlich alle getriggert und dann abgearbeitet bis irgendeine Bedingung zutrifft. Schlägt die erste Bedingung nicht zu, dann schlägt evtl. die "Wenn-dann" Bedingung zu, und es kommt wieder zu einem evtl. unerwünschten Verhalten beim Boot.
Ich bilde mir zumindest ein, dass Programme auch ausgeführt wurden, wenn erst die zweite Bedingung zutrifft. Lässt sich schön in der Übersicht "Status und Bedienung" -> "Programme" sehen, ob dieses Programm bereits beim Boot ausgeführt wurde (anhand des Zeitstempels)
Jemand anderer Meinung?
CCU-1 v1.514
wired: 14x 12/7 Aktor; 12x Rolladenaktor; 2x HMW-IO-12-Sw14-DR; 2x HMW-Sen-SC-12-DR; 3x HMW-LC-Sw2-DR; 1x HMW-Sys-OP-DR
RF: 12x HM-PB-4Dis-WM; 2x 12-Tasten-FB; mp3-Gong; 2x 4-Tasten-FB; 2x HM-LC-Sw4-SM; 7x HM-TC-IT-WM-W-EU; 4x Outdoor-PIR; 2x Outdoor-Temp-Sensor; 1x Keymatic

matheversum
Beiträge: 287
Registriert: 27.04.2009, 13:46

Re: Programme beim Start der CCU nicht ausführen

Beitrag von matheversum » 08.11.2012, 12:04

Ich war davon ausgegangen, dass überhaupt keine Bedingung geprüft wird und immer der erste Wenn-Block abgearbeitet wird, wie wenn man auf den Button in der benannten Ansicht drückt oder das Programm im Script mit Exec... ausführt.

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Programme beim Start der CCU nicht ausführen

Beitrag von paul53 » 12.11.2012, 23:31

berTTi hat geschrieben:...Für das hier behandelte Problem mache ich mir die Tatsache zunutze, dass beim Neustart die vordefinierte Systemvariable für "Anwesenheit" grundsätzlich auf "anwesend" gesetzt wird. ...
Wie bereits erwähnt, wird beim Reboot, die CCUStart (ehemals Anwesenheit) grundsätzlich auf "wahr" gesetzt (scheint hartcodiert zu sein), und zwar lange bevor die Programme alle getriggert werden.
In einem Programm ohne "wenn" Bedingung wird die Variable CCUStart mit einer Verzögerung von z.B. 5 min auf "falsch" gesetzt.
Programme, die beim Starten nicht getriggert werden sollen, haben in der "wenn"-Bedinung eben nochmal die Abfrage, ob CCUStart wahr oder falsch ist. Ausgeführt wird nur, wenn die Variable falsch ist, da sollte das Antriggern aller Programme beim boot schon lange vorbei sein.
Klappt bei mir einwandfrei. Damit verhindere ich, dass Programme ausgeführt werden, deren BEdinung beim Start zutreffen würde (Programme z.B. die aufgrund der aktualisierung einer SysVar ausgeführt werden) usw usw.
Ob das VErhalten der vordefinierten Variable so gewollt ist (bug oder feature?) weiss ich nicht. Ich hoffe, dass sich das mit künftigen Versionen nicht ändert. Ich benutze übrigens noch die 1.506
Schönen Tag noch.
bertti
Sehr gut beobachtet !
Damit ist die Systemvariable "Anwesenheit" ideal als Restart-Variable zu verwenden, in der Hoffnung, daß sich das Verhalten in künftigen Versionen nicht ändert. Habe dies gerade getestet (mit Umbenennung der Variable in "Restart") und es funktioniert prima.

Übrigens werden nach einem Reboot alle Programme, die auf "Aktiv" gesetzt sind, ausgelöst. Es wird der Programmteil ausgeführt, dessen statische Bedingung zum Restart-Zeitpunkt ein "wahr" ergibt. Sollen also bei einem Programm mit "Dann"- und "Sonst"-Zweig beide Zweige beim Restart nicht ausgeführt werden, muß die Restart-Variable sowohl bei "Wenn" als auch bei "Sonst Wenn" geprüft werden.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“