INSTAR Deutschland GmbH

Node-RED und MQTT



Node-RED ist ein Programmiertool zur Verdrahtung von Hardwaregeräten wie Ihrer INSTAR IP-Kamera und APIs sowie Online-Diensten. Es stellt einen Browser-basierten Editor zur Verfügung, der das Zusammenfließen von Datenströmen mithilfe der zahlreichen Knoten ermöglicht, die eine Verbindung zwischen den Kameras REST API und IoT-Protokollen wie MQTT (Message Queuing Telemetry Transport) ermöglichen.

Im folgenden wollen wir die REST API Ihrer Kamera in mit Node-RED einbinden, damit wir die Kamerafunktionen über das MQTT-Protokoll steuern können. Dieses wird häufig von IoT-Geräten und Hausautomationssystem wie OpenHAB verwendet.

Installation

Um Node-RED zu installieren, müssen wir zuerst Node.js installieren, das Sie hier herunterladen können. Laden Sie einfach die für Ihr Betriebssystem geeignete Version herunter und doppelklicken Sie darauf, um sie zu installieren. Öffne Sie Ihre Befehlszeile oder Ihr Terminal und geben Sie die folgenden Befehle ein - node -v und npm -v - um zu überprüfen, ob die Node Runtime erfolgreich installiert wurde:


Node.js


In diesem Fall haben wir die neueste verfügbare Version von Node (zum Zeitpunkt der Erstellung v10.10.0) installiert, die mit den Node Package Manager (npm v6.4.1) mit sich bringt. Wir können jetzt den Paketmanager verwenden, um Node-RED zu installieren, indem Sie den folgenden Befehl eingeben npm install -g --unsafe-perm node-red:


Node-RED


Starten Sie jetzt Node-RED indem Sie node-red in Ihre Konsole eingeben - der Prozess sollte danach über Ihren Webbrowser über http://127.0.0.1:1880/ erreichbar sein. Beenden Sie jetzt den Prozess mit STRG+C und gehen Sie mit Ihrer Konsole in Ihr Windows Benutzer Verzeichnis - z.B. C:\Users\INSTAR\.node-red (INSTAR durch Ihren Windows Benutzernamen ersetzen). Achtung dieses Verzeichnis wird erst nach dem ersten Starten von Node.RED angelegt.

In diesem Verzeichnis werden wir jetzt einige Node Module nachinstallieren, die wir später benötigen. Als erstes können Sie den folgenden Befehl eingeben npm install path. Dies wird das Path Modul im Node-RED Verzeichnis installieren, welches wir später für das Einrichten eines öffentlich erreichbaren Verzeichnises für den Node-RED Webserver benötigen.

Wir wollen später das Node-RED-Dashboard verwenden, um mit unserer Kamera zu interagieren, was ein zusätzliches Modul ist, das wir installieren müssen. Verwenden Sie zuerst Ihre Befehlszeile oder Ihr Terminal, um zum Node-RED-Installationsverzeichnis zu navigieren (unter Windows wird dies ein .node-red-Ordner in Ihrem Benutzerverzeichnis sein), und geben Sie npm install node-red-dashboard ein, um die Benutzeroberfläche zu installieren:


Node-RED


Node-RED absichern

Wir möchten, dass unsere Node-RED-Installation nur von unserem sicheren lokalen Netzwerk erreichbar ist. Wenn Sie auf die Anwendung über das Internet zugreifen möchten, sollten Sie ein wenig tiefer lesen, wie Sie Ihre Verbindung sichern können! Für unsere Zwecke möchten wir, dass es ein Administrator Login gibt, um zu verhindern, dass andere Benutzer unser Setup ändern, während nicht angemeldete Nutzer nur das Recht haben die Konfiguration einzusehen. Wir möchten auch ein öffentliches Verzeichnis erstellen, mit dem wir Dateien speichern und von der Benutzeroberfläche aus darauf zugreifen können. Und schließlich werden wir den Port und die URL für unsere Node-RED-Anwendung festlegen. All dies kann in settings.js im Node-RED-Installationsverzeichnis getan werden (unter Windows ist dies ein .Node-red-Ordner in Ihrem Benutzerverzeichnis):


Node-RED


Anwendungs-Port und URLs festlegen

Die folgenden Zeilen finden Sie in dem module.exports Block in settings.js und kann verwendet werden, um die Standardwerte für die Parameter zu ändern:

uiPort: process.env.PORT || 1880,
httpAdminRoot: '/admin',
ui: { path: "dashboard" },

Dies setzt den Port unserer Node-RED-Anwendung auf 1880, die URL für das Admin-Panel auf /admin und die URL für das Dashboard auf /dashboard.

Erstellen eines öffentlichen Verzeichnisses

In späteren Schritten wollen wir mit Node-RED Snapshots und Videos von unserer Kamera speichern und auf dem installierten Dashboard anzeigen. Dazu müssen wir ein Verzeichnis definieren, auf das wir öffentlich zugreifen können. Wir können einen Ordner innerhalb des Installationsverzeichnisses mit dem Namen static erstellen (siehe Screenshot oben) und die folgende Zeile in den module.exports Block setzen:

httpStatic: path.join(__dirname, 'static'),

Sie sehen, das hier das Path Modul benötigt wird, das wir zuvor installiert haben. Dieses muß im Kopf der Datei importiert werden:

// var fs = require("fs");
var path = require("path");

Erstellen einer Administratoranmeldung

Verwenden Sie einfach die folgenden Zeilen in settings.js, damit anonyme Benutzer Ihr Node-RED-Admin-Panel und -Dashboard anzeigen können, aber eine Anmeldung für die Bearbeitung von Knoten benötigen:

adminAuth: {
        type: "credentials",
        users: [{
            username: "admin",
            password: "$2a$08$k.syiLYKsLGJdy01hPolj.m7dfgZXWz0do4oKkesLrJExoYgFBZYu",
            permissions: "*"
        }],
        default: {
            permissions: "read"
        }
    },

Sie können sehen, dass die Anmeldung mit dem Algorithmus bcrypt verschlüsselt wurde. Node-RED bietet ein Werkzeug, um einen Hash von Ihrem persönlichen Login zu erstellen. Sie können es global auf Ihrem Computer installieren, indem Sie die folgenden npm install -g node-red-admin eingeben. Starten Sie dann das Programm mit node-red-admin hash-pw und geben Sie Ihr gewünschtes Passwort ein. Kopieren Sie den erstellten Hash in das Passwortfeld für adminAuth (siehe oben).


Node-RED


Node-RED starten

Jetzt können wir endlich anfangen! Geben Sie node-red ein, um das Programm auszuführen, und öffnen Sie http://127.0.0.1:1880/admin/ in Ihrem Webbrowser:


Node-RED


Klicken Sie oben rechts auf das Benutzersymbol, um sich mit dem zuvor erstellten Administratorkonto anzumelden:


Node-RED




Node-RED Tutorials