Du kannst ganz einfach FHEM mit WhatsApp verbinden und so wichtige Statusmeldungen von FHEM per WhatsApp auf dem Handy empfangen, aber auch Befehle direkt vom Handy per WhatsApp an FHEM senden. Damit das funktionert benötigst du das Yowsup Modul und eine Telefonnummer, die derzeit nicht mit WhatsApp genutzt wird und die natürlich auch nicht von WhatsApp gesperrt wurde. Am einfachsten ist es hierfür die Festnetznummer zu verwenden, denn sie steht ja auch sinnbildlich für „nach hause telefonieren“.

Raspberry Pi & FHEM aktualisieren

Bevor du mit der Installation beginnst, solltest du deine Raspberry Pi aktualisieren und neu starten und natürlich auch dein FHEM aktualiseren und neu starten. Damit schließt du Fehler durch fehlende oder nicht aktuelle Pakete aus, abgesehen davon vergisst man ja gerne das laufende System zu aktualisieren.

Installation der Module

Als erstes installieren wir verschiedene Module, damit die Kommunikation mit den WhatsApp Servern überhaupt realisiert werden kann. Dazu meldest du dich per SSH auf deinem Raspberry Pi an und gibst folgenden Befehl ein:

sudo apt-get install python-soappy python-dateutil python-pip python-dev build-essential

Anschließend aktualisieren wir das Python Installer Programm, kurz Pip.

sudo pip install --upgrade pip

Nun installieren wir Axolotl.

sudo pip install python-axolotl

Sowie das Modul Pillow:

sudo pip install pillow

Damit haben wir schon einmal die Grundvoraussetzungen geschaffen, damit das System überhaupt über WhatsApp kmmunizieren kann.

Installation zum Empfang von Bildern

Um Bilder empfangen und senden zu können werden noch weitere Pakete benötigt. Diese kannst du weg lassen, wenn du diese Option nicht nutzen willst. Sollte dein FHEM bereits mit WhatsApp kommunizieren, aber keine Bilder senden und empfangen können, liegt es wohl daran das diese Bibliotheken fehlen.

Je nachdem welches Betriebssystem auf deinem Raspberry Pi läuft, musst du unterschiedliche Pakete installieren. Wenn du die gesamte Installation und Einrichtung bisher nach den hier gezeigten Anleitungen gemacht hast, dann benötigst du die folgenden Pakete für Debian Jessie:

sudo apt-get install libtiff5-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk

Ansonsten ist es auch möglich das dein Raspberry Pi mit Debian Wheezy läuft und dann solltest du folgende Pakete installieren:

sudo apt-get install libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk

Benutzer prüfen und anpassen

Da FHEM vom gleichnamigen Benutzer ausgeführt wird, muss ihm auch die Loginshell und ein Home Verzeichnis zugewiesen worden sein. Dazu geben wir folgenden Befehl in die SSH Konsole ein, um die Zuordnung der Loginshell zu prüfen.

getent passwd fhem

Wenn hier „/bin/false“ steht muss die Zuweisung mit folgendem Befehl angepasst werden, damit FHEM auf die Loginshell zugreifen kann.

sudo chsh -s /bin/bash fhem

Anschließend wechseln wir auf den Benutzer FHEM

sudo su - fhem

und prüfen das Home Verzeichnis.

echo $HOME

Das Home Verzeichnis sollte „/opt/fhem“ sein. Wenn das nicht der Fall ist, passen wir es mit folgendem Befehl einfach an.

sudo usermod -m -d /opt/fhem fhem

Anschließend kannst du einfach zu deinem normalen Benutzer zurück wechseln. Wenn dein Raspberry Pi noch mit den ursprünglichen Einstellungen läuft ist das der Benutzer „pi“ mit dem Passwort „raspberry“. Ansonsten musst du die Eingaben entsprechend anpassen.

sudo su - pi

Anschließend gibst du das Passwort ein und dann solltest du wieder als normaler Benutzer eingeloggt sein.

Yowsup installieren

Nun kommen wir zum eigentlichen Programm, das später von FHEM angesprochen wird und mit den WhatsApp Servern kommuniziert. Dazu wechseln wir in das Verzeichnis „/opt“.

cd /opt

Anschließen laden wir die Dateien für Yowsup vom Server auf den Raspberry Pi in den Ordner „yowsup-master“.

sudo git clone https://github.com/tgalal/yowsup.git yowsup-master

Yowsup konfigurieren

Nun legen wir uns noch den Ordner „yowsup-config“ für die Konfigurationsdateien an.

sudo mkdir yowsup-config

Danach wechseln wir auch gleich in den Ordner „yowsup-config“.

cd yowsup-config

Dann öffnen wir die leere Konfigurationsdatei im Editor.

sudo nano yowsup.config

Nun benötigst du die bereits erwähnte Telefonnummer, welche derzeit nicht mit WhatsApp genutzt wird und auch noch nicht von WhatsApp gesperrt wurde. Es bietet sich hier in den meisten Fällen an die eigene Festnetznummer zu verwenden.

Du schreibst nun einfach den folgenden Inhalt in die leere Datei und passt ihn anschließend entsprechend an. Die Ziffern „49“ stehen für deine Ländervorwahl, für Deutschland ist es die „49“ und du musst sie eventuell entsprechend anpassen. Hinter „phone“ trägst du nun deine Telefonnummer mit Ländervorwahl ein, das heißt du ersetzt die erste 0 der Vorwahl durch die Ländervorwahl. Anschließend folgen der Rest der Vorwahl und die Rufnummer. Die Felder „id“ und „password“ bleiben vorerst so wie sie sind.

cc=49
phone=491111188888888
id=0000000000
password=

Wenn du fertig bist kannst du die Datei mit „Strg+O“ speichern, den Speicherort mit „Eingabe“ bestätigen und den Editor mit „Strg+X“ verlassen. Das sollte aber auch alles am unteren Bildschirmrand der SSH Konsole zu lesen sein.

Nun müssen wir dem Benutzer „fhem“ noch die passenden Rechte geben, damit er auf die eben neu erstellten Ordner und alle darin enthaltenen Dateien zugreifen darf.

sudo chown -R fhem:dialout /opt/yowsup-master /opt/yowsup-config

WhatsApp registrieren

Als nächstes musst du die Telefonnummer bei WhatsApp registrieren. Dazu wechseln wir zunächst auf den Benutzer „fhem“ und begeben uns ins Verzeichnis „yowsup master“.

sudo su - fhem
cd /opt/yowsup-master

Sollte das nicht funktionieren wie erwartet, wurden die Einstellungen für den Benutzer „fhem“ nicht richtig gesetzt.

Anschließend starten wir die Registrierung bei WhatsApp indem wir folgenden Befehl in die SSH Konsole eingeben. Sollte das funktionieren erhalten wir eine SMS mit einem Bestätigungscode auf unser Telefon. Du solltest also Zettel und Stift bereit halten. Solltest du eine Festnetznummer verwenden wird dir die SMS normalerweise vorgelesen.

python yowsup-cli registration -c /opt/yowsup-config/yowsup.config -r sms

Wenn das nicht funktioniert kannst du im Befehl auch „sms“ einfach durch „voice“ ersetzen und erhältst dann einen Sprachanruf.

python yowsup-cli registration -c /opt/yowsup-config/yowsup.config -r voice

Du erhältst nun eine entsprechende Rückmeldung. Sollte hier etwas von „old version“ stehen, musst du ein paar weitere Einstellungen vornehmen, wie es bei Yowsup im Bugreport beschrieben ist. Sollte ein anderer Fehler auftreten schaust du ebenfalls dort, denn die Dinge ändern sich ständig. Manchmal kann es aber vorkommen das es aus irgendwelchen anderen Gründen zuerst nicht funktioniert, was dann wie folgt aussieht.

de sms
status: fail
retry_after: 3600
reason: no_routes

Hier hilft es kurz zu warten und es später erneut zu probieren. Es ist nicht sinnvoll den Befehl immer wieder kurz hinter einander auszuführen, da die Telefonnummer sonst mit hoher Wahrscheinlichkeit gesperrt wird. Manchmal reicht es auch aus einfach wie oben beschrieben von „sms“ auf „voice“ umzustellen.

Wenn alles funktioniert hat erhältst du entweder per SMS oder per Sprachanruf einen 6 stelligen Verifizierungscode. Diesen hast du dir hoffentlich notiert, denn wir müssen diesen nun zurück schicken, um die Registrierung abzuschließen. Das tun wir mit folgendem Befehl, wobei du „123456“ durch deinen Bestätigungscode ersetzt.

python yowsup-cli registration -c /opt/yowsup-config/yowsup.config -R 123456

Sobald das funktioniert hat bekommst du eine Rückmeldung mit deinem Passwort, hier hinter „pw:“ mit „xxxxxxxxxxxxxxxxxxxxxxxxxxxx“ maskiert. Dieses Passwort solltest du dir unbedingt kopieren, denn es wird gleich noch mehrfach benötigt.

status: ok
kind: free
pw: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
price: $0.99
price_expiration: 1547734583
currency: USD
cost: 0.99
expiration: 4444444444.0
login: 493460425172
type: new

Konfiguration anpassen

Als nächstes müssen wir das Passwort in die Konfigurationsdatei einfügen. Dazu rufen wir die Datei wieder im Editor auf.

nano /opt/yowsup-config/yowsup.config

Anschließend bearbeiten wir die Datei und fügen hinter „password=“ mit einem Rechtsklick das eben kopierte Passwort ein, hier ebenfalls mit „xxxxxxxxxxxxxxxxxxxxxxxxxxxx“ maskiert.

cc=49
phone=498912345678
id=0000000000
password=xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Konfiguration testen

Als nächstes können wir die Konfiguration testen, indem wir eine WhatsApp Nachricht an eine andere bei WhatsApp registrierte Nummer schicken. Dazu wechseln wir zuerst in das andere Verzeichnis.

cd /opt/yowsup-master

Nun bietet es sich sich an eine Nachricht an das eigene Handy zu schicken, weshalb du einfach die Telefonnummer durch deine Handynummer ersetzt. Auch hier muss anstelle der 0 die passende Ländervorwahl angegeben werden und natürlich kannst du eine beliebige Nachricht verschicken solange sie in Anführungszeichen steht.

python yowsup-cli demos -c /opt/yowsup-config/yowsup.config -s 4922299999999 "Hallo ich bin dein Raspberry Pi!"

Wenn hier alles richtig ist solltest du auf deinem Handy eine WhatsApp Nachricht bekommen. Anschließend kannst du WhatsApp mit FHEM verwenden.