Virtuelle Geräte in homee

Ich habe nach einem Weg gesucht, bisher nicht von homee unterstütze Geräte in homee zu integrieren. In diesem kleinen Tutorial möchte ich Dir zeigen, wie sich über einen kleinen Umweg viele andere Geräte (z.B. Fernseher und Funksteckdosen mit 433Mhz) in homee integrieren lassen.

Voraussetzungen

  • homee Brain Cube
  • Raspberry Pi (RPi 2 oder 3) mit Raspbian

Wenn Du noch keinen RPi hast, kann ich Dir folgendes Komplettset empfehlen:

Amazon Produktempfehlung (Werbung)*

Amazon Produktfoto

Vilros Raspberry Pi 3 Model B Complete Starter Kit --mit 5 Wesentlich Zubehör

  • Enthält - Raspberry Pi 3 - Model B (1GB)
  • Gehause Case--klar transparent
  • 16GB (Class 10) Micro SD Card Voristalliert mit "NOOBS'
  • Europaischen (EU) USB Netzteil Labegerat (5V 2.5 AMP)
  • 1.5 Meter HDMI Kabel--Heatsink fur Raspberry Pi (1 Big 1 Small)

EUR 67,99 auf Amazon.de ansehen

Preis inkl. MwSt, zzgl. Versandkosten (kann abweichen)

Da ist alles dabei was Du für einen Start brauchst.

Hinweis: Die Installation ist grundsätzlich auch auf anderen Systemen möglich. Dazu werden unter Umständen jedoch andere Befehle benötigt.

Installation der benötigten Software

Um die virtuellen Geräte erstellen zu können, brauchen wir NodeJS, NPM, Node-RED und ein Plugin. Zur Installation melden wir uns zuerst per SSH auf dem RPi an. Anstelle des raspberrypi.local kannst du auch die IP-Adresse eingeben.

ssh pi@raspberrypi.local

Anschließend aktualisierst Du mit folgenden Befehlen die Paketquellen und fügst eine Paketquelle für NodeJS hinzu.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Der Befehl node -v sollte Dir nach der erfolgreichen Installation die Versionsnummer ausgeben. Nun installieren wir Node-RED und die benötigten Pakete von NPM.

sudo npm install -g node-red --unsafe-perm
node-red
cd ~/.node-red
npm install node-red-contrib-wemo-emulator
npm install wemore@latest

Damit Node-RED auch nach einem Neustart läuft, erstellen wir nun mit folgendem Befehl eine neue Datei

sudo nano /etc/init.d/node-red

und fügst dort folgenden Inhalt ein:

#!/bin/sh
### BEGIN INIT INFO
# Provides: node-red
# Required-Start:    $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=* sudo node-red --userDir /home/pi/.node-red"
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 -p `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 2 3 4 5 6 7 8 9 10
        # for i in `seq 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

Mit STRG+O lässt sich die Datei speichern, mit STRG+X wird der Editor geschlossen.

Jetzt geben wir der Datei noch die richtigen Rechte und sorgen für den Autostart.

sudo chmod 755 /etc/init.d/node-red
sudo update-rc.d node-red defaults

Wenn alles funktioniert hat, lässt sich Node-Red mit sudo /etc/init.d/node-red start starten. Das Webinterface von Node-Red erreichst Du anschließend über die Adresse http://raspberrypi.local:1880 (oder alternativ wieder mit der IP).

Node-Red Webinterface

Erstellen des virtuellen Geräts

In der linken Spalte sind die so genannten Nodes aufgelistet, die sich nun verwenden lassen. Das virtuelle Gerät simuliert einen WeMo Switch. Um diesen zu erstellen ziehen wir den orangenen Node "wemo emu" in den Flow. Mit einem Doppelklick kannst Du den Node analog dem Beispiel im Bild konfigurieren.

Device Settings

Für einen ersten Test fügen wir noch einen Debug-Node hinzu. Mit einem Klick auf Deploy wird der Flow anschließend aktiviert.

Flow with Debug Node

Gerät zu homee hinzufügen

In homee fügen wir nun ein neues WLAN Gerät hinzu. Dazu wählen wir den Typ Belkin Wemo. Nach einem kurzen Moment sollte das virtuelles Gerät in der Liste auftauchen und sich auswählen lassen.

homee Device Selection

Nach Abschluss der Prozedur steht das Gerät in der Geräteliste zur Verfügung und lässt sich ein- und ausschalten. Nach einem Schaltvorgang erscheinen die in der Konfiguration gesetzten Informationen (Topic und Payload) im Debug Tab. An Stelle des Debug-Nodes lassen sich nun andere Nodes mit dem WeMo Node verknüpfen. Zum Beispiel können in Abhängigkeit des Payloads HTTP Requests ausgeführt werden.

Flow Example

Node-RED ist eine vielseitige und flexible Lösung zur Verbindung von weiteren Smart-Home Geräten. Neben den Standard Nodes gibt es unter anderem Plugins für Harmony Hub, RCSwitch, Hue Lampen und viele mehr. Die Plugins lassen sich am besten über npmjs.com finden.

In einem weiteren Post zeige ich bald wie sich eine Anwesenheitserkennung über Node-RED und die Fritzbox realisieren lässt.

* Wenn Du über diesen Link bei Amazon einkaufst, erhalte ich eine kleine Provision. Damit unterstützt Du mich bei der Pflege meiner OpenSource Projekte. Du zahlst dafür nichts extra.

Share this post!

Das könnte dich auch interessieren

Node-RED mit Docker auf der Synology Diskstation

27.11.2018

Node-RED lässt sich auf zwei verschiedenen Wegen auf einer Synology Diskstation betreiben. Neben der manuellen Installation über SSH kann Node-RED auch via Docker auf der Diskstation laufen.

weiterlesen

So geht’s: Harmony Hub mit Philips Hue verbinden

25.11.2018

Ein Zuhause wird erst dann richtig smart, wenn man nicht mehr manuell eingreifen muss. Ein Beispiel dafür ist eine automatisierte Beleuchtungssteuerung bei einem Filmabend.

weiterlesen

Raspberry Pi absichern

06.11.2018

Wer zuhause einen Raspberry Pi einsetzt, sollte sich auch Gedanken über die Absicherung machen. Gerade wenn der Raspberry als Dienstleister im Hintergrund läuft, geraten regelmäßige Updates und andere Sicherheitsmaßnahmen oft in Vergessenheit.

weiterlesen