Sommerzeit / Winterzeit

Im Rahmen der Zeitumstellung Ende Oktober kam eine Nachfrage eines fleissigen Lesers meiner HomeMatic-Dokumentation, wie die aktuelle Zeitzone in einer Systemvariablen Sommerzeit (CEST) zur weiteren Verarbeitung in Programmen abgelegt werden kann.

Es gibt mehrere Lösungen um die aktuelle Zeitzone zu ermitteln und sie für die Verarbeitung in Programmen zu verwenden. Als erste Möglichkeit könnte in allen Programmen zum Zeitpunkt der Programmausführung über die Methode „integer time.IsDST();“ die aktuelle Zeitzone ermittelt werden. Sollen allerdings Programme bei der Zeitumstellung ausgeführt werden, bietet sich als zweite Möglichkeit die Ablage der aktuellen Zeitzone in einer Systemvariablen an. Diesen Lösungsansatz möchte ich hier beschreiben.

Zunächst wird eine Systemvariable mit dem Namen „Sommerzeit“ angelegt:

Systemvariable Sommerzeit

Anschliessend erstellen wir das Programm „Sommerzeit_ermitteln„:

Das Programm soll immer um 3.00 Uhr morgens ausgeführt werden, da die Zeitumstellung um 2.00 Uhr morgens durchgeführt wird:

Sommerzeit - Zeitsteuerung
Sommerzeit – Zeitsteuerung

Die Systemvariable Sommerzeit wird über ein kleine Skript gesetzt, das Skript verwendet die Funktion system.Date(„%Z“) welche den Namen der aktuellen Zeitzone (CET/(CEST) zurück liefert. Diese und weitere Funktionen werden in der HomeMatic Script-Dokumentation Teil 1 auf Seite 15 bis 17 beschrieben.

var zz = system.Date('%Z');
var sz = 'false';
if (zz == 'CEST') {sz = 'true';} else {sz = 'false';}
dom.GetObject('Sommerzeit').State(sz);

Nach dem Abspeichern des Programms Sommerzeit kann die Systemvariable Sommerzeit für Bedingungen in weiteren Programmen verwendet werden.

Anmerkung: Für die Abfragen in Bedingungen eigenen sich logische Systemvariablen besser, Systemvariablen mit Wertelisten können bei Veränderung oder Erweiterung der Werteliste zu ungewollten Ergebnissen führen.

In den letzten 4 Jahren hatte ich keine Probleme bei der Zeitumstellung mit meiner CCU2. Alle Programme liefen problemlos und die angesteuerten Aktoren, zum Beispiel die Rolladenaktoren, wurden entsprechend er Zeitumstellung eine Stunde früher oder später aktiviert. Bei der Zeitumstellung Ende Oktober 2017 trat ein Fehler in der Logikschicht der CCU2 auf, der wohl schon länger darin verborgen war aber erst durch Aktualisierung und Updates zu Fehlern führte. Ich gehe davon aus, dass mit zukünftigen Updates der CCU2-Firmware dieses Problem in Zukunft nicht mehr auftreten wird. Aufgrund der großen HomeMatic-Community (HomeMatic-Forum, Facebook-Gruppe HomeMatic Freunde) konnte auch diesmal sehr zeitnah eine Lösung gefunden werden.

Autor: Erhard Simdorn

Am 1. September 2014 habe ich mir meine erste CCU2 gekauft und war von den Möglichkeiten der Hausautomation sofort begeistert. Am 22. November 2014 folgte dann die zweite CCU2 für einen weiteren Standort und bis heute sind es schon acht CCU2 für die ich der "Auslöser" war.

4 Gedanken zu „Sommerzeit / Winterzeit“

  1. dieser Skript dürfte bei der letzten Zeitumstellung egal gewesen sein.
    Sollte man Programme (wie ich) am Laufen haben, die bei einer Zeitsteuerung ab 00:00 Uhr auslösen, ging gar nichts mehr.
    Dabei war es unerheblich, ob man eine CCU2 oder eine Raspberrymatic hatte.
    Erst nachdem man die Raspberrymatic/CCU2 durch den Parentcontrol der Fritzbox vom Internet ausgesperrt, ein anderes Datum gewählt und den Zeitserver gelöscht hat, ging die CCU2/Raspberrymatic wieder. Am Montag um 00:01 Uhr konnte man alles wieder rückgängig machen.
    Ich bin auf das Verhalten bei der nächsten Zeitumstellung gespannt. Laut dem Autor Jens Maus ist der Bug gefixt.

    1. Hallo Mathias,

      tatsächlich habe ich das Sommerzeit/Winterzeit nicht wegen der Zeitumstellungsprobleme erstellt. Ich hatte eine Anfrage von einem eifrigen Leser meines Blogs, der über dieses Programm bestimmte Aktionen durchführen wollte. Jens Maus hat nach meinem Verständnis die Firmware für Raspberrymatic gefixt, die Firmware für die CCU2 wird zur Zeit immer noch von eQ3 ausgeliefert und hier gibt es noch keine aktualisierte Version.

      Gruß Erhard

    1. Hallo Michael,

      in meinem Script hatte sich ein kleiner Fehler eingeschlichen, sorry!
      Wenn system.Date(„%Z“) „CEST“ zurück liefert, dann muss die Systemvariable „Sommerzeit“ selbstverständlich auf „1“ also „wahr“ gestellt werden!
      Also bitte einfach das korrigierte Script in dein Programm kopieren, dann klappt!

      Übrigens:Ich habe das Programm auf „Sommerzeit_ermitteln“ umbenannt. Programmnamen und Systemvariablen sollten eindeutig sein. Generell sollten Namen immer eindeutig sein.

      Liebe Grüße Erhard

Kommentare sind geschlossen.