Hauptmenü  

   

Elektronik  

   

Login  

   

Wie verhindert man nach einem Neustart der HomeMatic, dass manche Programme nicht ausgeführt werden?

Bei einigen Programmen ist es wichtig, dass Schalthandlungen bei einem Reboot der HomeMatic nicht ausgeführt werden, denn man muss sich folgendes im Hinterkopf behalten:

  • Die HomeMatic speichert die aktuellen Zustände und auch die Inhalte der Systemvariable in regelmäßigen Zeitabständen intern ab
  • Leider lässt sich ein Stromausfall nicht vorhersehen (ich verwende eine kleine USV um kurze Ausfälle des Stromnetzes zu überbrücken)
  • Bei einem Reboot werden alle zuvor gespeicherten Zustände der Systemvariablen wieder hergestellt und alle vorhandenen Programme einmal von der HomeMatic ausgeführt, sofern sie als "aktiv" markiert sind
  • Die Reihenfolge der Programme kann dabei nicht sicher bestimmt werden
  • Die HomeMatic benötigt einige Zeit, bis wieder alle Sensoren und Geräte ihren aktuellen Zustand (der sich während des Reboot/Stromausfall eventuell geändert hat) gemeldet haben
  • Dadurch können die Zustände der Sensoren anders sein, als sie in der HomeMatic gespeichert sind
  • Als Beispiel könnte ein Fenster inzwischen geöffnet worden sein und die HomeMatic fährt die Innenrollläden runter, oder es werden Geräte eingeschaltet die Verletzungen verursachen könnten usw.

Wie kann man nun feststellen, dass die Zentrale gerade neu gestartet wurde?

Es gibt in der HomeMatic eine Systemvariable "Anwesenheit", diese Variable kann nicht gelöscht werden und wird nach einem Reboot immer auf "wahr" gesetzt. Diese Variable kann als Indikator für einen Reboot benutzt werden.

Dazu kann man die Variable von "Anwesenheit" auf "CCU_BOOT" umbenennen. Diese Variable hat nun den Zustand "wahr" und dieser Zustand kann dann in den entsprechenden Programmen, die nicht ausgeführt werden sollen als Bedingung verwendet werden.

Systemvariable CCU BOOT

Zusätzlich benötigt man ein Programm, das nach einiger Zeit den Zustand von "CCU_BOOT" wieder auf "falsch" setzt, damit später auch die Programme, deren Ausführung verhindert wurden, wieder ausgeführt werden.

ProgrammBoozustandSetzen

Da diese Programm keine Bedingung hat, wird es nur in zwei Situationen ausgeführt:

  1. Es wird manuell gestartet
  2. Nach einen Reboot (wir erinnern uns, jedes Programm wird nach einem Reboot einmal von der HomeMatic gestartet

Bei dem Reboot wird also die Systemvariable "CCU_BOOT" von der HomeMatic auf "ja" gesetzt und nach 5 Minuten wird "CCU_BOOT" von unserem Programm auf "nein" gesetzt.

Die Zeit kann individuell gewählt werden, jedoch sollte sicher gestellt sein, dass die Zeit ausreicht, bis alle vorhandenen Programme einmal von der HomeMatic aufgerufen wurden. Das heißt, je mehr Programme vorhanden sind, desto größer sollte die Zeitspanne sein, nach der die Variable "CCU_Boot" auf "nein" gesetzt wird.

 

   
© WagoTec.de