OpenHAB 3 in Docker mit INSTAR Camera Binding

Siehe auch Übersichts-Thread: OpenHAB 3 Update =>

Schritt für Schritt Anleitung

OpenHAB3 Installation

Download

Für die Installation werde Docker verwenden. Dies muß zuerst auf dem System installiert werden:

Nachdem Docker vorhanden ist, kann man mit dem folgenden Befehl das aktuellste (SNAPSHOT) Image von OpenHAB herunterladen:

docker pull openhab/openhab:snapshot-alpine

System vorbereiten

Jetzt muß man die richtigen Benutzer und Verzeichnisse auf dem LINUX System bereitstellen (in meinen Fall eine aktuelle Version von Debian LINUX „Bullseye“):

groupadd -g 9001 openhab
useradd -g 9001 openhab
usermod -a -G openhab root

Der root Benutzer im letzten Befehl muß durch den namen des aktiven Nutzers ersetzt werden - diesen kann man mit dem folgenden Befehl erfragen: whoami.

mkdir -p /opt/openhab/{openhab_addons,openhab_conf,openhab_userdata}
chmod -R 775 /opt/openhab

Ich meinem Fall stelle ich dem im nächsten Schritt erstellten Docker Container Volumen (permanenten Speicherplatz) im /opt Verzeichnis zur Verfügung. Wenn man dies woanders ablegen möchte, muß man das Verzeichnis hier und im folgenden Schritt entsprechend anpassen.

Erstellen des Docker Containers

Mit dem folgenden Befehl kann man jetzt aus dem Docker Image einen Container hochfahren und ihn die zuvor erstellten Verzeichnisse nutzen lassen:

docker run \
    --name openhab \
    --net=host \
    --privileged \
    --rm \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/openhab/openhab_addons:/openhab/addons \
    -v /opt/openhab/openhab_conf:/openhab/conf \
    -v /opt/openhab/openhab_userdata:/openhab/userdata \
    -d \
    openhab/openhab:snapshot-alpine

Nach ein paar Sekunden sollte der Container mit dem Status healthy laufen:

docker ps
                                                                                                 
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS                    PORTS     NAMES
a1a778da629b   openhab/openhab:snapshot-alpine   "/entrypoint su-exec…"   22 minutes ago   Up 22 minutes (healthy)             openhab

Aber geben Sie ihm noch ein paar Minuten bevor Sie auf die Weboberfläche zugreifen. In meinem Fall hat der Server die IP Adresse 192.168.2.111 und die OpenHab Oberfläche läuft auf dem Port 8080.


Dort wird man zuerst vom Installations-Wizard begrüßt und kann sofort das OpenHAB `Camera Binding` (ggf. das `MQTT Binding` installieren) - siehe oben verlinkten Thread für Details.


Hinzufügen der Kamera


Hier kann die Kamera jetzt als Thing hinzugefügt werden (Details - siehe oben verlinkten Thread). Jedoch fehlt jetzt noch das FFMPEG, das zur Wiedergabe des Videostreams benötigt wird


FFMPEG

Wie oben mit dem docker ps ausgelesen, hat mein OpenHab Container die ID a1a778da629b erhalten (bei Ihnen wird dies eine andere sein). Darüber kann ich mich jetzt mit dem Container verbinden und FFMPEG nachinstallieren:

docker exec -ti a1a778da629b /bin/ash

/openhab # ffmpeg -version
/bin/ash: ffmpeg: not found

/openhab # apk add ffmpeg

/openhab # fmpeg -version
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.2.1 (Alpine 10.2.1_pre1) 20201203


Zurück in der OpenHab Oberfläche kann man in der Kamera Thing Konfiguration die Standard FFMPEG Einstellungen übernehmen und das Thing speichern:



In dem Beispiel oben habe ich das Output Verzeichnis von FFMPEG auf /openhab/userdata/camera gelegt. Jetzt müssen wir noch schauen, dass dieses Verzeichnis auch vorhanden ist. Also zurück in den Docker Container indem wir eben noch FFMPEG installiert haben:

/openhab # mkdir /openhab/userdata/camera
/openhab # chown openhab:openhab /openhab/userdata/camera


Und unter Channels kann man jetzt einen Bild-Kanal und Slider für die Pan&Tilt Kontrolle hinzugefügt werden (Details siehe wieder oben verlinkten Thread).



In der Code-Ansicht schaut das ganze wie folgt aus:

UID: ipcamera:instar:f22b13adc0
label: Instar Camera with API
thingTypeUID: ipcamera:instar
configuration:
  mjpegOptions: -q:v 5 -r 2 -vf scale=640:-2 -update 1
  ipAddress: 192.168.2.117
  updateImageWhen: "0"
  gifPreroll: 0
  onvifPort: 8080
  ffmpegLocation: /usr/bin/ffmpeg
  serverPort: 8081
  ffmpegOutput: /etc/openhab/html/camera1/
  ipWhitelist: DISABLE
  mp4OutOptions: -c:v copy -c:a copy
  pollTime: 1000
  password: instar
  port: 80
  snapshotOptions: -an -vsync vfr -q:v 2 -update 1
  ptzContinuous: true
  onvifMediaProfile: 0
  username: admin
  hlsOutOptions: -strict -2 -f lavfi -i aevalsrc=0 -acodec aac -vcodec copy
    -hls_flags delete_segments -hls_time 2 -hls_list_size 4
  gifOutOptions: -r 2 -filter_complex
    scale=-2:360:flags=lanczos,setpts=0.5*PTS,split[o1][o2];[o1]palettegen[p];[o2]fifo[o3];[o3][p]paletteuse

Kamera Items

Die Items die wir jetzt hinzugefügt haben, kann man jetzt unter dem Menüpunkt Items einsehen und testen:

Snapshot

Pan & Tilt