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
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
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.
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
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:
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:
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
:
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.