FRITZ!Box AHA (AVM Home Automation) mit Google Home steuern

Seit dem 08.08.2017 ist der Google Home mit seinem Google Assistant nun auch in Deutschland erhältlich. Da AVM leider noch immer nicht plant Google Home oder Amazon Echo offiziell zu unterstützen, habe ich nach einem eigenen Weg gesucht um meine Smart Home Geräte von AVM per Sprache zu steuern.

Da ich es praktisch finde das keine weitere Basis benötigt wird wenn man eine FRITZ!Box verwendet und ich grundsätzlich die Hardware von AVM sehr mag, finde ich deren Einstellung beziehungsweise Entscheidungen diesbezüglich sehr schade. Abgesehen davon stellt sich mir auch die Frage wie gut man sich auf einem so stark wachsenden Markt behaupten kann wenn man solche Dinge nicht anbietet.

Doch kommen wir nun zu dem eigentlichen Thema: Die Steuerung von FRITZ!DECT 200 und FRITZ!DECT 300 Geräten mithilfe des Google Home. Das ganze funktioniert natürlich auch mit anderen AVM Geräten wie beispielsweise dem FRITZ!DECT 210. Aufgrund der langen Wege die zurück gelegt werden müssen gibt es jedoch eine recht hohe Verzögerung von im Schnitt etwa 5 Sekunden. Sollte jemand damit Probleme haben empfehle ich an dieser Stelle abzubrechen. Technisches Verständnis ist für diese Anleitung sehr empfehlenswert.

Vorgehensweise

Sprachkommando → Google Home → IFTTT (Google Assistent Service) → IFTTT (Maker Webhooks Service) → Aufruf einer URL → DDNS DynDNS Dienst → Raspberry Pi Webserver → fritzctl console → FRITZ!Box → FRITZ!Box AHA Gerät → Schalten

Hardware & Software

Hardware die ich verwendet habe:

  • FRITZ!Box 6490 Cable mit neuster Firmware 6.83
  • Raspberry PI 3 Modell B
  • Diverse FRITZ!DECT 200 und FRITZ!DECT 300 Geräte
  • Google Home
Google Home

Software die ich verwendet habe:

Dienste die ich verwendet habe:

FRITZ!Box vorbereiten

Die FRITZ!Box sollte auf dem neusten Stand sein und somit über das aktuellste FRITZ!OS verfügen. Empfehlenswert wäre es zudem einen extra Benutzer für die Smart-Home Steuerung anzulegen. Um aus dem Internet über eure FRITZ!Box auf den Raspberry Pi zugreifen zu können, müsst ihr neben einem DynDNS Account auch eine Portfreigabe (HTTPS/443) in den Einstellungen hinterlegt haben. Als DynDNS Anbieter empfehle ich euch den kostenlosen und zuverlässigen DynDNS Service. Wie das alles in eurer FRITZ!Box eingerichtet wird, erfahrt ihr online im Service-Bereich von AVM.

Raspberry PI vorbereiten

Auf meinem Raspberry Pi läuft die neuste Version von Raspbian Stretch Lite, Apache sowie PHP. In diesem Howto werde ich aber nicht weiter auf die Grundeinrichtung eines Raspberry Pi und der bekannten Software eingehen. Alle benötigen Anleitungen und Informationen dazu findet ihr schnell über Google. Um jegliche Kommunikation verschlüsselt zu übertragen ist mein Webserver mit einem kostenlosen Let´s Encrypt SSL-Zertifikat ausgestattet. Wie ihr das schnell und einfach einrichten könnt erfahrt ihr hier.

Um unsere AVM Smart-Home Geräte zu steuern muss auf dem Raspberry Pi zusätzlich fritzctl verfügbar sein. Für die Installation fügen wir dem Betriebssystem das benötigte Repository sowie den dazugehörigen Signaturschlüssel hinzu.

Anschließend aktualisieren wir unser lokales Repository und installieren fritzctl.

Über den folgenden Befehl wird die Einrichtung des Scriptes gestartet:

Sobald alle benötigten Informationen bereitgestellt wurden, könnt ihr eure Smart-Home Geräte bereits über die Kommandozeile steuern. Weitere Informationen dazu erhaltet ihr über den folgenden Befehl:

Zwischenstand kontrollieren

  • Ist der Webserver auf eurem Raspberry Pi über die DynDNS Domain erreichbar?
  • Funktioniert die Steuerung eurer Smart Home Geräte über die Kommandozeile?

Wenn alles bisher eingerichtete funktioniert kann sofort es weiter gehen. Andernfalls empfehle ich euch zuerst die Fehler zu beheben.

Script anpassen

Auch wenn das von mir erstellte Script nicht wirklich schön ist funktioniert es zuverlässig und ist sicher. 😉 Ladet euch das ZIP-Archiv mit den benötigten Dateien hier herunter (Version 1.1) und entpackt diese. Anschließend öffnet ihr die Datei „fritz-aha-connect.php“ und nehmt die nachfolgend genannten und notwendigen Anpassungen vor.

Hier wird festgelegt welche Geräte durch dieses Script gesteuert werden dürfen. Die Namen müssen 1:1 aus der FRITZ!Box übernommen werden. Erlaubt sind jedoch nur Großbuchstaben, Kleinbuchstaben und Zahlen. Unter Umständen müsst ihr die Gerätenamen vorher in der FRITZ!Box diesbezüglich anpassen. „Thermostate“ ist ein Platzhalter der es ermöglicht das alle Heizkörperregler gleichzeitig gesteuert werden können. Die beiden Platzhalter „GutenMorgen“ und „GuteNacht“ können dafür verwendet werden um mehrere Steckdosen gleichzeitig zu schalten. Sollten die Platzhalter nicht benutzt oder benötigt werden, könnt ihr diese einfach entfernen.

Um die Sicherheit zu erhöhen wird im Script ein Schlüssel hinterlegt. Dieser muss bei jeder Anfrage übertragen und abgeglichen werden. Ersetzt „KEYEINFÜGEN“ hier auf jeden Fall durch einen selbst erstellen Schlüssel der aus ca. 30 Zeichen besteht. Erlaubt sind hierbei Großbuchstaben, Kleinbuchstaben und Zahlen.

Wenn bestimmte Geräte nicht ausgeschaltet werden dürfen müsst ihr sie hier auflisten. Beispiel: Server & Computer

Wenn bestimmte Geräte nicht umgeschaltet werden dürfen müsst ihr sie hier auflisten. Beispiel: Server & Computer

Solltet ihr den Platzhalter „Thermostate“ benötigen beziehungsweise verwenden, könnt ihr an dieser Stelle die anzusteuernden FRITZ!DECT 300 Geräte mit Ihren Namen auflisten. Das selbe gilt für die Platzhalter „GutenMorgen“ und „GuteNacht“ im Bereich „Befehle ausführen“ mit ihren FRITZ!DECT 200 Geräten.

Die Dateien müssen nach dem speichern in das Hauptverzeichnis des Webservers hochgeladen werden. Bei mir ist das „/var/www/html/“.

IFTTT vorbereiten

In eurem IFTTT Account benötigt ihr die aktivierten Services Google Assistant und Maker Webhooks.

Verwendete IFTTT Google Home Services

Da es für unsere Zwecke keine passenden Applets gibt müssen wir uns diese selber erstellen. Hierfür gehen wir in den Maker Bereich der IFTTT Plattform und klicken unter „Applets“ – „Private“ auf den „New Applet“ Button. Bei einfachem ein-, aus- oder umschalten müssen die grünen Optionen mit dem entsprechenden Status „on“, „off“ oder „toggle“ verwendet werden. Für mehrere Thermostate oder zum Übergeben eines Wertes sind es die blauen Optionen (Beispiele):

if

Trigger: Google Assistent
„Say a simple phrase“/„Say a phrase with a number“
What do you want to say (Value): Licht/Temperatur auf # Grad einstellen
What do you want the Assistant to say in response? (Value): Ok
Language (Value): German

then

Add action
Action: Webhooks
„Make a web request“
URL (Value): https:// Eure-DynDNS-Adresse .tld/fritz-aha-connect.php
Method (Value): POST
Content Type (Value): application/x-www-form-urlencoded
Body (Value): schluessel=KEYEINFÜGEN&geraet=Geraetename1&typ=200/300&status=toggle/{{NumberField}}
Applet title: Licht/Heizung
Applet description: Licht/Heizung

Nach dem speichern des Applets könnt ihr auf „Want to test or use this Applet yourself? Enable it on IFTTT“ klicken um es zu aktivieren. Wenn ihr alles richtig gemacht habt sollte es auf dieser Seite zu sehen sein. Wenn das der Fall ist könnt ihr ab sofort den von euch eingerichteten Sprachbefehl nutzen. Bitte beachtet das es bei einigen Kombinationen von Wörtern Probleme geben kann da diese teilweise nicht von Google akzeptiert werden. Um solche Fehler auszuschließen empfehle ich, wie in den Beispielen, ganz einfach anzufangen. Solltet ihr ein Applet bearbeiten müsst ihr es unter Umständen erneut aktivieren.

Fertigstellung

Da solche Sachen immer zuverlässig, ohne Probleme und auf Anhieb funktionieren (😋) gehe ich davon aus das alles bestens geklappt hat. Somit könnt ihr nun mit der finalen Einrichtung beginnen und euch alle benötigten Applets erstellen und gegebenenfalls Anpassungen am Script vornehmen.

Über euer Feedback in den Kommentaren würde ich mich freuen.

USB-Stick / SD-Karte formatieren

Manchmal ist es notwendig einen USB-Stick oder eine SD-Karte zu formatieren. Sei es aufgrund eines Linux-Dateisystems das unter Windows nicht erkannt wird oder aufgrund von anderen Fehlern. Wird ein Laufwerk jedoch gar nicht mehr in Windows angezeigt oder wird ein Laufwerk viel kleiner angezeigt als es eigentlich ist, kann man dieses nicht mehr auf normalem Wege formatieren. In so einem Fall kann uns diskpart helfen. Diskpart ist ein Werkzeug das in der Kommandozeile verwendet wird und mit dem Datenträger, Partitionen oder Volumes verwaltet werden können.

Durch das formatieren gehen auf dem Datenträger ALLE Daten UNWIDERRUFLICH verloren!

Als erstes müssen wir die Kommandozeile öffnen indem wir die Tastenkombination [Windows-Taste]+[R] drücken, anschließend „cmd“ eingeben und dies mit der [Enter] Taste bestätigen. Alternativ kann man auch die Datei „cmd.exe“ im System32-Ordner von Windows starten. Durch die Eingabe von „diskpart“ in der Kommandozeile öffnet sich nun das gewünschte Programm.

Jetzt lassen wir uns mit dem folgenden Befehl die verfügbaren Datenträger anzeigen.

Tipp: Durch die erneute Eingabe von „list disk“ mit entfernter SD-Karte bzw. entferntem USB-Stick können wir sicherstellen den richtigen Datenträger zu kennen.

An dieser Stelle ist es wichtig den richtigen Datenträger auszuwählen. Sollte man hier einen Fehler machen kann das einen erheblichen Datenverlust zur Folge haben! In meinem Fall handelt es sich um eine 32GB SD-Karte und somit um den Datenträger Nummer 2. Die Nummer findet sich in der Spalte „###“. Die Auswahl des Datenträgers erfolgt folgendermaßen.

03-diskpart

Tipp: Durch die erneute Eingabe von „list disk“ können wir die getroffene Auswahl visuell bestätigen lassen. Der ausgewählte Datenträger ist nun mit einem Stern (*) markiert.

Um den Datenträger zu bereinigen und alle Partitions- oder Volumeformatierungen von dem Datenträger zu entfernen verwenden wir den Befehl:

04-diskpart

Jetzt erstellen wir eine neue Partition, wählen sie aus und aktivieren sie anschließend.

05-diskpart

Nun muss unsere neue Partition formatiert werden. Da es Datenträger gibt die kein NTFS unterstützen, empfehle ich grundsätzlich erstmal Fat32.

06-diskpart

Abschließend weisen wir unserem Datenträger einen Laufwerksbuchstaben zu damit dieser in Windows verwendet werden kann.

07-diskpart

Durch die Eingabe von „exit“ kann das Fenster von diskpart geschlossen werden.

 

Eigene Fritzbox 7490 an o2 Anschluss

In diesem Blog-Eintrag habe ich euch eine Möglichkeit beschrieben wie Ihr das aktuelle Flaggschiff von AVM, die FRITZ!Box 7490, als ehemaliger Alice-Kunde an einem Anschluss von o2 zum laufen bekommt. Dieser Beitrag ist inzwischen veraltet da o2 nun selber die Fritzbox vertreibt und es uns damit deutlich einfacher macht eine eigene Fritzbox zu verwenden. Diese Anleitung gilt für alle Kunden von o2. Unabhängig davon ob man vorher bei Alice war oder direkt bei o2 Kunde geworden ist.

  • Schließt eure Fritzbox an (beiliegende Anleitung beachten) und geht auf die Konfigurationsseite über http://fritz.box/ oder 192.168.178.1
  • Folgt nun dem Assistenten – Für die DSL Verbindung ist der Internet-Anbieter „o2 DSL“ zu verwenden, der Benutzernamen ist eure (Haupt-)Telefonnummer und ein Passwort ist nicht vorhanden; gebt hier irgendetwas ein. – Falls die Daten nicht korrekt sind ruft einfach bei o2 an und fragt nach euren DSL Zugangsdaten. Diese geben sie heraus im Gegensatz zu den VoIP Daten.
  • Geht nun auf der linken Seite im Menü auf „System“ und dann auf den Unterpunkt „Update“ – Stellt sicher das ihr die neuste FRITZ!OS Version für eure Fritzbox habt – Falls dies nicht der Fall sein sollte müsst ihr dieses aktualisieren

Nun kann es schnell gehen oder aber etwas dauern. Im Menüpunkt „Telefonie“ und dann im Unterpunkt „Eigene Rufnummern“ sollten nun in absehbarer Zeit eure Rufnummern aufgelistet sein (die Seite muss manuell aktualisiert werden!). Diese werden von o2 abgerufen und automatisch eingerichtet.
Sollten eure Rufnummern jedoch nach zehn Minuten Geduld noch nicht eingerichtet sein, müsst ihr jetzt eure Fritzbox vom Strom trennen. Nach einer Minute könnt Ihr diese wieder anschließen. Nachdem die Fritzbox nun vollständig gestartet ist und ihr euch wieder auf der Konfigurationsseite angemeldet habt, sollten nun eure Rufnummern vorhanden sein.

Fritzbox 7490 an o2 Anschluss

Falls euch dieser Artikel nicht weiterhilft, geht es hier zur aktuellen Anleitung!

In diesem Beitrag möchte ich euch Schritt für Schritt erklären wie man das aktuelle Flaggschiff von AVM, die FRITZ!Box 7490, als ehemaliger Alice-Kunde an einem Anschluss von o2 zum laufen bekommt. Als sogenannter „Roter Kunde“ bei o2 ist die DSL Verbindung hierbei kein Problem. Das Telefonieren jedoch läuft bei allen neueren Anschlüssen über VoIP. VoIP benötigt Zugangsdaten und spezielle Konfigurationen die o2 aber leider nicht herausgibt.

Diese Anleitung ist für sogenannte „Rote Kunden“ bei o2, die vorher bei Alice waren und die Homebox 3232 verwenden. Das Tool zur Entschlüsselung funktioniert laut eines Forum-Eintrages des Herstellers auch mit den Boxen: IAD 3221, IAD 3222, IAD 3231, IAD 3232 und Turbolink IAD. Ich gehe davon aus das eure derzeitige o2 Box sowie das Internet und die Telefonie funktioniert.

  • Geht auf eure o2 Box über http://o2.box/ oder 192.168.1.1 und loggt euch ein. Geht anschließend auf „System“ -> „Einstellungen sichern“ -> „Konfiguration speichern“. Jetzt sollte sich ein Dialog öffnen um die Datei „config.bin“ herunterzuladen. Speichert sie am besten auf dem Desktop und loggt euch wieder aus.
  • Ladet euch das Tool „IAD_decrypter_v0.02.zip“ von Hanno Heinrichs herunter und speichert es im selben Verzeichnis wie die „config.bin“. Entpackt die Datei „IAD_decrypter.exe“ aus dem ZIP-Verzeichnis. Falls Ihr hierfür kein Program habt, verwendet zum Beispiel 7-Zip.
  • Wenn nun beide Dateien, „IAD_decrypter.exe“ und „config.bin“, im selben Verzeichnis sind startet die „IAD_decrypter.exe“. Nun hat das Tool die „config.bin“ entschlüsselt und eine Datei „config.tgz“ erstellt. Entpackt diese Datei erneut mit einem Program wie 7-ZIP. Jetzt habt Ihr zwei neue Dateien die „database.txt“ und „rc.conf“ heißen.
  • Schließt eure Fritzbox an (beiliegende Anleitung beachten) und geht auf die Konfigurationsseite über http://fritz.box/ oder 192.168.178.1. Folgt hier nun einfach dem Assistenten. Für die DSL Verbindung ist der Internet-Anbieter sowie die Zugangsart „Alice (Hansnet)“. Der Benutzernamen ist eure Telefonnummer. Ein Passwort ist nicht vorgegeben und es wird alles akzeptiert.

Um die folgenden Einstellungen alle setzen zu können, müsst Ihr nun die Ansicht eurer FritzBox von „Standard“ auf „Erweitert“ umstellen. Dies geschieht mit einem Klick auf „Ansicht: Standard“ in der Fußzeile eurer FritzBox-Seite.

ansicht

Geht auf „Telefonie“ -> „Eigene Rufnummern“ und oben auf den Tab „Anschlusseinstellungen“. In den Standortangaben stellt Ihr die für euch passenden Vorwahlen ein. Bei mir ist das:

standortangaben

Da die VoIP-Telefonie über eine zweite Verbindung läuft, müssen wir diese jetzt konfigurieren. Öffnet hierfür die Datei „rc.conf“ mit Wordpad oder einem anderen Programm das die Zeilenumbrüche korrekt darstellt. Bei dem Editor ist zum Beispiel alles hintereinander weg geschrieben und somit nicht wirklich gut zu erkennen was wohin gehört. Sucht nun die folgende Stelle raus:

Scrollt auf der selben Seite der FritzBox ganz nach unten zu dem Punkt „Sprachpakete“ und setzt einen Haken bei „Weitere Verbindung für die Internettelefonie über DSL nutzen (PVC)“. Klickt den Punkt „Zugangsdaten werden benötigt (PPPoE / PPPoA-Zugang)“ an und gebt den Benutzernamen sowie das Passwort aus der „rc.conf“ ein. Bei „VPI“ muss eine „1“ und bei „VCI“ eine „35“ eingetragen sein. Klickt anschließend auf „Übernehmen“.

sprachpakete

Geht jetzt auf den Tab „Rufnummern“ und klickt auf „Neue Rufnummer“. Da wir hier nun die VoIP Daten benötigen, öffnet bitte die Datei „database.txt“ und sucht folgende Stelle:

Gebt die Daten nun wie folgt in die Felder ein und klickt anschließend auf „Übernehmen“. Der Haken bei „“ muss entfernt werden, da Ihr sonst über eure DSL Verbindung telefoniert und nicht über eure neu eingerichtete VoIP Verbindung. Dies hätte zum Beispiel die folge, dass bei einer 24 Stunden Zwangstrennung eure Telefon Verbindung während des Telefonates weg wäre.

internetrufnummer

Wenn alles geklappt hat, solltet Ihr auf der jetztigen Seite einen grünen Punkt neben eurer Rufnummer sehen können.

nummern

Solltet Ihr wie ich mehrere Telefonnummern haben, führt die letzten beide Schritte erneut durch. Dann logischerweise aber mit tel2, user2, pw2 und reg2. Um nun auch noch Telefonieren zu können, müsst Ihr entweder ein DECT Telefon anmelden oder ein Telefon direkt an die FritzBox anschließen. Beachtet hierfür bitte die Anleitung eurer FritzBox.

Und nun: Viel Spaß mit eurer FritzBox!

——————–

Nachtrag: Falls es Probleme gibt und die Telefonie nicht funktioniert, testet bei VCI mal den Wert „32“. – Danke hierfür an kay!

Unbekannte Hardware Identifizieren

Heute beschreibe ich euch eine Möglichkeit wie man unbekannte Hardware in seinem PC oder Laptop identifizieren kann. Es ist zwar nicht gerade eine einfache und komfortable Möglichkeit um herauszufinden um was für Hardware es sich handelt, aber eine sehr effektive Methode mit einer hohen Erfolgsquote. Besonders hilfreich ist dies wenn man einen Laptop besitzt und nicht mal eben das Gehäuse aufschrauben kann um nachzugucken um was es sich handelt. Beim PC ist dies zwar machbar, allerdings auch nicht immer hilfreich. Oftmals wird man aus den Aufklebern auf der Hardware auch nicht wirklich schlau. Und wer kann schon etwas mit den Details anfangen die im Geräte-Manager stehen wenn das System schon nichts damit anfangen kann? 😉
Letzteres möchte ich heute näher bringen. Wir gehen wie folgt vor (Windows):

  • In den Geräte-Manager des Systems gehen
  • Das unbekannte Gerät auswählen
  • Rechte Maustaste – Eigenschaften
  • Reiter „Details“ auswählen
  • Geräteinstanzerkennung, Hardware-ID´s oder ähnliches auswählen

1) So einen „PCI\VEN_10DE&DEV_0641&SUBSYS_15721462&REV_A1″
oder
2) so einen „USB\VID_07D1&PID_3C03&REV_0001″
Eintrag auswählen.

zu 1)

Gerätemanager

In diesem Beispiel habe ich meinen Funktionierenden Netzwerkadapter „NVIDIA nForce 10/100 Mbps Ethernet“ genommen. Aus diesem Eintrag holen wir uns nun zwei Informationen heraus. Und zwar 10DE sowie 0641. Diese findet ihr bei der roten Schrift hinter VEN_ und DEV_.

VEN = Vendor (Hersteller)
DEV = Device (Gerät/Komponente)

zu 2)

Gerätemanager 2

In diesem Beispiel habe ich meinen Funktionierenden Netzwerkadapter „AirPlus G DWL-G122 Drahtlos-USB-Adapter(rev.C) von D-Link #5“ genommen. Aus diesem Eintrag holen wir uns nun zwei Informationen heraus. Und zwar 07D1 sowie 3C03. Diese findet ihr bei der roten Schrift hinter VID_ und PID_.

VID = VendorID (Hersteller)
PID = ProductID (Komponente)

Mit den Daten die wir nun gesammelt haben (aus 1) ) können wir nun die PCIDatabase.com durchsuchen.
Alle Daten (aus 1) sowie 2) ) können wir aber auch einfach nur bei Google eingeben. Bei beiden Varianten bekommt man zu 99% ein gutes und sehr hilfreiches Ergebnis.