INSTAR MQTT Server mit Mosquitto

Wir werden den Open Source Mosquitto MQTT broker verwenden, um unsere INSTAR Full HD IP-Kameras zu steuern. Dafür werden wir das Docker Image nutzen und den Broker auf einem CentOS LINUX Server betreiben.

Docker Installation

Docker kann unter Linux, Windows und MacOS installiert werden. In diesem Beispiel werden wir CentOS Linux verwenden - für andere Betriebssysteme prüfen Sie bitte die offizielle Dokumentation.

Zuerst müssen wir das Repository hinzufügen, um den Docker-Code laden zu können. Fügen Sie in nano /etc/yum.repos.d/virt7-docker-common-release.repo die folgenden Zeilen hinzu und speichern Sie die Datei:

[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0

Dann installieren Sie Docker auf dem Centos Server:

yum update
yum -y install --enablerepo=virt7-docker-common-release docker
systemctl enable docker
systemctl start docker

Einrichten von Mosquitto

Da alle Daten innerhalb des Docker-Containers, in dem unser Broker läuft, gelöscht werden, sobald der Container gestoppt wird, wollen wir drei Verzeichnisse außerhalb des Containers anlegen, um Daten zu speichern, die wir beibehalten wollen - die Brokerkonfiguration, die persistente Daten und die Protokolle. Legen Sie dafür die folgenden Pfade auf Ihrem Host System an:

sudo mkdir /opt/mosquitto/
sudo mkdir /opt/mosquitto/config
sudo mkdir /opt/mosquitto/data
sudo mkdir /opt/mosquitto/log

Erstellen Sie nun eine Konfigurationsdatei, die Ihr Broker verwenden soll sudo nano /opt/mosquitto/config/mosquitto.conf:

persistence true
persistence_location /opt/mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Sie können eine fertige Konfigurationsvorlage von hier herunterladen und stattdessen mit dieser weiterarbeiten. Sie enthält bereits alle Bearbeitungen, die wir in den folgenden Schritten hinzufügen werden. Beachten Sie, dass Sie die gleichen Verzeichnisse wie in diesem Tutorial wählen müssen, damit diese Datei funktioniert.

Betrieb des Brokers

Um das Docker-Image für Eclipse Mosquitto mit der soeben erstellten Konfigurationsdatei auszuführen, müssen wir dem Docker mitteilen, dass er das Verzeichnis entsprechend mounten soll:

sudo docker run -ti -p 1883:1883 -p 9001:9001 -v /opt/mosquitto/config:/mosquitto/config -v /opt/mosquitto/data:/mosquitto/data -v /opt/mosquitto/log:/mosquitto/log eclipse-mosquitto

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Dieser Docker-Befehl führt das Eclipse Mosquitto Image aus und mountet alle drei Verzeichnisse, die wir gerade erstellt haben. Für unsere Kameras müssen wir nur den Port 1883 durchleiten. Der Port 9001 wird für Websocket-Verbindungen verwendet - wenn Sie nicht vorhaben, Software zu verwenden, die sich über Websockets verbindet, können Sie -p 9001:9001 aus dem Befehl entfernen.

Benutzer Authentifizierung

Wir wollen nun eine Benutzer-Authentifizierung zu unserem Broker hinzufügen, so dass nur Geräte, die das Login kennen, eine Verbindung herstellen können. Dazu können wir ein Tool verwenden, das von Mosquitto zur Verfügung gestellt wird. Beginnen wir damit, dass wir uns in den Docker-Container einloggen, auf dem Mosquitto läuft. Führen Sie den folgenden Befehl aus, um den Namen des Containers herauszufinden:

sudo docker ps -a

Wie Sie im Screenshot unten sehen können, hat sich Docker entschieden, den Container nostalgic_williams zu nennen - Ihrer wird anders benannt sein. Um sich in den Container einzuwählen, führen Sie folgenden Befehl aus - ersetzen Sie einfach den Containernamen durch Ihren:

sudo docker exec -ti nostalgic_williams /bin/sh

Um das Mosquitto-Passwort-Tool mosquitto_pass zu starten, führen Sie den folgenden Befehl aus - Bemerkung, dass admin am Ende des Befehls ist der Benutzer, der generiert werden soll. Sie können hier Ihren eigenen Benutzernamen wählen und ein Passwort hinzufügen, wenn Sie dazu aufgefordert werden:

mosquitto_passwd -c /mosquitto/config/passwd.txt admin

Beachten Sie, dass die Datei passwd.txt im Verzeichnis /mosquitto/config gespeichert wird, das wir zu Beginn von unserem Hostsystem aus in den Container gemountet haben. Das bedeutet, dass der Benutzer, den Sie hier anlegen, erhalten bleibt, wenn Sie den Docker-Container neu starten.

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Wir müssen nun die generierte Passwortdatei in unsere Mosquitto-Konfigurationsdatei einfügen. Benutzen Sie, während Sie sich noch im Docker-Container befinden:

vim /mosquitto/config/mosquitto.conf

Oder wenn Sie den Container bereits verlassen haben, führen Sie sudo nano /opt/mosquitto/config/mosquitto.conf aus, um die Konfigurationsdatei direkt auf Ihrem Hostsystem zu bearbeiten.

Wir müssen nun die beiden folgenden Zeilen auskommentieren und den Pfad zu unserer Passwortdatei hinzufügen:

allow_anonymous false
password_file /mosquitto/config/passwd.txt

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Sie können jetzt den Container stoppen und wieder so starten, so wie Sie ihn zuvor gestartet haben. Die gesamte Konfiguration sollte beibehalten werden. Anschließend können wir damit fortfahren, unsere Kameras mit dem MQTT-Dienst zu verbinden.

Anschließen der Kameras

Wir können jetzt unsere INSTAR Full HD-Kameras für die Verbindung mit unserem MQTT-Broker konfigurieren. Beginnen Sie, indem Sie die MQTT-Broker-Konfiguration in der Web-Benutzeroberfläche Ihrer Kamera öffnen:

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Die IP-Adresse meines LINUX-Host-Systems ist 192.168.2.11, wir haben die MQTT-Ports, die Mosquitto benutzt, auf ihren Standardwerten belassen und ich habe den Benutzer-Login admin/instar angelegt. Ändern Sie diese Einstellungen entsprechend Ihrem Setups und speichern Sie die Konfiguration.

Node-RED

Arbeiten mit Node-RED

Sie können nun jede kompatible MQTT Software mit dem CloudMQTT Broker verbinden, um jede angeschlossene Kamera zu steuern. Im Folgenden wird beispielhaft gezeigt, wie man dafür Node-RED verwenden kann.

Sie können den Node-RED Flow, der hier verwendet wird, hier herunterladen: Download Flow.

Wir haben diesen Node-RED-Flow bereits in unserem HiveMQ Tutorial verwendet. Das einzige, was wir davon noch ändern müssen, damit es mit CloudMQTT funktioniert, ist die neue MQTT Broker Konfiguration zu Node-RED hinzuzufügen. Tun Sie dies, indem Sie einen neuen MQTT Broker zu jedem MQTT Knoten innerhalb des Flows hinzufügen:

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Auf der Registerkarte Connection fügen Sie die Adresse und den Port des Servers (Brokers) hinzu. Und auf der Security Registerkarte fügen Sie den Mosquitto-Benutzer hinzu, den Sie erstellt haben - in meinem Fall admin/instar:

Mosquitto Broker for INSTAR MQTT Full HD Cameras

Sobald Sie diese Änderungen in Node-RED implementiert haben, sollten Sie die gleichen Schalter und Knöpfe zur Steuerung der Alarmbereiche Ihrer Kameras auf dem Node-RED Dashboard sehen können, die wir im HiveMQ Tutorial erstellt haben (beachten Sie, dass Sie die MQTT IDs/MAC-Adressen der Kameras durch die Ihrer eigenen Kameras ersetzen müssen). Für weitere Details lesen Sie bitte in unserem Node-RED Tutorial weiter.