Wer eine FritzBox der Firma AVM sein eigen nennt, kann sich darüber freuen, dass es auch hierfür ein openHAB-Binding gibt. Mit diesem Binding lässt sich die FritzBox in openHAB einbinden, so dass wir beispielsweise über einen eingehenden Anruf oder die Rufnummer des Anrufenden informiert werden können. Die Einrichtung und Einbindung in openHAB zeigt dieser Artikel.
Zunächst müssen wir an unserer FritzBox den sogenannten „CallMonitor“ aktivieren. Dazu rufen wir mit einem an der FritzBox angeschlossenen Telefon (DECT funktioniert ebenso) die folgende „Telefonnummer“ an:
#96*5*
Addon installieren
Um das Binding bzw. Addon nutzen zu können, installieren wir dieses mittels apt-Paketverwaltung:
apt-get install openhab-addon-binding-fritzbox
Grundkonfiguration
Nun müssen wir die grundlegende Konfiguration in der Datei „/etc/openhab/configurations/openhab.cfg“ durchführen. Dazu ändern wir die folgende Zeile und passen diese, im Abschnitt „Fritz!Box Binding„, auf unsere eigenen Gegebenheiten an:
fritzbox:ip=192.168.178.1
Möchten wir aus openHAB heraus das WLAN aktivieren und deaktivieren, müssen wir das Administrationspasswort der FritzBox angeben. Dieser Schritt ist jedoch optional.
fritzbox:password=sEhRgEhEiM
Wurde auf der FritzBox das Usermanagement aktiviert, muss der entsprechende Nutzer zum oben angegebenen Passwort konfiguriert werden:
fritzbox:user=adminuser
Items definieren
Nun definieren wir in der Datei „/etc/openhab/configurations/default.items“ oder vielleicht sogar in der seperaten .items-Datei die FritzBox-Items:
//FritzBox
Call Incoming_Call_No "Anrufende Nummer [%2$s]" { fritzbox="inbound" }
Switch Incoming_Call "Ringing" { fritzbox="inbound" }
Call Active_Call "Connected to [%1$s from %2$s]" { fritzbox="active" }
Call Letzter_Anrufer "Letzter Anrufer: [%2$s]"
Nun stehen uns in openHAB folgende Werte zur Verfügung:
Ein Schalter, der aktiv wird, wenn jemand anruft
Die anrufende Nummer als String
Einen aktiven Anruf mit der Rufnummer als String
Die Rufnummer des letzten Anrufers als String (Regel erforderlich)
Falls wir Nutzer und ggf. Passwort in der „/etc/openhab/configurations/openhab.cfg“ angegeben haben, können wir mit folgenden Items einige Punkte wie WLAN, DECT, Gäste-WLAN oder den Anrufbeantworter ein- und ausschalten:
Die Anzeige in der Sitemap lässt sich nun einfach realisieren. Möchten wir beispielsweise die Nummer des letzten Anrufenden anzeigen lassen, binden wir das entsprechende Item wie folgt in die Sitemap ein:
Text item=Letzter_Anrufer icon="phone"
Für das Befüllen des Items „Letzter_Anrufer“ ist jedoch eine Regel erforderlich, die im nächsten Schritt erläutert wird. Das Symbol „phone“ gehört nicht zum Standardumfang von openHAB und wurde nachträglich in den Ordner „/usr/share/openhab/webapps/images/“ hinterlegt.
Möchte man, wie oben einleitend gezeigt, sein WLAN, DECT und Anrufbeantworter steuern, ergänzen wir die Sitemap an gewünschter Stelle mit folgenden Einträgen:
Natürlich können wir die neuen Items auch in Regeln verwenden. Beispielsweise möchte ich, dass alle multimedialen Geräte im Haus pausieren und/oder auf Stumm schalten, wenn ein Anruf eingeht:
import org.openhab.library.tel.types.CallType
import org.openhab.core.library.types.*
rule "Jemand ruft an"
when
Item Incoming_Call changed from OFF to ON
then
//Letze Nummer aktualisieren
val CallType call = Incoming_Call_No.state as CallType
postUpdate(Letzter_Anrufer, Incoming_Call_No.state)
//XBMC pausieren
var String mmc63play = MMC63_STATE.state.toString()
if (mmc63play == "Play") {
postUpdate(MMC63_PLAY_TEMP, ON)
sendCommand(MMC63_PLAY, OFF)
}
if (mmc63play == "Pause") {
postUpdate(MMC63_PLAY_TEMP, OFF)
}
executeCommandLine("/scripts/xbmcnotify.sh@@192.168.1.63@@NUTZER@@PASSWORD@@Eingehender Anruf@@Anruf von: " + call.origNum + "@@", 2000)
//LG-TV Ton aus
if(TVC65.state == ON) {
sendCommand(TVC65_TON, OFF)
}
//Squeezebox pausieren
if(RDO61_POWER.state == ON) {
if (RDO61_PLAY.state == ON) {
postUpdate(RDO61_PLAY_TEMP, ON)
}
if (RDO61_PLAY.state == OFF) {
postUpdate(RDO61_PLAY_TEMP, OFF)
}
sendCommand(RDO61_PLAY, OFF)
}
//Tischlampe einschalten
if (TISCHLAMPE_WZ.state == ON) {
postUpdate(TISCHLAMPE_WZ_TEMP, ON)
}
if (TISCHLAMPE_WZ.state == OFF) {
postUpdate(TISCHLAMPE_WZ_TEMP, OFF)
sendCommand(TISCHLAMPE_WZ, ON)
}
end
rule "Anruf beendet"
when
Item Active_Call changed from ON to OFF or
Item Incoming_Call changed from ON to OFF
then
//XBMC starten
if (MMC63_PLAY_TEMP.state == ON) {
sendCommand(MMC63_PLAY, ON)
}
//LG-TV ton an
if(TVC65.state == ON) {
sendCommand(TVC65_TON, ON)
}
//Squeezebox an
if(RDO61_POWER.state == ON) {
if (RDO61_PLAY_TEMP.state == ON) {
sendCommand(RDO61_PLAY, ON)
}
}
//Tischlampe aus
if (TISCHLAMPE_WZ_TEMP.state == OFF) {
sendCommand(TISCHLAMPE_WZ, OFF)
}
end
In dieser Regel werden eine XBMC-Instanz, ein LG-Fernseher und eine Squeezebox pausiert bzw. stumm geschaltet. Zudem wird der vorherige Status in ein Dummy-Item kopiert, damit der Zustand, der vor dem Anruf herrschte, nach Abschluss des Anrufes wiederhergestellt werden kann. Dazu ist natürlich vorab eine Definition der Dummy-Items in einer .items-Datei notwendig. Für die hier gezeigten Geräte bräuchten wir folgende Dummys:
Die Einbindung dieser Geräte wird jeweils in einem seperaten Artikel beschrieben.
Von einem eingehenden Anruf können weitere Details extrahiert und verwendet werden. Die folgende Regel entnimmt dem Item „Incoming_Call_No“ die anrufende sowie angerufene Nummer und versendet eine Mail mit den Nummern als Textkörper:
import org.openhab.library.tel.types.CallType
rule "Mail bei Anruf"
when Item Incoming_Call_No received update
then
var CallType call = Incoming_Call_No.state as CallType
var String mailContent = "Anruf von " + call.origNum + " an " + call.destNum
sendMail( "deinemail@adresse.de" , "Eingehender Anruf", mailContent);
end
openHAB :: Einbinden einer FritzBox
Wer eine FritzBox der Firma AVM sein eigen nennt, kann sich darüber freuen, dass es auch hierfür ein openHAB-Binding gibt. Mit diesem Binding lässt sich die FritzBox in openHAB einbinden, so dass wir beispielsweise über einen eingehenden Anruf oder die Rufnummer des Anrufenden informiert werden können. Die Einrichtung und Einbindung in openHAB zeigt dieser Artikel.
Verfügbare Artikel zu openHAB
FritzBox vorbereiten
Zunächst müssen wir an unserer FritzBox den sogenannten „CallMonitor“ aktivieren. Dazu rufen wir mit einem an der FritzBox angeschlossenen Telefon (DECT funktioniert ebenso) die folgende „Telefonnummer“ an:
Addon installieren
Um das Binding bzw. Addon nutzen zu können, installieren wir dieses mittels apt-Paketverwaltung:
Grundkonfiguration
Nun müssen wir die grundlegende Konfiguration in der Datei „/etc/openhab/configurations/openhab.cfg“ durchführen. Dazu ändern wir die folgende Zeile und passen diese, im Abschnitt „Fritz!Box Binding„, auf unsere eigenen Gegebenheiten an:
Möchten wir aus openHAB heraus das WLAN aktivieren und deaktivieren, müssen wir das Administrationspasswort der FritzBox angeben. Dieser Schritt ist jedoch optional.
Wurde auf der FritzBox das Usermanagement aktiviert, muss der entsprechende Nutzer zum oben angegebenen Passwort konfiguriert werden:
Items definieren
Nun definieren wir in der Datei „/etc/openhab/configurations/default.items“ oder vielleicht sogar in der seperaten .items-Datei die FritzBox-Items:
Nun stehen uns in openHAB folgende Werte zur Verfügung:
Falls wir Nutzer und ggf. Passwort in der „/etc/openhab/configurations/openhab.cfg“ angegeben haben, können wir mit folgenden Items einige Punkte wie WLAN, DECT, Gäste-WLAN oder den Anrufbeantworter ein- und ausschalten:
Sitemap ergänzen
Die Anzeige in der Sitemap lässt sich nun einfach realisieren. Möchten wir beispielsweise die Nummer des letzten Anrufenden anzeigen lassen, binden wir das entsprechende Item wie folgt in die Sitemap ein:
Für das Befüllen des Items „Letzter_Anrufer“ ist jedoch eine Regel erforderlich, die im nächsten Schritt erläutert wird. Das Symbol „phone“ gehört nicht zum Standardumfang von openHAB und wurde nachträglich in den Ordner „/usr/share/openhab/webapps/images/“ hinterlegt.
Möchte man, wie oben einleitend gezeigt, sein WLAN, DECT und Anrufbeantworter steuern, ergänzen wir die Sitemap an gewünschter Stelle mit folgenden Einträgen:
Verwendung in Regeln
Natürlich können wir die neuen Items auch in Regeln verwenden. Beispielsweise möchte ich, dass alle multimedialen Geräte im Haus pausieren und/oder auf Stumm schalten, wenn ein Anruf eingeht:
In dieser Regel werden eine XBMC-Instanz, ein LG-Fernseher und eine Squeezebox pausiert bzw. stumm geschaltet. Zudem wird der vorherige Status in ein Dummy-Item kopiert, damit der Zustand, der vor dem Anruf herrschte, nach Abschluss des Anrufes wiederhergestellt werden kann. Dazu ist natürlich vorab eine Definition der Dummy-Items in einer .items-Datei notwendig. Für die hier gezeigten Geräte bräuchten wir folgende Dummys:
Die Einbindung dieser Geräte wird jeweils in einem seperaten Artikel beschrieben.
Von einem eingehenden Anruf können weitere Details extrahiert und verwendet werden. Die folgende Regel entnimmt dem Item „Incoming_Call_No“ die anrufende sowie angerufene Nummer und versendet eine Mail mit den Nummern als Textkörper:
Verwandte Beiträge
Wenn wir OpenHAB aus den entsprechenden Repositories installiert haben, wurde ein neuer, nicht priviligierter Nutzer…
In diesem Beitrag wurde der 1wire-Sensor DS18B20 vorgestellt und erläutert, wie man diesen an einem…
Kürzlich stellte ich in einem Artikel die Möglichkeit vor, einen LG-Smart-TV mit einer Linux-Kommandozeile zu steuern. Zur…
In diesem Beitrag habe ich gezeigt, wie wir einen Bewegungssensor Typ PIR am Raspberry anschließen…
Alle Schalter, Kontakte oder Schwimmer aus diesem Artikel können in das Hausautomatisierungssystem openHAB eingebunden werden. Nachdem openHAB…