Howto - Vermeidung von Programmstarts nach Neustart der CCU

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

Moderator: Co-Administratoren

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

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von nimmnenkeks » 22.10.2018, 23:37

Xel66 hat geschrieben:
22.10.2018, 22:41
...
Die oben verlinkte Methode, eine Abarbeitungsreihenfolge zu erzwingen ist auch m.E. eine "mit-Kanonen-auf-Spatzen"-Methode. Der Einsteiger, der mit der Übersicht, der HM-Logik und der Abarbeitung von Programmen seine Probleme hat, ist mit einer derartigen Lösung auch hoffnungslos überfordert. Viel Aufwand für überschaubaren Nutzen.


Gruß Xel66
Eher ist das Gegenteil der Fall.
In dem Beitrag wird darauf hingewiesen, dass selbst duch versuchte Abbildung des Systemzustandes mit Systemvariablen (SysVar), mache Dinge sich eben nicht direkt erfassen lassen.

Die Zustände statt mit Logikvariablen, mit Wertelisten anzubilden und bei einem Reboot den Zustand "unbekannt" zu setzen, bis Sensoren die Zustände an CCU übermitteln ist doch einfach genial (bei zustand "unbekannt" passiert eben nix).

Kein Rollladen tanzt Samba, weil die SysVars nicht passen, oder wird gefahren, weil die SysVar den falschen Wert enthält.
Berechnungen von täglichen Skripten können gesteuert abgearbeitet werden (Bsp. Timer-Skripte, Kalenderdatebberechnung, setzen von Sonnendaten aus einer CSV-Datei, Heizparameter ermitteln, u.v.m.).


Hinzu kommt, dass eben die Programme ganz anders aufgebaut werden können, als es in den Anfängerbeiträgen gebetsmühlenartig propagiert wird.
Der Nachteil bei dem "Sonst,Wenn-Gefrickel" ist doch dass "Abfangen" aller Eventualitäten, je mehr Dinge im WENN berücksichtigt werden sollen.

Ebenso das gerne propagierte "Programme Splitten" entfällt bei BadenPowers Programmaufbauten.
So aufgebaute Programme sind wesentlich übersichtlicher und man verliert auch nicht (auch als Anfänger) die Übersicht, selbst wenn man auf über 100 Zustände in einem Programm reagiert.

Ob der Aufwand der Reboot-Abarbeitung umfänglicher ist, als in jedem Programm den ccu-Reboot-Status x-fach mit einzubauen, oder das 1x im Programm zu prüfen, muss schliesslich jeder selbst entscheiden.

Einmal ein paar Programme anlegen und eine gänzlich vom Standard abweichende und übersichliche Programmaufbaumöglichkeit ist eben ein nicht zu unterschätzender Nutzen.

Klar, kann man alles machen "wie immer", ist und bleibt aber immer noch "k...."

..

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von Xel66 » 23.10.2018, 10:43

nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Die Zustände statt mit Logikvariablen, mit Wertelisten anzubilden und bei einem Reboot den Zustand "unbekannt" zu setzen, bis Sensoren die Zustände an CCU übermitteln ist doch einfach genial (bei zustand "unbekannt" passiert eben nix).
Bei Zustand "CCU rebootet" mit der Standardlösung wird auch kein Programm abgearbeitet. Die richtigen Zustände werden nach Übermittlung der Sensoren hingestellt. Wo ist der Unterschied? Wird die CCU nicht durch "Stecker ziehen" neu gestartet, sind die Zustände vor dem Runterfahren bekannt und werden abgespeichert. Der einzige Pferdefuß sind Batteriesensoren. Da muss man sich anders behelfen. Aber auch hier helfen Systemvariablen.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Kein Rollladen tanzt Samba, weil die SysVars nicht passen, oder wird gefahren, weil die SysVar den falschen Wert enthält.
Wenn die Systemvariable nicht den richtigen Zustand enthält, dann ist was anderes im Argen. Auch diese Lösung kann nicht verhindern, dass die CCU falsche Zustände gespeichert hat. Sie stellt nur einen "vorgegebenen" hin. Der muss dann mit der Realität nichts zu tun haben. Nun denn, wenn's hilft.... Bei mir sind allerdings noch keine Rollladen Ballett gefahren, weil ich die CCU neu gestartet habe. Unter anderem, weil ich Steuerungen über SONST weitgehend vermeide.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Berechnungen von täglichen Skripten können gesteuert abgearbeitet werden (Bsp. Timer-Skripte, Kalenderdatebberechnung, setzen von Sonnendaten aus einer CSV-Datei, Heizparameter ermitteln, u.v.m.).
Eine Monsterlösung für Probleme, die man sich mit anderen Monstern geschaffen hat. Timer-Scripte? Nutzt der Normaluser eher weniger. Für andere gibt es CUxD-Timer, die ihren Stand auch über einen Reboot behalten. Kalenderdatenberechnung? Hmmm... Einige wenige Zustände sind für eine Hausautomation interessant, aber wie ich schon im dazugehörigen Thread geschrieben habe, interessiert es die CCU wenig, wie ein Feiertag heißt, sondern nur, ob ein Feiertag ist, um dann bestimmte Aktionen nicht oder zu anderen Zeiten ablaufen zu lassen. Da tut es auch das wesentlich bedienerfreundliche Feiertagsscript, das die Tage berechnet. Das Kalenderscript ist für mich schon grenzwertig, weil man die Daten händisch erfassen muss, es aber in der GUI keine Möglichkeit gibt, diese einigermaßen komfortabel einzurichten. Um Termine in einer Visu darzustellen gibt es iCal-Adapter, die den Job wesentlich komfortabler erledigen und man muss Daten nur an einer Stelle pflegen und hat mit allen Devices den gleichen Datenstand. Außerdem ließe sich das Script bei Systemstart auch ohne die Beteiligung der Monsterlösung abarbeiten. Das System würde das auch out of the box tun, denn so ist es vorgesehen.

Sonnendaten aus CSV? Wenn man es braucht... Wieviele Anwender davon gibt es? Sonnenauf- und -untergang stellt das System selbst zur Verfügung. Es gibt durchaus weniger pflegeintensive Ansätze. Und damit meine ich nicht unbedingt das Sonnenstandsscript. Selbst das ist für viele Anwender der Overkill. Man benötigt es eigentlich nur für Elevationsabhängige Steuerungen und um Astro-Ereignistrigger vorzuziehen. Verzögerungen kann man im System selbst abbilden und azimutale Steuerungen lassen sich teils mit reinen Zeitsteuerungen abbilden.

Heizparameter kann man über Temperaturen ermitteln. Ich wüsste nicht, was diese Lösung dabei helfen soll. Die Heizperiode kann man in einer Systemvariable speichern und die ist auch nach einem Reboot da. Sonstige Zeitsteuerungen sind in den Thermostaten hinterlegt. Eine solche Krücke baucht man wieder nur, wenn man z.B. die Heizungskompenenten per Script steuert, was aber nur bei Verwendung der alten Thermostate einen wirklichen Nutzen bringt. In in aktueller Hardware vorhandenen Zeitsteuerungen und die normalen Programmmöglichkeiten sind da viel nützlicher und ressourcenschonender.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Hinzu kommt, dass eben die Programme ganz anders aufgebaut werden können, als es in den Anfängerbeiträgen gebetsmühlenartig propagiert wird.
Die "gebetsmühlenartigen" Empfehlungen sind eben auch für den weniger ambitionierten Anwender und Einsteiger geeignet, der auch mit dem hier verlinkten Lösungsansatz überfordert wäre (nicht die Lösung, in der es hier im Thread eigentlich geht!). Sie folgen dem KISS-Prinzip (keep it simple and stupid). Und sie sind für alle Anwender überschaubar. Letztendlich orientieren sich diese Empfehlungen an den Eigenheiten des Systems. Man braucht sich nur hier im Forum mal umschauen, an welchen wirklichen "Problemen" es manchmal scheitert. Da würde die Lektüre der Anwendertipps und deren Anwendung viele Fragen von vornherein beantworten. Das Script kann das eher nicht, denn Einsteiger stoßen teils schon bei simplen Konstrukten an Verständnisprobleme. Ein solches Monster würde es nicht besser machen.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Der Nachteil bei dem "Sonst,Wenn-Gefrickel" ist doch dass "Abfangen" aller Eventualitäten, je mehr Dinge im WENN berücksichtigt werden sollen.
Was hilft da diese Lösung im täglichen Betrieb? Nichts, da sie nur beim Reboot zur Anwendung kommt. Insofern ein mehr als überschaubarer Nutzen.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Ebenso das gerne propagierte "Programme Splitten" entfällt bei BadenPowers Programmaufbauten.
Nicht unbedingt und es ist nicht zielführend, Monster zu bauen, die im Nachgang niemand mehr überschauen kann (KISS-Prinzip). Dedizierte Programme für genau einen Vorgang sind überschaubarer und für die Programmübersicht (zusammengehörige Funktionen) hat sich eine standardisierte Namensgebung bewährt. Beispiel: Alle Programme, die die Heizung steuern, beginnen eben mit dem Namen "Heizung...". Und gegensätzliche Aktionen in einem Programm mit den gleichen Triggern hat schon so manche Anwender zur Verzweiflung gebracht, weil die CCU eben ihre "eigene Logik" besitzt oder weil der Anwender eine falsche Vorstellung hat (will eine Lampe an der Haus- UND an der Wohnzimmertür einschalten - abgebildet in Logik aber ein ODER notwendig). Auch da kann der Lösungsansatz wenig helfen. Das Splitten von Programmen ist eher ein optisches als ein funktionelles Problem.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
So aufgebaute Programme sind wesentlich übersichtlicher und man verliert auch nicht (auch als Anfänger) die Übersicht, selbst wenn man auf über 100 Zustände in einem Programm reagiert.
Wer baut sowas? Einsteier eher nicht. Das Programm läuft bei Reboot. Wie oft bootest Du Dein System? Wenn das häufiger außer bei Updates notwendig ist, dann hast Du ein anderes Problem, welches gelöst gehört, und nicht das eine Problem mit einem Monster bekämpfen. Und Einsteiger bauen eher selten Programme mit 100 Triggern. Wenn Du häufiger Stromausfälle hast, dann würde ich eher an eine USV denken, als per Software Probleme zu lösen, die ich ohne sie gar nicht hätte.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Ob der Aufwand der Reboot-Abarbeitung umfänglicher ist, als in jedem Programm den ccu-Reboot-Status x-fach mit einzubauen, oder das 1x im Programm zu prüfen, muss schliesslich jeder selbst entscheiden.
Jo, wenn er es überblicken kann. Man benötigt es eben nicht in jedem Programm. Den "unbekannt"-Status müsste man dann aber in jedem Programm berücksichtigen. Ich sehe keine Vereinfachung - eher im Gegenteil. Es gibt z.B. in meinem System (>200 Programme, siehe Sig.) nur ganz wenige Programme (genau sechs - gerade nachgeschaut), die die Reboot-Variable enthalten. Weil eben keine Monster vorhanden sind, deren Zustand sich nicht abschätzen lässt, und die mit solchen Lösungen bekämpft werden müssen. Und vier von den sechs Programmen enthalten sie nur, um durch den Systemstart bedingte unplausible und wiederholte Meldungen per TTS, Mail und Push bis zum abgeschlossenen Systemstart zu unterdrücken bzw. einen durchgeführten Systemstart über die eben genannten Kanäle zu melden. Macht noch zwei funktionelle Programme, die ich bei "Reboot" sichern will (u.a. Keymatic). Der Rest der Programme ist "eigensicher", weil einfach, angelegt.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Einmal ein paar Programme anlegen und eine gänzlich vom Standard abweichende und übersichliche Programmaufbaumöglichkeit ist eben ein nicht zu unterschätzender Nutzen.
Welcher? Wenn jemand ein System aufbaut, welches sich grundsätzlich vom Standard unterscheidet und eigentlich ein Pflegefall ist, ist es für andere Anwender umso schwerer, sich dort reinzudenken. Man stelle sich nur mal vor, jemand "erbt" so ein System und ist deswegen auf Hilfe angewiesen oder kommt durch Erwerb in dessen Besitz. Es gab auch in der Vergangenheit schon hier ein paar Beiträge, die sich mit derartigen Problemstellungen (Systempflege bei Kauf/Scheidung/Tod) beschäftigten. Wer soll solche Pflegefälle dann noch überblicken? Bei Monsterprogrammen ist es umso schwieriger. Und letztendlich ist "Übersichtlichkeit" nur ein Nutzen für den Anwender. Der CCU ist es egal wie ein Programm heißt und an welcher Stelle es im GUI steht.
nimmnenkeks hat geschrieben:
22.10.2018, 23:37
Klar, kann man alles machen "wie immer", ist und bleibt aber immer noch "k...."
Etablierte Standards haben sich im Leben und in der Industrie durchgesetzt und sind auch zielführend (nicht umsonst gibt es sowas wie DIN und andere Vorschriften). Nur Standards ermöglichen auch eine Interaktion verschiedener Systeme. Wenn man krampfhaft etwas anders machen will nur um des Andersseins willen, dann muss man eben selbst mit den Auswirkungen zurecht kommen. Das heißt nicht, dass man nichts neu erfinden kann! Ganz und gar nicht. Ich will keine Weiterentwicklung verteufeln, aber der oben verlinkte Ansatz (nicht die Lösung, in der es hier im Thread eigentlich geht!) ist m.E. den Teufel mit dem Beelzebub auszutreiben. Man baut sich eine Monsterproblemlösung für ein vorher ins System geholte Monsteranwendung. Aber mit dem "Neu" hat man bei bestehenden komplexen Systemen so seine Probleme. Das ist so wie ein Sportfahrwerk unter ein Standardauto zu schrauben. Bei den in Wohngebieten teilweise eingebauten Bodenwellen zur Verkehrsberuhigung hat der "ambitionierte Anwender" dann seine Probleme. Er muss dann mit seinem "Anderssein" zurechtkommen. Kann man machen - muss man aber nicht. Jeder wie er will.

Fazit: Es ist wie es ist. Die hier eigentlich im Thread-Topic vorgestellte Methode mit der unlöschbaren Anwesenheitsvariable ist die Lösung, mit der die meisten Anwender zurecht kommen, die erprobt und übersichtlich ist, und deren Nebenwirkungen man abschätzen kann. Man benötigt dazu genau ein Programm und diese spezielle Variable und kann damit alle Programme, bei denen es notwendig erscheint, gegen Ausführung beim Start sichern, wenn es denn überhaupt notwendig ist.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von Black » 23.10.2018, 11:16

ich kann da Xel66 nur zustimmen und mich immer wieder lächelnd an den Satz eines Profs in einer Regelungstechnik Vorlesung erinnern:
"..Die Genialität einer Konstruktion liegt in ihrer Einfachheit..."
Das KISS Prinzip halt.

Mit ein bisschen Disziplin beim Proggen läuft mein Haus nach einem CCU reboot auch nicht Amok, und ich komme auch gut mit der 950er aus.

Wobei ich diese Ansätze allerdings schon beruflich immer berücksichtige und auch Berücksichtigen muss. Eine zentrifuge, die nach nach einem CPU Warmstart begintn selbsständig zu starten, oder eine Kugelmühle ausgestattet mit einem Antrieb im MW bereich, das sind Dinge, die, wenn die unkontrolliert Amok laufen, man nicht daneben stehen möchte.

Den Ball muss ich allerdings auch EQ3 zuspielen. Da gehört auch noch ein Haken in die Eigenschaften rein, ausführen bei Warmstart/Kaltstart.
Damit wäre das ganze hier vom Tisch. Ebenso das neue Funkmodul. Immerhin schon mal eine RTC drinne, ist schon mal was. Die paar Euros mehr für eine Ladeschaltung und einen Kleinen LiPo Akku, der in der lage wäre, stromausfall kurz zu überbrücken bzw kontrolliert runterzufahren bevor Brutal aus. viele Probleme wären dann keine. geht auch mit einer Internen oder auch externen kleinen USV..

Wer halt Schrittketten oder finite state machines braucht, der wird auch mal irgendwann gelernt haben, wie man diese programmiert. Bei dingen, die soetwas erfordern, würde dies aber bei mir auch keine CCU steuern nur um zu beweisen das es geht, sondern eine S7-1200 angebunden an IOBroker.

Just my 2 cents, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von Xel66 » 23.10.2018, 12:58

Black hat geschrieben:
23.10.2018, 11:16
"..Die Genialität einer Konstruktion liegt in ihrer Einfachheit..."
Das KISS Prinzip halt.
Danke für die Zustimmung. Hatte schon vor, meinen Nick in Quijote umzubenennen (der mit den Windmühlen). Ich habe hier sowieso das Gefühl, dass zunehmend versucht wird, für jede einfache Problemstellung die möglichst komplizierteste Vorgehensweise unter Ignoranz der Möglichkeiten der GUI zu finden. Letztens wieder mal untergekommen, dass durch ein Ereignis getriggerte logische Prüfung boolscher Variablenzustände per Script durchgeführt werden sollte. Als Fingerübung nicht schlecht, aber eben nur mit Nachteilen behaftet. Das hätte man auch per GUI zusammenklicken können. Aber jeder wie er will.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

funzel1607
Beiträge: 132
Registriert: 13.10.2015, 14:34
Hat sich bedankt: 2 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von funzel1607 » 28.11.2018, 22:03

Hallo zusammen,

kann es sein, dass sich was geändert hat? Ich habe mit diesem Mechanismus lange zufriedenstellend gearbeitet.
Seit einiger Zeit "spinnen" ein paar Programme und laufen mal und mal nicht. Ich habe es darauf geschoben, dass ich sie nach und nach bearbeitet habe und dabei was kaputt gegangen ist. War schon kurz davor alle betroffenen Programme zu löschen und neu zu machen.

Nun ist mir aufgefallen, dass mein CCU Status jetzt immer wieder von allein auf Neustart wechselt und zurück.
Wäre es jedes Mal das Programm, das den Zustand nach einem Neustart ändert, hätte ich es per Push mitbekommen.
Sonst habe ich kein Programm, dass den Status ändert, sondern nur prüft.

Jemand eine Idee, wie man das Problem gelöst bekommt?

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von Xel66 » 28.11.2018, 22:22

funzel1607 hat geschrieben:
28.11.2018, 22:03
Jemand eine Idee, wie man das Problem gelöst bekommt?
Wenn Du die Systemvariable nicht per Script änderst, dann hast Du in der Systemvariablenübersicht die Möglichkeit, die Programme zu identifizieren, die diese Variable beinhalten. Dann musst Du nach und nach schauen, welches die Variable setzt. Das dieses von allein geschieht, würde ich eher verneinen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

funzel1607
Beiträge: 132
Registriert: 13.10.2015, 14:34
Hat sich bedankt: 2 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von funzel1607 » 28.11.2018, 22:29

Das habe ich ja als Erstes gemacht. Die Variable kommt mittlerweile in fast jedem Programm vor.
Habe daher die "Drucken + Innere" Funktion genutzt und habe nach "Neustart" gesucht.
Dieses kommt genau zwei Mal vor und jedes Mal im Wenn Zweig. Daher sollte keins meiner Programme etwas damit zu tun haben.

Hier mal der Export vom Log:

Code: Alles auswählen

VALUE-ID	VALUE	UNIT	DATE TIME
CCU Status	0		27.11.18 10:17
CCU Status	1		27.11.18 18:55
CCU Status	0		27.11.18 19:02
CCU Status	0		27.11.18 19:04
CCU Status	1		27.11.18 19:06
CCU Status	0		27.11.18 19:07
CCU Status	1		27.11.18 19:08
CCU Status	0		27.11.18 19:09
CCU Status	1		27.11.18 19:12
CCU Status	0		27.11.18 19:15
CCU Status	1		27.11.18 19:16
CCU Status	0		27.11.18 19:18
CCU Status	1		27.11.18 19:19
CCU Status	0		27.11.18 19:23
CCU Status	1		27.11.18 19:23
CCU Status	0		27.11.18 19:24
CCU Status	1		27.11.18 23:30
CCU Status	0		28.11.18 00:41
CCU Status	1		28.11.18 07:43
CCU Status	0		28.11.18 07:49
CCU Status	0		28.11.18 07:50
CCU Status	0		28.11.18 08:12
CCU Status	1		28.11.18 08:29
CCU Status	0		28.11.18 08:30
CCU Status	1		28.11.18 08:31
CCU Status	0		28.11.18 08:32
CCU Status	1		28.11.18 08:33
CCU Status	0		28.11.18 08:34
CCU Status	1		28.11.18 08:35
CCU Status	0		28.11.18 08:36
CCU Status	1		28.11.18 08:45
CCU Status	1		28.11.18 08:46
CCU Status	0		28.11.18 08:47
CCU Status	1		28.11.18 08:48
CCU Status	0		28.11.18 08:49
CCU Status	1		28.11.18 08:50
CCU Status	0		28.11.18 08:53
CCU Status	1		28.11.18 16:56
CCU Status	0		28.11.18 17:39
CCU Status	1		28.11.18 17:41
CCU Status	1		28.11.18 17:44
CCU Status	0		28.11.18 17:45
CCU Status	1		28.11.18 17:54
CCU Status	0		28.11.18 17:56
CCU Status	1		28.11.18 17:57
CCU Status	0		28.11.18 17:58
CCU Status	1		28.11.18 18:02
CCU Status	0		28.11.18 18:12
CCU Status	0		28.11.18 18:15
CCU Status	1		28.11.18 18:16
CCU Status	0		28.11.18 18:17
CCU Status	1		28.11.18 18:17
CCU Status	0		28.11.18 18:18
CCU Status	1		28.11.18 18:19
CCU Status	0		28.11.18 18:19
CCU Status	1		28.11.18 18:21
CCU Status	0		28.11.18 18:25
CCU Status	0		28.11.18 18:25
CCU Status	1		28.11.18 18:28
CCU Status	0		28.11.18 18:30
CCU Status	1		28.11.18 18:30
CCU Status	0		28.11.18 18:33
CCU Status	1		28.11.18 18:34
CCU Status	0		28.11.18 18:36
CCU Status	1		28.11.18 18:37
CCU Status	0		28.11.18 18:38
CCU Status	1		28.11.18 18:41
CCU Status	0		28.11.18 18:42
CCU Status	1		28.11.18 18:44
CCU Status	0		28.11.18 18:45
CCU Status	0		28.11.18 18:46
CCU Status	0		28.11.18 18:55
CCU Status	1		28.11.18 18:57
CCU Status	0		28.11.18 18:57
CCU Status	1		28.11.18 18:59
CCU Status	0		28.11.18 19:00
CCU Status	0		28.11.18 19:02
CCU Status	1		28.11.18 19:03
CCU Status	0		28.11.18 19:06
CCU Status	1		28.11.18 19:06
CCU Status	0		28.11.18 19:12
CCU Status	1		28.11.18 19:17
CCU Status	0		28.11.18 19:18
CCU Status	1		28.11.18 19:20
CCU Status	0		28.11.18 19:21
CCU Status	1		28.11.18 19:22
CCU Status	1		28.11.18 19:22
CCU Status	0		28.11.18 19:23
CCU Status	1		28.11.18 19:28
CCU Status	0		28.11.18 20:25
CCU Status	0		28.11.18 20:28
CCU Status	1		28.11.18 20:29
CCU Status	1		28.11.18 20:37
CCU Status	0		28.11.18 20:44
CCU Status	1		28.11.18 20:45
CCU Status	1		28.11.18 20:47
CCU Status	0		28.11.18 20:50
CCU Status	1		28.11.18 20:58
CCU Status	0		28.11.18 20:59
CCU Status	1		28.11.18 21:02
CCU Status	0		28.11.18 21:44
EDIT:
War natürlich doch mein Fehler. Die Uhrzeiten waren doch schon sehr nahe an meine Anwesenheit gekoppelt.
Ich hatte in ioBroker den Geofency-Adapter, der mit früher mal die Variable befüllte. Habe es anscheinend nicht für alle Zweige umgestellt, sodass der Übeltäter hier sein Unwesen getrieben hat. Somit für evtl. Betroffene der Tip, hier mal suchen :)
Zuletzt geändert von funzel1607 am 28.11.2018, 22:47, insgesamt 1-mal geändert.

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von Xel66 » 28.11.2018, 22:39

funzel1607 hat geschrieben:
28.11.2018, 22:29
Die Variable kommt mittlerweile in fast jedem Programm vor.
Warum macht man das? Sinnvoll ist das nicht, denn somit werden auch Programmläufe verhindert, die eigentlich bestimmte Zustände entsprechend ihrer Trigger hinstellen sollen. Wenn ich z.B. einen Zeitbereich definiert habe, in dem eine bestimmte Beleuchtung eingeschaltet werden soll und die CCU startet nach einem Stromausfall neu, dann ist es doch zielführend, dass das Licht angeht. Ein Programm, welches z.B. durch einen Taster getriggert wird, benötigt sowas ebenfalls nicht. Der Hersteller hat sich was dabei gedacht, dass Programme beim Systemstart die Bedingungen prüfen und die entsprechenden Aktionen daraus ableiten. Aber jeder wie er will.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von dtp » 29.11.2018, 08:57

Xel66 hat geschrieben:
28.11.2018, 22:39
Warum macht man das?
Nun ja, ich habe die Abfrage der Systemvariablen auf den Zustand "Normalbetrieb" auch in sämtlichen Zweigen meiner WebUI-Programme drin (außer natürlich im Reboot-Programm), um zu verhindern, dass ein Neustart der CCU irgend etwas auslöst. Bisher bin ich damit immer super gefahren.

Es ist allerdings extrem wichtig, dass die Systemvariable wirklich NUR von einem einzigen Programm nach dem Neustart der CCU gesetzt wird. Nämlich vom Reboot-Programm. Ansonsten kann es - wie oben geschildert - zu massiven Problemen führen, weil Programmzweige dann nicht ausgeführt werden, obwohl sich die CCU eigentlich im Normalbetrieb befindet. Allerdings frage ich mich, warum man überhaupt auf die Idee kommt, diese Systemvariable anderweitig - insbesondere von externen Systemen wie z.B. dem ioBroker - zu setzen? Das darf NUR die CCU selbst tun.
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.

funzel1607
Beiträge: 132
Registriert: 13.10.2015, 14:34
Hat sich bedankt: 2 Mal

Re: Howto - Vermeidung von Programmstarts nach Neustart der CCU

Beitrag von funzel1607 » 29.11.2018, 09:34

Xel66 hat geschrieben:
28.11.2018, 22:39
Warum macht man das? Sinnvoll ist das nicht...
Wie dtp bereits geschrieben hat, nutze ich es z.B. damit nach einem nächtlichen Rumgebastel und Reboot nicht plötzlich irgendwelche Lampen angehen oder Rollladen fahren etc. Stammt auch noch so ein bisschen aus der Zeit wo ich noch nicht vollständig auf HM umgestellt hatte und zum Teil Baumarktsteckdosen mittels CUXd und einem CUL geschaltet habe. Hatte dazu Variablen zum jeweiligen Zustand und manche Programme haben dann nach jeden Reboot die Lampen erst mal alle angemacht, was auf Dauer nervig war.
dtp hat geschrieben:
29.11.2018, 08:57
Allerdings frage ich mich, warum man überhaupt auf die Idee kommt, diese Systemvariable anderweitig - insbesondere von externen Systemen wie z.B. dem ioBroker - zu setzen? Das darf NUR die CCU selbst tun.
Das ist ganz einfach dem Umstand geschuldet, dass ich bereits vor langer Zeit mit ioBroker die ursprüngliche Variable "Anwesenheit" habe setzen setzen lassen, sobald ich nach Hause gekommen bin. Ich habe das mit ioBroker machen lassen, da ich dazu die App Geofancy in Verbindung mit Beacons und Geomarken nutze, da ich nur so ortsunabhängig meiner Zentrale meinen Standort mitteilen kann. Habe die kleinen Teile einfach an ein paar Positionen (Arbeit, Auto, zu Hause etc.) platziert.

In diesem Falle hatte ich einen separaten Zweig, der den Wert der Variable auf true oder false gesetzt hat. Damals war ich dann anwesend oder eben nicht. Ich hatte beim implementieren dieses Tipps hier schlichtweg vergessen von der alten auf die neue Variable zu wechseln.
dtp hat geschrieben:
29.11.2018, 08:57
Es ist allerdings extrem wichtig, dass die Systemvariable wirklich NUR von einem einzigen Programm nach dem Neustart der CCU gesetzt wird.
So ist es ja bei mir "augenscheinlich" auch. In der CCU gibt es nur ein Programm, dass das macht. Es lag hier nur an ioBroker und ein vergessenes Programm, das ich vergessen hatte zu ändern, als ich auf diesen Tip hier umgestellt hatte.

Antworten

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