Siri Sprachbefehle mit Homematic

Wir verwirklichen Ihre Ideen!

Stacks Image 1533
Siri Sprachbefehle an Homematic senden

Ziel: Die Homematic Aktoren, Programme und Variablen sollen mit Apple´s Siri steuerbar sein.
Stacks Image 1863
Komponenten
Zentrale
SD Karte
oder Raspberry Pi 3
Wlan für Pi
Raspberry Pi 2
Maus/Tastatur für Pi
Allgemein
In dieser Anleitung soll es darum gehen, die Homematic mit Sprachbefehlen über Apple´s Siri mit HomeKit zu steuern. "Hey Siri…, Garagentor öffnen"! Das hört sich erstmal nach viel Arbeit an, ist es aber nicht wirklich. Es sind nur ein paar Zeilen Code die mit Copy and Paste in der richtigen Reihenfolge kopiert werden müssen. Das ist machbar und wird ca 2 Std. dauern. Aber nicht weil es so viel Arbeit ist, sondern weil der Pi ne ganze Weile braucht bis alles installiert ist. Was aber benötigt wird ist ein Raspberry Pi 2 oder 3, eine Maus und ein TV oder Monitor mit HDMI für den Desktop des Pi. Sicherlich gehen auch andere "Klein-Computer" aber ich beziehe mich jetzt auf den Pi und mache aus ihm eine Homebridge. Da ich einen Mac besitze habe ich aber dennoch auch die Windows User in dieser Anleitung nicht vergessen.
Anleitung
  • Als erstes brauchen wir die richtige Software für den Pi. Die gibts hier (1.4GB Raspbian Jessie)
  • Nach erfolgreichem Download muss das zip entpackt werden.
  • Nun habt ihr das aktuellste Betriebssystem.img für den Pi
  • Für Windows und Mac User gibt es nun 2 Wege um das img auf die SD Karte zu kopieren (Kartenleser vorausgesetzt)

Mac

  • Am Mac ist dieses Prozedur nicht so leicht wie bei Windows. Um die SD Karte richtig zu installieren, müsst ihr zuerst den "BSD Name" herausfinden. Diesen findet ihr bei:
  • Apple Logo oben links -> Über diesen Mac -> Systembericht -> USB -> disk2
  • Es kann sein das ihr bei disk eine andere Zahl habt. Also bitte diese notieren.
  • Nun Terminal öffnen und diese Zeile schreiben. Achtung die Disk Nummer anpassen sudo diskutil unmount /dev/disk2s1 das s1 lassen und SD Karte nicht entfernen
  • Danach dann das Image auf die SD Karte kopieren sudo dd if=Downloads/2017-01-11-raspbian-jessie.img of=/dev/disk2 bs=1m ggf. Path und Disk anpassen. Dieser Schritt dauert eine ganze weile. Also warten bis wieder der Benutzer im Terminal erscheint.

Windows

  • Für Windows User schlage ich das Programm Win32 Disk Imager vor. Das bitte downloaden und als Administrator öffnen.
  • Nun das Pi Betriebssystem.img öffnen und als Device das Laufwerk der SD Karte wählen.
  • Mit Write wird das Image auf die SD Karte geschrieben. Das kann eine ganze Weile dauern also bitte warten.
Stacks Image 1717
  • Nach erfolgreichem kopieren kann die SD Karte entfernt und den PI gesteckt werden.
  • Nun den PI anschalten. Ich betreibe den Pi via USB Strom. Kann gern auch ein Netzteil gesteckt werden.
  • Um eine Verbindung zum Netzwerk herzustellen habe ich meinen Pi mit HDMI an den TV angesteckt. Man sieht dort nach erfolgreichem hochfahren den Desktop des Pi.
  • Die Verbindung zum Router kann über Lan oder Wlan hergestellt werden. An meinem Pi steckt ein kleiner Wlan Adapter. Über den Desktop des Pi habe ich oben rechts dann eine Wlan Verbindung aufgebaut. Mit Lan gehts automatisch.
Stacks Image 1738
SSH Verbindung herstellen
  • Als nächstes brauchen wir nun die IP Adresse vom Pi. Diese findet man am schnellsten im Router unter Netzwerk Verbindungen und notieren diese. (Bsp:192.168.178.68)
  • Für Windows und Mac User gibt es nun 2 Wege um via SSH auf den PI zuzugreifen

Mac

  • Zuerst muss die SSH Verbindung aktiviert werden. Dazu wechselt man auf den Desktop des PI und schaltet die SSH unter: PI -> Preferences -> Raspberry Pi Configuration -> SSH Enabled
  • Am Mac öffnen wir nun das Terminal und verbinden uns mit via SSH mit dem Pi: ssh pi@192.168.178.68
  • Password raspberry

Windows

  • Zuerst muss die SSH Verbindung aktiviert werden. Dazu wechselt man auf den Desktop des PI und schaltet die SSH unter: PI -> Preferences -> Raspberry Pi Configuration -> SSH Enabled
  • Nun brauchen wir das Programm Putty.
  • Unter Hostname geben wir die IP Adresse vom PI an und bei Connection Typ SSH
  • Nun verbinden wir uns mit dem Pi mit dem Button Open
  • Login: Pi
  • Passwort: raspberry
Stacks Image 1743
Stacks Image 1745
  • Nun gibt es keine Unterschiede mehr zwischen Mac und Windows User. Alle folgenden Befehle sind bei Mac im Terminal oder bei Windows im Putty identisch.
Bitte die Reihenfolge einhalten und jeden Befehl mit Enter bestätigen
Sobald etwas nicht funktioniert muss die Schreibweise überprüft werden. Mache Browser interpretieren Hochkommas, Bindestriche und Gänsefüsschen anderes. Wenn copy&paste nicht funktioniert bitte manuell eingeben.
  • Befehl: sudo apt-get update
  • Befehl: sudo apt-get upgrade (Dauert sehr lange. Bitte waren)
Hier gibt es einen kleinen Unterschied zwischen den Modellen 2 und 3

Raspberry Pi 2


  • Befehl: wget https://nodejs.org/dist/v4.7.2/node-v4.7.2-linux-armv7l.tar.gz
  • Befehl: tar -xvf node-v4.7.2-linux-armv7l.tar.gz
  • Befehl: cd node-v4.7.2-linux-armv7l
  • Befehl: sudo cp -R * /usr/local/
  • Befehl: cd
  • Befehl: rm node–v4.7.2–linux–armv7l.tar.gz
  • Befehl: rm -R node-v4.7.2-linux-armv7l/

Raspberry Pi 3


  • Befehl: wget https://nodejs.org/dist/v4.7.2/node-v4.7.2-linux-armv6l.tar.gz
  • Befehl: tar -xvf node-v4.7.2-linux-armv6l.tar.gz
  • Befehl: cd node-v4.7.2-linux-armv6l
  • Befehl: sudo cp -R * /usr/local/
  • Befehl: cd
  • Befehl: rm node–v4.7.2–linux–armv6l.tar.gz
  • Befehl: rm -R node-v4.7.2-linux-armv6l/
Nun wieder für alle Pi Modelle gleich
  • Befehl: sudo apt-get install libavahi-compat-libdnssd-dev (mit y bestätigen)
  • Befehl: sudo npm install -g -unsafe-perm homebridge
  • Befehl: sudo npm install -g homebridge-homematic (Dauert sehr lange. Bitte waren)
  • Befehl: sudo npm install forever (Startet den Pi mit Homebridge automatisch nach Stromausfall)
  • Befehl: sudo nano /etc/init.d/homebridge (Folgenden Code via nano kopieren)
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
 
dir="/home/pi"
cmd="DEBUG=* /usr/local/bin/homebridge"
user="pi"
 
name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"
 
get_pid() {
    cat "$pid_file"
}
 
is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}
 
case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        if [ -z "$user" ]; then
            sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
        else
            sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
        fi
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        for i in {1..10}
        do
            if ! is_running; then
                break
            fi
 
            echo -n "."
            sleep 1
        done
        echo
 
        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac
 
exit 0
Nun noch ein paar Zeilen Code
  • Befehl: sudo chmod 755 /etc/init.d/homebridge
  • Befehl: sudo update-rc.d homebridge defaults
  • Befehl: mkdir -p ~/.homebridge
  • Befehl: sudo nano ~/.homebridge/config.json (Inhalt dieser Datei in Nano oder Putty kopieren und IP Adresse der CCU2 ändern)
  • Jetzt wechseln wir wieder auf die CCU und werden ein neues Gewerk anlegen um dort dann alle Aktoren anzumelden die mit Siri steuerbar sein sollen.
  • Gewerkeliste bearbeiten
  • Neues Gewerk anlegen
  • Name: Homekit
Stacks Image 1757
  • Das Gewerk muss nun "Homekit" heissen, da wir es ja auch in der config.json so benannt haben. Es kann aber auch Siri heissen, wie man das möchte. Den Namen ändert man in der config.json ("subsection": "Homekit")
  • Nun drückt man Kanal hinzufügen und wählt alle seine gewünschten Autoren aus
Stacks Image 1761
  • Zurück auf das Terminal oder Putty und Befehl eingeben
  • Befehl: homebridge Startet die Homebridge. Wenn alles richtig ist, dann erscheint folgender Bildschirm mit einem grauen Kästchen mit der Nummer: 031-45-154)
Stacks Image 1656
  • Jetzt ist unsere Homebridge erfolgreich gestartet.
  • Eine kleine Eselsbrücke ist nun der Download der App Elgato Eve. Diese App wird benötigt um Apple´s Honekit mit unserer Pi Bridge zu koppeln.
  • App öffnen und Pi Code in die iPhone/iPad App eintragen
  • Gerät auswählen Homebridge
  • Gerät hinzufügen und Code eingeben
  • Nun sollten alle Aktoren erscheinen die wir zuvor im Gewerk Homekit auf der CCU angelegt haben
Stacks Image 1577
  • Alle gefundene Geräte werden im Standardraum zuhause abgelegt.
  • Es empfiehlt sich allen Aktoren den passenden Raum und die Funktion zuzuweisen
  • Aber jeder kann sich das nun selbst zurecht bauen wie man möchte. Es bedarf ein wenig Eingewöhnung in die App.
Stacks Image 1780
Favoriten anlegen um schnell auf verschiedene Autoren zuzugreifen zu können
Stacks Image 1782
Raumliste mit zugeordneten Autoren
Stacks Image 1784
Raum Garten mit allen Aktoren die Garten zugeordnet sind
Stacks Image 1786
Aktor Einstellungen. Hier kann man einen Namen vergeben auf den Siri hören soll
  • Es ist wirklich ein schönes Gefühl wenn der erste Aktor von Siri gesteuert wird. Herrlich!
  • Wenn noch Fragen oder Probleme sind, dann nutzt bitte die Kommentar Funktion. Ich werde versuchen zu helfen wo ich kann.
  • Wie man dann noch Programme und Variablen in das Homekit integriert folgt in einem weiteren Beitrag hier
Siri - Sprachbefehle richtig anwenden
Wichtig ist zu wissen, das man für alle Aktoren eindeutige Namen und Räume vergeben sollte. Siri ist teilweise noch recht starr bei den Formulierungen von Aktionen. Darum hier ein paar Beispiele wie man mit Siri richtig umgehen kann.
Ich sage den zugewiesenen Raum des Aktors immer zuerst.

"Hey Siri…," (Wenn das iPhone im Standby ist, ansonsten kann man das weglassen)
  • Setzte Wohnzimmer Rolladen/Jalousie auf 30%
  • Alle Rollos runter
  • Wie warm ist es im Wohnzimmer
  • Wohnzimmer Heizung auf 21,5 Grad
  • Dimme Wohnzimmer Licht auf 50%
  • Schalte Garagentor ein
  • Schalte Küche Licht ein
  • Schalte Garten Beleuchtung ein
  • Schalte alle Lichter an / aus
  • Man muss wirklich experimentieren, bis Siri auch versteht was man von ihr will.
  • Freuen würde ich mich wenn unten in den Kommentaren noch weitere Kommandos erscheinen.
Wichtige Homebridge Befehle auf dem Pi
Hier die wichtigsten Befehle für die Homebridge auf dem Raspberry Pi.
  • Befehl: sudo service homebridge stop (Stoppt die Homebridge)
  • Befehl: homebridge (Startet die Homebridge)
  • Befehl: sudo nano ~/.homebridge/config.json (Konfiguration der Homebridge)
  • Befehl: sudo shutdown -r 0 (Neustart des Pi)
Variablen und Programme der CCU an die Homebridge übergeben
Wer jetzt noch Lust hat, kann hier noch den letzten Schritt machen, um auch Variablen und Programme der CCU2 mit Siri zu bedienen. Dazu sind nur wenige Schritte notwendig.

  • Starte den Terminal am Mac oder Putty im Windows
  • Melde ich am Pi an: ssh pi@ipadresse und gib das Passwort ein.
  • Stoppe die Homebridge mit: sudo service homebridge stop
  • Öffne mit dem Befehl die config.json: sudo nano ~/.homebridge/config.json
  • Nun müssen wir alle Variablen und Programme in der config.json ergänzen. Es ist wichtig das alle Variablen und Programme genau so heissen wie in der CCU2. Sonst werden sie nicht funktionieren. Auch ist nur eine begrenzte Anzahl an Zeichen verfügbar. Bitte auch Sonderzeichen vermeiden. Hier ein Beispiel mit meinen Variablen:
Stacks Image 1830
Wenn alles geklappt hat…
Kommentare