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) 🙂

openHAB 2 auf dem Raspberry Pi installieren

Nachdem der neue Raspberry Pi eingetroffen ist, wolle ich nun auch einmal die Hausautomatisierungssoftware openHAB testen. Es gibt dazu eine veröffentlichte Version 1.x und eine Beta-Version 2.x – ich habe zum neuesten Snapshot vom 03.12.2016 gegriffen 🙂

Im ersten Schrtitt hatte ich zu openHAB 1.x hier eine schöne Anleitung auf dem Raspberry Pi und KNX-Anbindung gelesen. Hier war eine manuelle Installation beschrieben – danach hatte ich auch grob verstanden wie das System aussieht.

Nachdem ich mich aber etwas mehr informiert hatte, habe ich in der englischen Dokumentation einen besseren Weg gefunden. Dieser Installationspfad ist etwas praktischer, weil er über ein zentrales Repository auch automatisch aktualisiert werden kann. Auch so Kleinigkeiten, wie automatische Einrichtung der Dienste werden so komplett vorgenommen.

Nach der Installation der Applikation habe ich noch ein paar empfohlene Pakete umgesetzt:

  • Benutzer, Passwörter und Berechtigungen
  • Spezielle Berechtigungen für externe Peripherie
  • Netzwerk-Berechtigungen für Java
  • Netzwerk-Freigaben über Samba für den Eclipse SmartHome Designer

Zum Schluss musste ich mich noch etwas mit den notwendigen Logs des Systems beschäftigen und habe auch noch einmal die Funktionsfähigkeit beim Neustart kontrolliert.

Jetzt kommt der angenehmere Teil, wenn man sich mit der Konfiguration des Systems und Umsetzung der Anforderungen beschäftigen kann 🙂

Raspberry Pi in das Netzwerk integrieren

Nach dem ersten “technischen Funktionscheck” des Raspberry Pi 3 muss das Gerät jetzt in das Netzwerk integriert und an meine Anforderungen angepasst werden.

Für die Heimautomatisierung möchte ich im Raspberry Pi 3 auf Raspbian anstatt auf NOOBS setzen. Das zugehörige Image muss per Win32DiskImager auf die SD-Karte kopiert werden.

Danach kann man das System starten und sich entsprechend anmelden. Im ersten Schritt müssen dann die Spracheinstellungen manuell oder per Konfigurationstool geändert werden. Ich habe mich für den manuellen Weg entschieden:

sudo dpkg-reconfigure locales
sudo dpkg-reconfigure keyboard-configuration
sudo dpkg-reconfigure tzdata
sudo setupcon

Im Konfigurationstool (sudo raspi-config) kann man dann auch noch die Einstellungen kontrollieren und einen SSH-Server aktivieren.

Da ich den Raspberry mit einer festen IP-Adresse betreiben will, müssen noch die interfaces angepasst werden:

sudo vi /etc/network/interfaces

# Ethernet
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.125.5
netmask 255.255.255.0
gateway 192.168.125.1
dns-nameservers 192.168.125.1

Danach habe ich das System einmal neu gestartet und es in den Elektroraum verbannt. Ab jetzt ist ein Zugriff über das Netzwerk und SSH möglich und keine externe Peripherie muss mehr angesteckt sein 🙂

Erstinbetriebnahme des Raspberry Pi 3

Die Tage kam ein Paket mit den bestellten Komponenten für den Raspberry Pi 3 (Model B) für unsere Hausautomatisierung.

In 5 Minuten waren alle Teile zusammengesetzt und die Einweisung konnte durchgeführt werden.

Die Erstinbetriebnahme ist durch das vorinstallierte Betriebssystem NOOBS ganz einfach:

01. microSDK-Karte in Steckplatz einführen
02. USB Tastatur und Maus anstecken
03. HDMI Kabel anstecken
04. Monitor einschalten
05. Netzwerkkabel anschließen
06. Micro-USB-Netzadapter anschließen (dadurch wird der Raspberry Pi eingeschaltet und hochgefahren)

Der fertige Raspberry Pi mit allen Komponenten sieht dann so aus:

20161203_075447

Jetzt geht es daran das richtige Betriebssystem aufzuspielen, das Gerät in das Netzwerk zu nehmen und die Hausautomatisierung zu installieren.

Raspberry Pi für openHAB

Aktuell läuft unsere Hausautomatisierung auf dem vorhandenen NAS Synology DS211+. Da ich demnächst von Mr. House auf openHAB umstellen möchte, würde ich auch gerne die Betriebsplattform für die Automatisierung aktualisieren.

Sobald die Hausautomatisierung auf dem Storage-System läuft, muss das NAS 24 Stunden am Tag im Betrieb sein, um auf alle Events des SmartHome reagieren zu können. Bei der aktuellen kleinen Synology geht das vom Stromverbrauch noch. Da ich aber eher auf ein größeres System mit 8-Festplatten umsteigen möchte z.B. Synology DS1815+ scheint mir das nicht mehr die richtige Plattform zu sein.

Ich habe hier ein Tutorial gefunden, wie man openHAB auf einem Raspberry Pi installieren kann (in diesem Howto wird auch gleich die EIB-Anbindung gut beschrieben) – also eigentlich alles was ich brauche.

Bei Amazon habe ich dann für 56,99 Euro das Raspberry Pi 3 Official Desktop Starter Kit gesehen. Da kann man für den Preis nicht viel verkehrt machen – die Komponenten einzeln wären teurer gewesen 🙂

Habt Ihr schon einmal einen Raspberry bei euch benutzt? Für welche Anwendunsszenarien setzt Ihr den Raspberry ein?