, , , ,

Homematic Sprachsteuerung – Homebridge jetzt mit grafischer Oberfläche verwalten

Über das Homekit und die Integration von Homematic habe wir schon sehr viel berichtet. Die Homebridge ist eine Programm, das z.B. auf dem Raspberry Pi läuft. Dieses bildet die Schnittstelle zu anderen Systemen wie z.B. Homematic, welche nicht von sich aus kompatibel mit Apple sind. So können auch Fremdsysteme per Sprache mit Siri und bequem über die Smarthome App von Apple gesteuert werden. Wie Ihr die Bridge aufsetzt, installiert und konfiguriert haben wir Euch in etlichen Tutorials bereits ausführlich beschrieben, heute will ich Euch aber eine sehr interessante Erweiterung vorstellen, die die Homebridge um eine grafische Oberfläche erweitert, die dann per Webbrowser aufgerufen werden kann.

Status

So könnt Ihr die config-Datei, du zuvor immer über den Putty per SSH angepasst werden musste über den Webbrowser ändern. Auch können jetzt Geräte direkt über dieses Fenster bedient und eingesehen werden. Ein weiterer großer Vorteil ist, das der Status der Bridge jederzeit mit einem Blick eingesehen werden kann. Auch kann die Bridge direkt über dieses Fenster neu gestartet, upgedatet und beendet werden.

Auch wenn ein neues Gerät zur Homebridge hinzugefügt worden ist, muss diese nicht mehr über die Console neu gestartet werden. Die komplette Bedienung findet ganz bequem über die grafische Oberfläche statt.

Installation von Homebridge Config UI X

Um die Oberfläche zu installieren, muss zuerst eine Homebridge aufgesetzt werden. Dazu folgt Ihr der ausführlichen Anleitung zur Installation der Homebridge, die ich Euch bereits geschrieben habe. Nach dem Ihr alles fertig installiert habt, kann nun die Config UI X installiert werden.

Dazu führt Ihr folgenden Befehl über SSH auf Eurem Raspberry Pi aus:

sudo npm install -g --unsafe-perm homebridge-config-ui-x

Nachdem die Installation durchgelaufen ist, müssen wir noch ein letzemal die config anpassen:

sudo nano ~/.homebridge/config.json

Hier müssen wir jetzt folgenden Eintrag bei „plattform“ergänzen:

{
            "platform": "config",
            "name": "Config",
            "port": 8083,
            "sudo": true,
            "restart": "sudo -n systemctl restart homebridge",
            "log": {
                "method": "systemd",
                "service": "homebridge"
            }

Als Beispiel habe ich Euch einen Auszug aus meiner Config bereitgestellt, damit Ihr ein Beispiel habt, an dem Ihr Euch richten könnt:

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:31",
        "port": 51826,
        "pin": "031-45-154"
    },
    "platforms": [
        {
            "platform": "HomeMatic",
            "name": "HomeMatic CCU3",
            "ccu_ip": "ccu3-webui",
            "enable_hmip": "true",
            "filter_device": [],
            "filter_channel": [],
            "outlets": [],
            "doors": [],
            "windows": [],
            "programs": [],
            "accessories": [],
            "subsection": "Homekit"
        },
        {
            "platform": "config",
            "name": "Config",
            "port": 8083,
            "sudo": true,
            "restart": "sudo -n systemctl restart homebridge",
            "log": {
                "method": "systemd",
                "service": "homebridge"
            }
        }
    ],
    "accessories": []
}

Zur Erklärung der config

Die Platform „config“ wird hier eingestellt. Ich will meine Config UI X über http://IP-vom-PI:8083 erreichen, da die anderen Ports bereits durch ioBroker und die VIS belegt sind. Daher habe ich den Port auf 8083 gelegt.

Auch können wir bei ccu_ip den Namen der CCU eintragen. So müssen wir nicht manuell die IP-Adresse heraussuchen. Bei Verwendung einer CCU2 lautet dieser homematic-ccu2. Bei einer CCU3 lautet der Name ccu3-webui.

Wir müssen nun auch noch dafür sorgen, dass die Homebridge automatisch neu gestartet werden kann über den Browser. Dazu benötigen wir den Eintrag „restart“. Da wir in der vorherigen Anleitung den Autostart über systemd eingerichtet haben, muss auch dies hier vermerkt werden. Die nötigen Codezeilen sehr Ihr bereits im oberen Beispiel.

Einen weiteren kleinen Punkt, den wir beachten müssen, ist das die Homebridge im „unsafe-Mode“ ausgeführt werden muss. Der Befhel dazu lautet:

homebridge -I

Doch dieser Befehl alleine bringt uns nichts, da wir die Homebridge mit diesem befhel nur in einer Session starten. Wenn wir später einen Neustart über Config UI X machen, wird die Homebridge erneut in „normale-Mode“ ausgeführt.

Autostart der Homebridge anpassen

Daher müssen wir auch noch eine kleine Modifikation an systemd vornehmen. Dazu öffnen wir diese mit folgendem Befehl:

sudo nano /etc/init.d/homebridge

Hier sollte bereits der Inhalt aus der vorheringen Anleitung zu finden sein. Wir müssen nun die Zeile „su – pi -c“ „homebridge > /dev/null 2<&1 &“ um ein homebridge -I ergänzen. Den gesamten Inhalt habe ich Euch hier erneut kopiert:

#!/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 for homebridge
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof homebridge`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is already running"
else
su - pi -c "homebridge -I > /dev/null 2>&1 &"
echo "Homebridge starting"
$0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is not running"
else
kill $PID
echo "Homebridge closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
$0 start
else
$0 stop
$0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is running PID $PID"
else
echo "Homebridge is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0

Nchdem Ihr auch diese Änderung vorgenommen habt, startet die Homebridge nun automatisch im „unsafe-Mode“ dadurh werden alle Geräte zur Config UI X gemappt. Würden wir die Homebridge nicht in diesem Modus laufen lassen, würden die Homebridge Geräte nicht auf der Oberfläche erscheinen. Mit Strg + X und dann mit „Y“ bestatätigen verlassen wir das Fenster.

Nun müssen wir noch abschließend Rechte vergeben, damit alles ordnungsgemäß starten kann. Dazu führend wir folgende Befehle aus:

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

sudo reboot

Damit haben wir nun alles konfiguriert und können nun die grafische Oberfläche der Config UI X aufrufen.

Dazu öffnen wir die IP-Adresse des PI’s auf dem entsprechenden Port, den wir oben vergeben haben: http://IP-vom-PI:8083

Nun sehen wir eine Oberfläche. Der Nutzer lautet „admin“ und das Passwort ebenfalls „admin“. Dieses können wir später ändern.

Zuerst sollten wir testen, ob wir die Bridge über die Oberfläche neu starten können. Dazu klicken wir recht oben auf den IO-Schalter. Nach einer Weile sollte die Bridge wieder laufen. Ist dies der Fall, haben wir alle Rechte richtig vergeben und auch die systemd richtig angepasst.

In dem Registereiter „Plugins“ sehen wir nun auch alle von uns installierten Erweiterungen. Hier können wir zusätzliche Erweiterungen direkt über die Oberfläche suchen und auch installieren!

Unter dem Punkt „Config“ sehen wir die Konfigurationsdatei und können diese hier ganz bequem über den Browser anpassen. Wir müssen dazu nicht mehr über SSH gehen. 

Bei „Geräte“ könnt Ihr nun auch alle bereits gemappten Geräte einsehen und auch bedienen.

ich finde die Erweiterung einfach nur klasse und Erleichtert das Einbinden und Konfigurieren der Homebridge auch für unerfahrene Benutzer enorm!

21 Kommentare
  1. Erik
    Erik sagte:

    Hallo,

    Super Anleitung.
    Hat soweit alles gut funktioniert, nur leider stehen auf dem Iphone im Homekit alle Geräte auf Aktualisieren und es passiert nichts.
    Kann kein Gerät nun mehr steuert. Shr ärgerlich.
    Ähat jemand eine Idee, woran dies liegen kann.

    Danke

    Erik

    Antworten
    • Erik
      Erik sagte:

      Fehler gefunden.
      Nachdem ich die ui installiert habe, habe ich alle plugins aktualisiert, u.a. Das homematic plugin.
      Hier hatte ich nach anleitung aus diesem blog einen manuellen fix getätigt, der mit dem plugin update überschrieben wurde.
      Fix erneut eingestellt und alles war gut
      Gut, wenn man Experimente im system. It snapshot vorher tätigt…

      Antworten
  2. André
    André sagte:

    Hi, super Anleitung, aber bitte in dem Muster der Homebridge Datei in Zeile 19 bitte die beiden & entfernen, dann funktioniert auch der Autostart. André

    Antworten
  3. Carsten
    Carsten sagte:

    Hallo,
    danke für die tolle Anleitung. Der manuelle Start funktioniert, der automatisierte nicht. Ich habe den Dienst dann mal gestartet und bekomme die folgende Fehlermeldung:

    -su: amp: Mehrdeutige Umlenkung.
    -su: 1: Kommando nicht gefunden.
    -su: amp: Kommando nicht gefunden.
    Homebridge starting
    Homebridge is not running

    Das Skript habe ich 1:1 von hier kopiert und eingefügt.

    Gruß
    Carsten

    Antworten
  4. Olaf
    Olaf sagte:

    Hallo,

    leider bekomme ich das Protokoll nicht angezeigt:

    Using systemd to tail logs
    CMD: sudo -n journalctl -o cat -n 500 -f -u homebridge

    sudo: a password is required

    The log tail command „sudo -n journalctl -o cat -n 500 -f -u homebridge“ exited with code 1.
    Please check the command in your config.json is correct.

    See https://github.com/oznu/homebridge-config-ui-x#log-viewer-configuration for instructions.

    Da ich kein Linux-Experte bin brauche ich mal einen kleinen Tipp ;-)))

    Vielen Dank im voraus.

    Antworten
  5. Roma
    Roma sagte:

    Hi super Anleitungen I’m allgemeinen.
    Handisch funktionert auch alles nur findet kein Autostart statt.
    Wo ran kann es noch lieben? Die /etc/init.d/homebridge ist nach ihrem Mister erstellt und auch der autorum
    Was mache ich falsch?

    Besten Dank
    Mit freundlichen Grüßen

    Roman Joerg

    Antworten
    • Roman
      Roman sagte:

      Hallo zusammen
      Hat sich erledigt
      Läuft wieder alles wie es soll. Vielen Dank für die schönen Ideen!

      Mit freundlichen Grüßen

      Roman

      Antworten
  6. Kai
    Kai sagte:

    Hallo,
    ich habe eine andere Autostart, wo muss ich denn den Befehl „su – pi -c „homebridge -I > /dev/null 2>&1 &““
    eintragen?

    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides: homebridge
    # 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=“/root“
    cmd=“DEBUG=* /usr/local/bin/homebridge“
    user=“root“

    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

    Antworten
  7. Fred
    Fred sagte:

    Super Tool, Install. lief wie beschrieben. Ich sehr nur den Reiter Geräte nicht, alles andere ist wie beschrieben vorhanden. Was habe ich vergessen?

    Antworten
  8. Oliver
    Oliver sagte:

    Danke für den Tipp. EIngerichtet läuft. Super.
    Ich habe aber immernoch das Problem dass seit meiner CCU3 (hatte vorher die 2er) die Fensterkontakte in iOS nur noch als geschlossen angezeigt werden. Habe schon alle Homebridge Komponenten upgedated, aber nichts hilft.
    Auch nicht das feste deklarieren der Fenster als „window“ in der config.json.
    Auch bei Google finde ich nicht wirklich hilfe … alle dort berichteten Probleme sind andere.
    Die Config UI zeigt mir erstaunlicherweise die Fenstersensoren als „Not Supported“ an.
    Hat irgendjemand eine Ahnung, woran das liegen könnte ?
    Gruß, Oliver

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert