openHAB 2.x in Verbindung mit unserem Samsung TV

Als nächstes soll unser Samsung TV (UE46D7090) in die Hausautomatisierungssoftware openHAB integriert werden. Ziel ist es nicht mehr eine extra App von Samsung als Fernbedienungsersatz zu verwenden, sondern alles zentral über openHAB zu steuern.

Eine grobe Übersicht über das Samsung-Binding bekommt man hier. Nun muss man sich überlegen, ob man die Konfiguration lieber über die Konfigurationsoberfläche „Paper UI“  umsetzen möchte oder ob man lieber in den Text-Dateien konfiguriert. Ich habe beide Wege getestet, ich finde die manuelle Konfiguration für mich passender.

Variante 1: Konfiguration über „Paper UI“

Man ruft die Web-Oberfläche des openHAB-Systems auf und nimmt folgende Einstellungen vor:

  • Installation des Bindings vornehmen:
    • Paper UI – Extensions – Bindings – Samsung TV Binding = Install
  • Gefundenen TV als „Thing“ aktivieren:
    • Paper UI – Inbox
  • Optional: Konfiguration vornehmen z.B. Host Name, Port
    • Paper UI – Configuration – Things (Edit mit Bleistift)
  • Items erstellen und entsprechend verknüpfen:
    • Paper UI – Configuration – Things (Funktionsmenü mit „T“) – Anpassung der „Funktionen“ z.B. Linked Items zum TV (diese habe ich manuell vorgenommen, da ich sprechendere Namen als bei der automatischen Erkennung wollte)
  • Funktionstest der Konfiguration vornehmen:
    • Control

Und schon ist der Smart-TV in das openHAB-System integriert. Bei diesem Weg kann man aber keinen Einfluss auf die Benennung der „Items“ nehmen. Darum habe ich mich für eine manuelle Variante entschieden 🙂

Variante 2: Manuelle Konfiguration

Things erstellen

Thing samsungtv:tv:livingroom [hostName="xxx.xxx.xxx.xxx", port=55000, refreshInterval=1000]

Damit wurde das „Ding“ mit einem etwas sprechenderem Namen erstellt. Der Parameter hostName muss entsprechend angepasst werden.

Items erstellen

Dimmer SamsungTV_Volume "Samsung TV - Lautstärke ändern" {channel="samsungtv:tv:livingroom:volume"}
Switch SamsungTV_Mute "Samsung TV - Stumm" {channel="samsungtv:tv:livingroom:mute"}
String SamsungTV_Source_Name "Samsung TV - Quellename" {channel="samsungtv:tv:livingroom:sourceName"}
Number SamsungTV_Channel "Samsung TV - Kanalnummer" {channel="samsungtv:tv:livingroom:channel"}
String SamsungTV_Program_Name "Samsung TV - Kanalname" {channel="samsungtv:tv:livingroom:channelName"}
String SamsungTV_Program_Title "Samsung TV - Programmtitel" {channel="samsungtv:tv:livingroom:programTitle"}
String SamsungTV_Key_Code "Samsung TV - Funktion aufrufen" {channel="samsungtv:tv:livingroom:keyCode"}
Switch SamsungTV_Power "Samsung TV - Ausschalten" {channel="samsungtv:tv:livingroom:power"}

Damit hat man schon einmal die Hauptfunktionen für den Samsung TV in openHAB integriert. Nun ist auch ein Test über das „Control“ Menü in „Paper UI“ möglich. Als guter Funktionstest hat sich die keyCode-Funktion heraus gesellt (hier gib es ein paar Detailkommandos dazu).

Integration in Sitemap

Text label="Samsung TV" icon="video" {
Frame label="Samsung TV Control" {
Switch item=SamsungTV_Key_Code label="Kanal wechseln" icon="text" mappings=[KEY_CHUP="+", KEY_CHDOWN="-"]
Switch item=SamsungTV_Key_Code label="Lautstärke ändern" icon="text" mappings=[KEY_VOLUP="+", KEY_VOLDOWN="-"]
Switch item=SamsungTV_Key_Code label="Stumm" icon="text" mappings=[KEY_MUTE="ON", KEY_MUTE="OFF"]
Switch item=SamsungTV_Power label="Ausschalten"
} 
}

Die konfigurierten Optionen sollen nun auch noch in der Web-Oberfläche und der App dargestellt werden. Dazu ist die oben beschriebene Integration in die Sitemap notwendig (ich habe die Funktionen über den keyCode integriert – das war die einfachste Variante).

Automatisierung über Rules

rule "TV Test bei KNX"
 when
 Item Licht_EG_Buero received update ON 
 then
 SamsungTV_Key_Code.sendCommand("KEY_SOURCE")
end

Jetzt besteht auch noch die optionale Möglichkeit die verschiedenen Systeme zu kombinieren. In einem ersten Versuch wird beim Einschalten des Büro-Lichts über das Bus-System das Eingabemodul des TVs gewechselt (kein realistisches Beispiel, aber für einen Test in Ordnung).

Fazit

Hier sieht man, dass man sehr schnell verschiedene Systeme in openHAB integrieren kann. Etwas Zeit hat es mich gekostet einmal den automatischen Weg und einmal den manuellen Weg umzusetzen (das hat mich aber interessiert).

Etwas schwierig ist, dass es je nach openHAB-Version (1 oder 2) unterschiedliche Dokumentationsstände und Aussagen in Foren über die Bindings gibt. Aber mit etwas Einlesen klappt das auch 🙂

Welche Funktionen fallen euch bei der Integration eines Fernsehers in ein Automatisierungssystem ein? Was seht Ihr noch für Erweiterungen?

HomeMatic mit Rauchmelder verbinden

Die Verbindung der Zentraleinheit mit den Funk-Rauchwarnmeldern (HM-Sec-SD-2) geht auch recht einfach (das habe ich mir im ersten Schritt schwieriger vorgestellt).

In ein paar Minuten waren die Geräte miteinander verbunden und damit einsatzbereit (einen weiteren Funktionstest konnte ich um diese Uhrzeit jetzt nicht mehr durchführen):

  • Erst einmal die Weboberfläche öffnen – http://homematic-ccu2 (wenn man nichts geändert hat)
  • Geräte anlernen – dann „HM Gerät anlernen“ aktivieren (dann läuft ein 60 Sekunden Countdown)
  • Am Rauchmelder den Funktionsknopf ein paar Sekunden drücken (nicht nur kurz, da wird ein schriller Alarm ausgelöst)
  • Wenn die Verbindung erfolgreich war (LED blinkt grün), mit allen Rauchmeldern wiederholen
  • Danach unter „Einstellungen – Geräte – Posteingang“ die notwendigen Geräte und Gruppen bestätigen
  • Nun kann man unter „Einstellungen – Geräte“ den Rauchmeldern und der Rauchmeldergruppe einen sprechenden Namen geben
  • Hierbei habe ich dann auch gleich unter „Einstellungen – Räume“ alle Zimmer angelegt (diese kann man dann auch gleich den Geräten zuweisen)
  • Als letztes definiert man noch eine zentrale Rauchmeldergruppe für alle Rauchmelder

Und schon sind die Rauchmelder in einer Gruppe an der Zentraleinheit angeschlossen und können verwendet werden.

Jetzt muss ich mal ein paar Detailfunktionen suchen z.B. Funktionstest bei allen Meldern gleichzeitig durchführen, Melder für Alarmanlage verwenden.

Wer von euch hat die HomeMatic-Rauchwarnmelder im Einsatz? Wie kann man die Geräte im Detail konfigurieren?

HomeMatic CCU2 in Betrieb nehmen

Die gelieferte HomeMatic Zentrale CCU2 (Central Control Unit) soll nach der Lieferung auch in das Netzwerk / Haus integriert werden 🙂

Die Zentrale und die Rauchmelder sieht man hier:

20161220_153003

Die Inbetriebnahme ist mit der beigefügten Anleitung ganz einfach:

  • CCU2 mit Netzwerk und Strom verbinden
  • IP-Adresse wird per DHCP bezogen
  • http://homematic-ccu aufrufen
  • Update für die neueste Version durchführen (von 2.1.3 auf 2.25.15)
  • Uhrzeit und Datum wird automatisch aus dem Internet übernommen

Und schon hat man in ein paar Minuten ein HomeMatic-System in die vorhandene Umgebung integriert.

Die Weboberfläche sieht für mich etwas „altbacken“ aus (das ist aber nur der erste optische Eindruck). Bei meinem Anwendungsfall ist das egal, da ich ja eh openHAB als Frontend verwende und die Komponenten in HomeMatic nur kurz anlernen muss.

Wenn ich später noch Zeit habe, werde ich die ersten drei Funk-Rauchwarnmelder an der CCU2 „anlernen“ 🙂

HomeMatic Zentrale und Rauchmelder wurden geliefert

Heute kamen die ersten HomeMatic-Komponenten für den Test der Rauchmelder an 🙂

Integration FritzBox in das openHAB-System

Neben der Präsenzsteuerung über die FritzBox bzw. WLAN soll natürlich auch die Hauptfunktion – Telefonie – integriert werden. Ziel soll es sein in openHAB die aktuell eingehenden Anrufe zu visualisieren und über das Regelwerk entsprechend darauf zu reagieren.

Was würdet Ihr noch an Telefonie-Funktionen und Einstellungen einer FritzBox-Telefonanlage abfragen? Welche Ideen habt Ihr dazu?

Aufbau der Items

Aus der Dokumentation habe ich die Items wie folgt übernommen (nur die WAN-IP funktioniert nicht – wahrscheinlich liegt das aber an meinem Glasfaser-Provider bzw. der eigenen Firmware):

String fboxName "FBox Model [%s]" {fritzboxtr064="modelName"}
//String fboxWanIP "FBox WAN IP [%s]" {fritzboxtr064="wanip"}
Switch fboxWifi24 "2,4GHz Wifi" {fritzboxtr064="wifi24Switch"}
Switch fboxWifi50 "5,0GHz Wifi" {fritzboxtr064="wifi50Switch"}
Switch fboxGuestWifi "Guest Wifi" {fritzboxtr064="wifiGuestSwitch"}

// only when using call monitor
Switch fboxRinging "Phone ringing [%s]" {fritzboxtr064="callmonitor_ringing" }
Switch fboxRinging_Out "Phone ringing [%s]" {fritzboxtr064="callmonitor_outgoing" }
Call fboxIncomingCall "Incoming call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_ringing" } 
Call fboxOutgoingCall "Outgoing call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_outgoing" }

// resolve numbers to names according phonebook
Call fboxIncomingCallResolved "Incoming call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_ringing:resolveName" } 

// Telephone answering machine (TAM) items
// Number after tamSwitch is ID of configured TAM, start with 0
Switch fboxTAM0Switch "Answering machine ID 0" {fritzboxtr064="tamSwitch:0"}
Number fboxTAM0NewMsg "New Messages TAM 0 [%s]" {fritzboxtr064="tamNewMessages:0"}

// Missed calls: specify the number of last days which should be searched for missed calls
Number fboxMissedCalls "Missed Calls [%s]" {fritzboxtr064="missedCallsInDays:5"}Aufbau der Sitemap

Aufbau der Regel

Die Regel für ein eingehendes Telefonat ist auch sehr einfach gehalten (hier werde ich ggf. als Aktion mir eine E-Mail oder Nachricht auf das Handy schicken lassen):

rule "Phone is ringing"
 when
 // fboxRinging is a switch item which switches to ON if call is detected
 Item fboxRinging changed to ON 
 then
 logInfo("Anrufermeldung", "Generating caller name message...")
 // fboxIncoming call receives numbers/name of incoming call
 val CallType incCall = fboxIncomingCall.state as CallType
 var callerName = incCall.destNum //destNum is external number OR resolved Name if no phonebook entry exists

 // do something with callerName
 logInfo("fRITZbOX","Externe Nummer: " + callerName)
end

Aufbau der Sitemap

Die Visualisierung sollte nun so aussehen (ich habe eine Unterteilung für technische Einstellungen und alles zur Telefonie eingefügt):

2016-12-08_215228

Umgesetzt wurde das in der Konfiguration wie folg:

Text label="FritzBox" icon="alarm" {
  Frame label="Einstellungen" {
    Text item=fboxName label="Modell"
    Switch item=fboxWifi24 label="WLAN 2,4 GHz"
    Switch item=fboxWifi50 label="WLAN 5,0 GHz"
    Switch item=fboxGuestWifi label="Gäste WLAN"
}
 
Frame label="Anrufe" {
    Switch item=fboxRinging label="Eingehendes Telefonat"
    Switch item=fboxRinging_Out label="Ausgehendes Telefonat"
    Text item=fboxIncomingCall label="Eingehendes Telefonat"
    Text item=fboxOutgoingCall label="Ausgehendes Telefonat"
    Text item=fboxIncomingCallResolved label="Eingehendes Telefonat (Name)"
    Switch item=fboxTAM0Switch label="Anrufbeantworter"
    Text item=fboxTAM0NewMsg label="Anrufbeantworter (neue Nachrichten)" icon="text"
    Text item=fboxMissedCalls label="Verpasste Anrufe" icon="text"
  }
}

Steuerung der Garagentore / Torantriebe mit openHAB

Ich konnte unsere beiden Garagentore schon immer per EIB / KNX und per Infrarottaster im Auto aktivieren. Da ich durch die Umstellung auf openHAB jetzt auch eine mobile App auf einen Endgeräten habe, wollte ich auch die Steuerung ohne Infrarottaster durchführen können (damit ich nicht noch ein weiteren Taster mitschleppen muss).

Die Konfiguration war eigentlich ganz einfach, aber im Detail doch etwas aufwändiger (darum beschreibe ich das hier noch einmal). Gelöst habe ich für mich noch nicht, dass ich bis zur Garage keine WLAN-Verbindung mehr habe. Entweder muss ich openHAB noch über das Internet verfügbar machen (was ich eigentlich nicht will) oder ich muss einen WLAN-Repeater in der Garage aufstellen (macht wahrscheinlich Sinn, weil ich dann generell im Garten mehr Empfang habe).

Die Besonderheit der technischen Realisierung ist das Mapping in der Sitemap, damit ein Button anstatt ein „Slider“ dargestellt wird. Außerde musste ich in der Regel etwas „tricksen“, damit ein Timer 3 Sekunden wartet und die richtigen Stati an das Bus-System gemeldet werden.

Aufbau der Items

Ich habe die Torantriebe als Items wie folgt definiert:

Switch Garage_Links_Torantrieb "Torantrieb Garage (Links)" (gTor_Garage, gGarage_Links) {knx="0/0/1"}
Switch Garage_Rechts_Torantrieb "Torantrieb Garage (Rechts)" (gTor_Garage, gGarage_Rechts) {knx="0/0/2"}

Aufbau der Sitemap

Die Sitemap habe ich wie folgt aufgebaut:

Frame {
   Switch item=Garage_Links_Torantrieb label="Torantrieb Garage (Links)" icon="garage_detached" mappings=[ON="@"]
   Switch item=Garage_Rechts_Torantrieb label="Torantrieb Garage (Rechts)" icon="garage_detached" mappings=[ON="@"] 
 }

Aufbau der Regel

Zusätzlich habe ich noch folgende Regel pro Garagentor implementiert:

import org.openhab.core.library.types.*
import org.openhab.model.script.actions.*
import org.openhab.core.transform.actions.*

var Timer timer = null
var Timer Garage_OnTime = null

rule "Garagentor Links"
 when
    Item Garage_Links_Torantrieb received command or
    Time cron "0 0/3 * * * ?"
then
    if(receivedCommand==ON) {
        if(Garage_OnTime == null) {
            Garage_OnTime = createTimer(now.plusSeconds(3)) [
                sendCommand(Garage_Links_Torantrieb, OFF)
                postUpdate(Garage_Links_Torantrieb, OFF)
                Garage_OnTime.cancel
                Garage_OnTime = null
            ]
            logInfo("Gargentor (Links)","Garagentor auf/zu wurde ausgeführt")
        }
    } 
end

Ein „smarter“ Wecker mit openHAB

Ich habe mir gerade einen „smarten Wecker“ mit der Heimautomatisierungssoftware openHAB erstellt. Die Idee bzw. die Konfiguration habe ich hier gesehen.

Ich stelle mir das wie folgt vor:

  • Ich stelle mir den Wecker in der openHAB-App auf 06:30 Uhr von Montag – Freitag
  • Wenn der Wecker klingelt, werden verschiedene Regeln ausgeführt
  • Folgende Ideen hätte ich dazu:
    • Leise Musik wird gespielt
    • Rolladen öffnen sich
    • Licht im Schlafzimmer wird langsam „hochgedimmt“
    • Licht im Bad wird eingeschalten
    • Kaffeemaschine in der Küche wird eingeschalten

Im ersten Schritt habe ich jetzt nur mal das Dimmen des Lichtes geregelt (das sieht man in dem oben beschriebenen Link). Was ich jetzt noch benötige wäre ein Radio den ich von extern steuern kann für das Schlafzimmer und die Konfigurationen für den Rolladen und die Steckdosen.

Ich werde jetzt aber erst einmal versuchen nur die Lichter zu dimmen und weiterhin meinen „analogen Wecker“ zu stellen. Ich möchte einfach mal sehen, wie zuverlässig das System läuft 🙂

Welche Ideen habt Ihr noch? Was würdet Ihr euch mit einer „Wecker-Funktion“ automatisieren?

Neue Anforderungen für die Hausautomatisierung

Das neue Hausautomatisierungssystem openHAB ist jetzt ein paar Tage im Einsatz und hat sich schon recht gut bewährt.

Folgende Systeme möchte ich als nächstes testen (dazu sind auch direkt Bindes in openHAB vorhanden):

  • Anbindung der AVM Fritz!Box
  • Integration des Samsung TV
  • HomeMatic Integration für Rauchmelder
  • Anwesenheits- und Präsenzsteuerung
  • Sprachsteuerung des Systems

AVM Fritz!Box

Durch die Aktivierung des Bindings kann man gleich auf die UPnP-Freigaben der Telefonanlage zugreifen (nur nutze ich diese nicht). Hier bin ich einmal gespannt, welche Funktionen sich durch die Integration der TK-Anlage bieten werden.

Samsung TV

Unser alter Samsung UE46D7090 lässt sich auch direkt in openHAB integrieren. Hier gibt es einige Funktionen, die man dann direkt steuern und automatisieren kann. Wahrscheinlich wird der Mehrwert für mich aber sehr gering sein, da ich ja auch die ganzen Funktionen und Apps vom Samsung nicht nutze.

HomeMatic und Rauchmelder

Hier erhoffe ich mir den größten Mehrwert für die nächste Zeit. Da ich mich aber erst noch mit dem Gesamtsystem und den Rauchmeldern beschäftigen muss, wird das noch etwas dauern.

Anwesenheitserkennung

Ich habe einen interessanten Artikel zur Anwesenheitserkennung in einem Haus mit openHAB gelesen. Hier kann man mit relativ einfachen Mitteln die Präsenz von Personen über das zugeordnete SmartPhone realisieren. Damit würden sich auch noch ein paar weitere Punkte automatisieren lassen.

Sprachsteuerung

Der Clou wäre jetzt noch die Sprachsteuerung des Systems. Hier habe ich bei onesmarthome.de auch einen schönen Artikel über Amazon’s Alexa gefunden. Die oben konfigurierten Funktionen über eine freie Sprache zu automatisieren finde ich sehr spannend 🙂

Fazit

Wenn ich mir die Liste so ansehe, gibt es die nächste Zeit einiges für das SmartHome zu tun. Mal schauen, wann und wie ich die freie Zeit entsprechend verplanen werde 🙂

Welche Funktionen habt Ihr in eurem SmartHome umgesetzt?

Umsetzung der Anforderungen mit openHAB

Unser KNX / EIB – System umfasst momentan ein Einfamilienhaus und die zugehörigen Garagen incl. Außenbereich. EIB-Komponenten habe ich aber nur im Erd- und Obergeschoss verbaut.

Ich verwende folgende Bereiche für unser SmartHome:

  • Licht (schalten und dimmen)
  • Jalousie
  • Steckdosen
  • Torantriebe

Diese Funktionen habe ich mit einem ähnlichen Funktionsumfang 1:1 übernommen. Der Aufwand dafür war auch recht überschaubar. Damit konnte ich nach der Übernahme sofort alle KNX-Funktionen mobil und per Web nutzen.

Interessanter wird es jetzt das besehende Regelwerk (Rule Engine) und die zugehörigen Skripte auf das neue System zu portieren. Für das Regelwerk gab es auch nur wenige bestehende Szenarien:

  • Automatische Steuerung der Jalousien (nach Sonnenaufgang und -untergang)
  • Zeitliche Steuerung der Weihnachtsbeleuchtung im Garten (mit fixen Zeiten)

Die Realisierung / Umsetzung war dann auch recht zügig erledigt. Dann kann ja jetzt der interessanteste Teil für die Integration von neuen Systemen / Anforderungen kommen 🙂

Einstieg in openHAB 2.x

Einen guten Einstieg für meinen Anwendungsfall openHAB mit KNX / EIB zu verwenden, habe ich hier gefunden. Durch dieses deutsche Tutorial konnte ich schon einmal einen ersten Einblick in das System bekommen und die grundlegende Funktion incl. Bus-Anbindung testen.

Später habe ich dann gemerkt, dass openHAB 1.x und 2.x doch etwas unterschiedlicher sind und bin auf die englische Dokumentation gewechselt.

Für mich waren im ersten Schritt folgende Punkte wichtig:

  1. Einarbeitung in das System mit einer Demo-Konfiguration
  2. Konfiguration des Systems über einen Designer
  3. Zugriff per Web und App (Android) auf die Visualisierung
  4. Konfiguration des Systems mit den Daten aus unserem Heim
  5. Übernahme (auch manuell) der Konfiguration aus dem bestehenden System Mr. House
  6. Übernahme (auch manuell) der Skripte und Automatismen aus dem bestehenden System Mr. House

Die Punkte 1. – 3. hat das System schon direkt geliefert. Bei den Punkten 4. – 6.  habe ich mich für eine manuelle Übernahme der Konfigurationen und Daten entschieden.

Nachdem die Punkte erledigt waren, war das System recht schnell funktionsfähig und einsatzbereit. Ich dachte eigentlich nicht, dass ich die Mr. House Umgebung so schnell deaktivieren kann (aber die Services habe ich gleich beendet) 🙂