- JavaScript 87.8%
- CSS 7%
- HTML 5.2%
| data | ||
| docs | ||
| .gitignore | ||
| compose.yaml | ||
| README.md | ||
Node-RED Sandbox
Lokale Entwicklungsumgebung für Node-RED und datengetriebene Dashboards. Die Umgebung soll zunächst per Docker Compose starten; Datenquellen können später durch Mock-Flows ersetzt werden.
Dashboard-Entscheidung
Für dieses Repository verwenden wir zunächst FlowFuse Dashboard 2.0 (@flowfuse/node-red-dashboard). Es ist der aktiv gepflegte Nachfolger des klassischen Node-RED Dashboards, bringt fertige Widgets wie Charts, Gauges, Buttons und Formulare mit und eignet sich deshalb gut für einen schnellen, visuellen Einstieg. Das Dashboard ist Open Source, kann lokal ohne FlowFuse-Account betrieben werden und ist standardmäßig unter /dashboard erreichbar.
Das alte Paket node-red-dashboard wird nicht mehr weiterentwickelt. Es basiert auf AngularJS 1 und ist seit dem 27. Juni 2024 deprecated. Für neue Flows wird es daher nicht eingesetzt.
Alternativen
| Lösung | Geeignet für | Einschätzung für dieses Repository |
|---|---|---|
| FlowFuse Dashboard 2.0 | Klassische Dashboards mit fertigen UI-Nodes, responsivem Layout und wenig Frontend-Code | Empfehlung für den Start |
| UIBUILDER | Individuelle Web-Apps, eigene HTML/CSS/JavaScript-Frontends und beliebige Frontend-Frameworks | Gute spätere Option, wenn FlowFuse Dashboard zu unflexibel wird |
| Eigenes Frontend über Node-RED HTTP/WebSocket | Maximale Kontrolle über UX und Architektur | Für den ersten Prototyp unnötig viel Infrastruktur |
UIBUILDER ist nicht einfach eine zweite Variante desselben Widget-Systems: Es stellt einen integrierten Webserver und die Verbindung zwischen Browser und Node-RED bereit, lässt aber deutlich mehr Frontend-Code und Framework-Freiheit zu. Es ist daher besonders interessant, wenn aus dem Dashboard später eine eigenständige Web-Anwendung wird.
Geplante lokale Umgebung
- offizielles Image
nodered/node-red - Docker Compose für reproduzierbaren Start und Stop
- persistentes Mount des Node-RED-Verzeichnisses
/data - FlowFuse Dashboard als zusätzliches Node-RED-Paket
- zunächst lokale Mock-Daten, später echte Datenquellen wie MQTT, REST oder Datenbanken
- optional Node-RED Projects/Git für versionierte Flows
Das /data-Verzeichnis muss persistent gespeichert werden, weil dort Flows, Einstellungen und installierte Nodes liegen. Für die Entwicklung ist ein Bind-Mount in das Repository praktisch; ein Docker Named Volume ist eine Alternative, wenn die Node-RED-Dateien nicht direkt im Git-Workspace liegen sollen.
Geplanter Zugriff
Nach dem Start:
- Node-RED Editor: http://localhost:1880
- FlowFuse Dashboard: http://localhost:1880/dashboard
- UIBUILDER-SCADA: http://localhost:1880/scada/
Starten
Die Add-ons werden über data/package.json verwaltet. Der Compose-Service node-red-addons führt vor dem Start von Node-RED automatisch npm install aus. Eine Installation über die Oberfläche ist daher nicht erforderlich.
docker compose up -d
docker compose logs -f node-red
Danach:
- Node-RED Editor: http://localhost:1880
- FlowFuse Dashboard: http://localhost:1880/dashboard
Beim ersten Start wird zusätzlich data/package-lock.json erzeugt. Diese Datei sollte anschließend mit committed werden, damit die Abhängigkeiten reproduzierbar bleiben. Weitere Node-RED-Add-ons werden als Dependencies in data/package.json ergänzt; anschließend reicht ein Neustart mit docker compose up -d.
Die Compose-Konfiguration verwendet bewusst ein Bind-Mount auf /data, damit Flows, Einstellungen und installierte Nodes im Repository persistent sind. Node-RED speichert seine Benutzerdaten im Container unter /data.
Warum gibt es node-red-addons?
node-red-addons ist ein kurzlebiger Hilfs-Service und keine zweite Node-RED-Instanz. Er führt vor dem Start von node-red einmal npm install anhand von data/package.json aus und beendet sich anschließend erfolgreich.
Beide Services verwenden dasselbe Verzeichnis:
./data -> /data
Dadurch kann der eigentliche node-red-Service die dort installierten Nodes direkt laden. Über depends_on wartet Node-RED, bis die Add-on-Installation erfolgreich abgeschlossen wurde.
Wenn ein weiteres Add-on in data/package.json ergänzt wurde, kann die Installation manuell angestoßen werden:
docker compose run --rm node-red-addons
docker compose restart node-red
Eine Installation über den Palette Manager ist weiterhin möglich, für dieses Repository aber nicht der bevorzugte Weg, weil die Abhängigkeiten dann nicht ausschließlich über die versionierte package.json nachvollziehbar sind.
Eine ausführliche Anleitung zum Aufbau eines interaktiven SVG-/SCADA-Dashboards steht in docs/scada-dashboard.md. Die wiederverwendbaren UI-Module liegen in data/uibuilder/scada/src/lib.