FHEM Tutorial-Reihe - Part 12: WhatsApp-Nachrichten und Bilder über FHEM senden und empfangen

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

Jetzt wird es richtig spannend! In diesem Tutorial werden wir WhatsApp in FHEM integrieren! Dabei können wir nicht nur Nachrichten auf dem Smartphone empfangen, sondern sogar antworten und so einen richtigen Dialog mit unserem Smart-Home führen. Seid gespannt!

FHEM-Kurs

Folgende Befehle braucht ihr:

sudo apt-get update
sudo apt-get upgrade
update
shutdown restart
sudo apt-get install python-soappy python-dateutil python-pip python-dev build-essential libtiff5-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk
sudo pip install --upgrade pip
sudo pip install python-axolotl
sudo pip install pillow
sudo su - fhem
echo $HOME
cd $HOME
logout
cd /opt
sudo git clone https://github.com/tgalal/yowsup.git yowsup-master
sudo mkdir yowsup-config
cd yowsup-config
sudo vi yowsup.config

Hier muss die Telefonnummer angepasst werden:

# phone darf derzeit nicht bei whatsapp verwendet werden! z.B. Die Festnetznummer von zu Hause
cc=49
phone=498912345678
id=0000000000
password=
sudo chown -R fhem:dialout /opt/yowsup-master /opt/yowsup-config
sudo su - fhem
cd /opt/yowsup-master

Etwas zum schreiben holen - man bekommt eine 6-Stellige Nummer angesagt

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

Die Ausgabe sieht in etwas so aus

yowsup-cli  v2.0.15
yowsup      v2.5.0

Copyright (c) 2012-2016 Tarek Galal
http://www.openwhatsapp.org

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://openwhatsapp.org/yowsup/donate

INFO:yowsup.common.http.warequest:{"status":"sent","length":6,"method":"voice","retry_after":64,"sms_wait":64,"voice_wait":64}

status: sent
retry_after: 64
length: 6
method: voice

Hier am Ende den erhaltenen Code am Ende ergänzen

python yowsup-cli registration -c /opt/yowsup-config/yowsup.config -R 123456
Die Antwort sieht in etwas so aus:

yowsup-cli  v2.0.15
yowsup      v2.5.0

Copyright (c) 2012-2016 Tarek Galal
http://www.openwhatsapp.org

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://openwhatsapp.org/yowsup/donate

INFO:yowsup.common.http.warequest:{"status":"ok","login":"498912345678","type":"new","pw":"abcdef1234567890=","expiration":4444444444.0,"kind":"free","price":"0,89 \u20ac","cost":"0.89","currency":"EUR","price_expiration":1471669741}

status: ok
kind: free
pw: abcdef1234567890=
price: 0,89 €
price_expiration: 1471669741
currency: EUR
cost: 0.89
expiration: 4444444444.0
login: 498912345678
type: new

Jetzt hinter "pw" das Passwort eingeben

sudo vi /opt/yowsup-config/yowsup.config
exit
cd /opt/yowsup-master

So wird eine Testnachricht verschickt

python yowsup-cli demos -c /opt/yowsup-config/yowsup.config -s 4917112345678 "Das ist ein Test"

Das Gerät in FHEM anlegen

define WhatsApp yowsup
attr WhatsApp cmd /opt/yowsup-master/yowsup-cli demos -c /opt/yowsup-config/yowsup.config --yowsup
attr WhatsApp home PWD

PID und state “connected” sollte da sein. Im WhatsApp auf dem Handy sieht man dann, dass FHEM online ist.

set WhatsApp send <nummer> <text>
set WhatsApp image <nummer> <bildpfad>

Analog zum letzten Beitrag, wird so das aktuellste Bild immer per WhatsApp verschickt (wird nicht im Video gezeigt):

define n_Bewegung notify OUT.Bewegung set WhatsApp image 4917112345678 /var/www/upload/camera/$EVTPART1

So könnte ein Notify aussehen, welches auf Nachrichten reagiert:

WhatsAppMatthias:message.* {
    if ($EVTPART1 eq 'Licht') {
        if ($EVENT =~ 'an') {
            fhem("set WZ_Dekolicht on");
            fhem("set WZ_Fensterlicht on");
            fhem("set WZ_Fernsehlicht on");
        }
        elsif ($EVENT =~ 'aus') {
            fhem("set WZ_Dekolicht off");
            fhem("set WZ_Fensterlicht off");
            fhem("set WZ_Fernsehlicht off");
        }
    }
    elsif ($EVTPART1 eq 'Zocken') {
        fhem("set WZ_Fernsehlicht on");
        fhem("set WZ_Receiver on");
        fhem("set WZ_TV power on");
        fhem("sleep 5 quiet");
        fhem("set WZ_TV input hdmi1");
        fhem("set WZ_Receiver input GAME");
    }
    elsif ($EVTPART1 eq 'Nacht') {
        fhem("set WZ_Dekolicht off");
        fhem("set WZ_Fensterlicht off");
        fhem("set WZ_Fernsehlicht off");
        fhem("set WZ_Receiver off");
        fhem("set WZ_TV power off");
        fhem("set $NAME send Profil Nacht aktiviert");
    }
    elsif ($EVTPART1 eq 'Status') {
        my $temperature = ReadingsVal("WZ_Balkontuer", "temperature", "");
        fhem("set $NAME send Temperatur: $temperature");
    }
    else {
        fhem("set $NAME send Befehlt nicht bekannt");
    }
}

Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Rabattaktionen für Kurse
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.