Wenn es draußen dunkel wird… OpenHab SmartHome Server Tutorial – Teil 3

10. November 2017

Sonnenuntergang

Obwohl es natürlich praktisch ist, Licht zusätzlich per Weboberfläche, App etc. schalten zu können (siehe Teil 2), hat das noch nicht viel mit „smart“ zu tun. Interessant wird es, wenn sich das SmartHome intelligent an die aktuelle Situation anpasst – z.B. wenn sich das Licht automatisch einschaltet, sobald es draußen dunkel wird. Darum soll es in diesem Artikel gehen.

First things first: Wann wird es denn eigentlich dunkel?

Der erste Impuls, das Licht zu einer bestimmten Zeit zu schalten, stellt sich bei näherer Betrachtung als ungünstig heraus – schließlich ändert sich der Zeitpunkt des Sonnenuntergangs im Jahresverlauf deutlich. Man kann zu diesem Zwecke natürlich einen Dämmerungssensor einsetzen – aber es geht noch einfacher: Mit dem AstroBinding für OpenHab. Dieses Binding stellt basierend auf dem jeweiligen Standort und Datum vielfältige Informationen zu Sonnenaufgang, Sonnenuntergang, Mondzyklus usw. zur Verfügung. Mit diesen Informationen kann man seine  SmartHome Funktionen deutlich verbessern.

Installation des Bindings

Um das Binding zu installieren, wählt man es auf der Weboberfläche von OpenHab einfach unter dem Menüpunkt „AddOns“ aus:

OpenHab Astro Binding installieren

Nach der Installation muss ein „Thing“ angelegt werden. Hierzu wechselt man auf „Configuration“ und dann auf „Things“ und klickt auf das blaue Plus-Icon. Dann weiter auf „Astro-Binding“, „Add manually“ und „Astro Sun Data“

AstroBinding Thing hinzufügen

Auf dem folgenden Screen müssen dann die eigenen Geo-Koordinaten eingetragen werden, damit das Binding für den aktuellen Standort die richtigen Zeiten ermitteln kann:

Astro.Binding Geo-Koordinaten

Diese Koordinaten kann man sich z.B. bei Google Maps heraussuchen. Das muss jetzt nicht zwingend die eigene Straße sein – innerhalb der gleichen Stadt wird der Zeitpunkt des Sonnenuntergangs nicht wesentlich abweichen. Also einfach die eigene Stadt suchen und dort irgendwo hin klicken. Google zeigt dann ein kleines Fenster mit Informationen zum ausgewählten Ziel an – und hier stehen auch die Koordinaten:

Nach der Einrichtung findet man das Astro-Sun-Data-Thing unter „Configuration“->“Things“. Hier gibt es unter „Sunset“ ein Range-Event, welches beim Sonnenuntergang getriggert wird.

AstroBinding Items

Hier kann man nun noch auf den Stift klicken, um einen Offset einzustellen – z.B. 30 Minuten vor Sonnenuntergang:

AstroBinding Offset

Mit Szenen arbeiten

Bevor es weiter geht, sollte man sich ein paar Gedanken zur Organisation seines SmartHomes machen. Natürlich lassen sich alle Geräte einzeln schalten – auch über das Sonnenuntergangs-Event (dazu gleich mehr). Vermutlich macht es aber Sinn, bestimmte Geräte in Gruppen oder Szenen zusammenzufassen. So könnte z.B. der Sonnenuntergang die Szene „Abend“ aktivieren. In dieser Szene werden alle Geräte vorbelegt, die üblicherweise Abends verwendet werden: Stimmungslichter, evtl. Musik usw. Die Szene „Abend“ bleibt natürlich nicht zwingend bis zum nächsten Morgen aktiv, sondern könnte z.B. durch die Szene „Schlafenszeit“ abgelöst werden, in der dann via Timer nach einer bestimmten Zeit alle Geräte abgeschaltet werden usw. Hier sind der Kreativität keine Grenzen gesetzt.

Um besagte Szenen umzusetzen, sind ein paar Anpassungen an den Konfigurationsdateien von OpenHab erforderlich. Die Konfiguration von OpenHab befindet sich in einem Ordner auf dem Raspberry Pi, auf den über den Windows-Explorer zugegriffen werden kann (über eine Samba-Freigabe). Hierzu öffnet man den Windows-Explorer und trägt in die Adressleiste folgende Adresse ein:

\\openhabianpi

Openhabian im Explorer öffnen

Hier findet sich im Ordner openHAB-conf ein Unterordner items, in dem wir eine Datei „default.items“ anlegen. Der Name ist eigentlich egal – wichtig ist die Dateiendung „.items“ (wenn dort als Typ: „Textdokument“ steht, sind die Dateiendungen im Explorer ausgeblendet – Dann auf „Organisieren“->“Ordner-und Suchoptionen“->“Ansicht“ klicken und den Haken bei „Erweiterungen bei bekannten Dateitypen ausblenden“ deaktivieren).

Items Datei

In diese Datei wird nun Folgendes eingetragen:

Number   SceneSelect          "Szenenauswahl"

OpenHab aktualisiert sich automatisch, wenn die Konfigurationsdateien geändert werden. Das neue Item „Szenenauswahl“ sollte also nach dem Speichern direkt in der Weboberfläche angezeigt werden:

OpenHab Items

Bei diesem neuen Item handelt es sich um einen Merker, über den die aktuell ausgewählte Szene in Form einer Zahl gespeichert bzw. geändert werden kann.

Programm erstellen

Statt dem Ordner „items“ öffnet man nun den Ordner „rules“ im OpenHab Konfigurationsverzeichnis und legt dort eine Datei „default.rules“ an. Die Datei bekommt den folgenden Inhalt:

rule "Szenenauswahl"
when
  Item SceneSelect received command 
then
  
  if (receivedCommand==3) {    
    //Abend
    WzDeckenleuchte.sendCommand(ON);
              
  } else {
    WzDeckenleuchte.sendCommand(OFF);      
  }

end

Wenn sich also das Item „SceneSelect“ ändert, wird geprüft welche Zahl im Item steht. Bei einer 3 wird das Item mit dem Namen „WzDeckenleuchte“ eingeschaltet, sonst wird es ausgeschaltet.

Um zu testen, ob das auch funktioniert, machen wir noch einen Zwischenschritt – nämlich die Erstellung einer Sitemap. Sitemaps dienen als konfigurierbare Benutzeroberflächen, z.B. für das OpenHab Basic UI (http://openhabianpi:8080/basicui/app) – oder auch für die Smartphone App.

Hiezu wird im Ordner „sitemaps“ die Datei default.sitemap erstellt:

sitemap default label="My smart Home" {
  Selection item=SceneSelect label="Szenenauswahl" mappings=[0="Keine", 1="Aufstehen", 2="Tag", 3="Abend", 4="Schlafenszeit"]
}

Dadurch wird in der Benutzeroberfläche eine Auswahlbox angezeigt, die basierend auf den Einträgen unter „mappings“ die richtige Zahl in das Item „SceneSelect“ schreibt.

OpenHab Basic UI

Wenn das soweit funktioniert, und sich das Licht bei Auswahl von „Abend“ ein- sonst ausschaltet, braucht nun eigentlich nur noch das AstroBinding mit dem SceneSelect Item verbunden werden. Also die folgende Ergänzung in die default.rules Datei hinzufügen (natürlich mit eurer eigenen Channel-Bezeichnung – zu finden in euren Thing-Eigenschaften im Paper UI)

rule "Sonnenuntergang"
when
    Channel 'astro:sun:86d9a348:set#event' triggered START 
then
    SceneSelect.sendCommand(3)
end

Fertig! Ab jetzt wird im SmartHome eine halbe Stunde vor Sonnenuntergang automatisch die Szene „Abend“ aktiviert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.