-
Notifications
You must be signed in to change notification settings - Fork 0
NodeRed
Node-RED ist ein grafisches Programmierwerkzeug auf Basis von Node.js, das ursprünglich von IBM entwickelt wurde und heute als Open-Source-Projekt der OpenJS Foundation gepflegt wird. Es ermöglicht das einfache Verknüpfen von Geräten, APIs und Online-Diensten – perfekt für IoT-, Automatisierungs- und Datenverarbeitungsprojekte.
💡 Kernprinzip von Node-RED:
- Visuelle Programmierung: Statt Code zu schreiben, ziehst du Bausteine (Nodes) auf eine Arbeitsfläche und verbindest sie zu einem Flow.
- Flexibilität: Jeder Baustein hat eine spezifische Aufgabe (z. B. Sensordaten einlesen, Daten verarbeiten, Nachrichten senden).
- Erweiterbar: Du kannst eigene Logik mit JavaScript hinzufügen – musst es aber nicht.
Node-RED basiert auf Node.js und läuft auf praktisch jeder Plattform, einschließlich Embedded-Systemen wie dem Raspberry Pi. Es ist dank großer Community und zahlreicher Erweiterungen sehr flexibel und weit verbreitet.
| Feature | Beschreibung |
|---|---|
| Web-Interface | Du baust deine Flows visuell im Browser zusammen. |
| Deploy mit einem Klick | Keine komplizierte Kompilierung – einfach Deploy klicken, und dein Flow wird sofort aktiv. |
| Echtzeit-Feedback | Sieh sofort, ob deine Flows funktionieren. |
💬 Beispiel-Flow:
- MQTT-Sensordaten eines ESP32 einlesen.
- Werte filtern (z. B. Schwellenwert für Temperatur).
- Ergebnisse anzeigen (z. B. per Telegram-Bot oder Dashboard).
Node-RED ist ideal für DOITPi, weil es:
| Zielgruppe | Nutzen |
|---|---|
| Lehrkräfte | IoT- und Automatisierungsprojekte anschaulich vermitteln. |
| Lernende | Sofort sichtbare Ergebnisse – Zusammenhänge zwischen Hardware, Software und Cloud-Diensten verstehen. |
| Entwickler:innen | Prototypen bauen oder REST-APIs und Docker-Container elegant verbinden. |
💡 Fun Fact:
Node-RED ist für DOITPi das, was Lego Mindstorms für den Informatikunterricht war – nur flexibler und offener.
Node-RED ist auf DOITPi vorinstalliert und läuft standardmäßig unter:
Falls Node-RED nicht läuft:
sudo systemctl status nodered.servicesudo systemctl start nodered.serviceDer Inject-Node ist der Startpunkt für jeden Flow in Node-RED. Mit ihm kannst du manuell oder automatisch Nachrichten in deinen Flow einspeisen – ideal für Tests oder einfache Automatisierungen.
- Node platzieren: Ziehe den Inject-Node aus der Palette auf die Arbeitsfläche.
-
Payload konfigurieren:
- Doppelklick auf den Node -> Wähle den Payload-Typ (z. B.
String,Timestamp,Boolean). - Beispiel: Gib
"Hello, world!"als String ein.
- Doppelklick auf den Node -> Wähle den Payload-Typ (z. B.
-
Auslöser festlegen:
- Manuell: Klick auf den Button am Node.
-
Automatisch: Aktiviere "Repeat" und wähle ein Intervall (z. B. alle
5 Sekunden).
- Debug-Node anschließen: Verbinde den Output des Inject-Nodes mit einem Debug-Node, um die Nachricht im Debug-Tab anzuzeigen.
- Testen: Klicke auf "Deploy" und dann auf den Inject-Button – die Nachricht erscheint sofort im Debug-Fenster.

-
Einstiegsübung: Lass Schüler:innen einen Inject-Node mit einer Begrüßungsnachricht (z. B.
"Hallo Klasse!") erstellen. - Erweiterung: Kombiniere den Inject-Node mit einem Function-Node, um die Nachricht zu bearbeiten (z. B. in Großbuchstaben umwandeln).
-
Nachricht erscheint nicht?
Prüfe, ob der Debug-Node verbunden ist und der Flow deployed wurde.
Zusätzliche Tipps:
- Stelle sicher, dass der Inject-Node aktiviert ist (z. B. "Repeat" oder manueller Trigger).
- Überprüfe im Debug-Tab, ob Fehlermeldungen angezeigt werden.
- Falls der Exec-Node verwendet wird: Teste den Befehl manuell im Terminal (z. B.
vcgencmd measure_temp). - Prüfe, ob die Payload im Function-Node korrekt verarbeitet wird (z. B.
msg.payloadnichtundefined).
Mit diesem einfachen Flow kannst du die CPU-Temperatur deines Raspberry Pi regelmäßig auslesen und im Debug-Fenster von Node-RED anzeigen. Ideal für Monitoring, Automatisierungen oder Unterrichtsprojekte.
| Node | Funktion |
|---|---|
| Inject | Löst den Flow zeitgesteuert (z. B. alle 60 Sekunden) aus. |
| Exec | Führt den Shell-Befehl vcgencmd measure_temp aus. |
| Function | Extrahiert die Temperatur aus dem Roh-String und bereitet sie auf. |
| Debug | Zeigt die extrahierte Temperatur im Debug-Tab an. |
-
Inject-Node konfigurieren
- Platziere einen Inject-Node auf der Arbeitsfläche.
- Haken setzen, um einmaliges Injizieren nach 0,1 Sekunden auszulösen.
- Setze den Auslöser auf "Wiederholung" mit einem Intervall von z. B. 60 Sekunden (für regelmäßige Abfrage).
-
Exec-Node einrichten
-
Füge einen Exec-Node hinzu und verbinde ihn mit dem Inject-Node.
-
Gib im Feld "Command" folgenden Befehl ein:
vcgencmd measure_temp
-
Hinweis: Dieser Befehl ist standardmäßig auf dem Raspberry Pi verfügbar und gibt die Temperatur im Format
temp=42.0'Czurück.
-
-
Function-Node für Datenaufbereitung
-
Füge einen Function-Node hinzu und verbinde ihn mit dem Exec-Node.
-
Nutze folgenden JavaScript-Code, um die Temperatur zu extrahieren:
// Extrahiere die Temperatur aus dem String (z. B. "temp=42.0'C") var tempString = msg.payload; var matches = tempString.match(/temp=([0-9.]+)'C/); if (matches && matches.length > 1) { // Erstelle ein sauberes Payload-Objekt msg.payload = { temperature: parseFloat(matches[1]), unit: "°C", timestamp: new Date().toISOString() }; } else { // Fehlermeldung, falls die Extraktion fehlschlägt msg.payload = { error: "Temperatur konnte nicht extrahiert werden", raw: tempString, timestamp: new Date().toISOString() }; } return msg;

-
-
Debug-Node anschließen
- Füge einen Debug-Node hinzu und verbinde ihn mit dem Function-Node.
- Setze den Debug-Node auf "msg.payload", um die aufbereiteten Daten anzuzeigen.
-
Flow deployen und testen
- Klicke auf "Deploy".
- Die CPU-Temperatur wird nun automatisch alle 60 Sekunden im Debug-Tab angezeigt.
| Problem | Lösung |
|---|---|
| Exec-Node gibt keine Daten aus | Prüfe, ob der Befehl vcgencmd measure_temp im Terminal funktioniert. |
| Temperatur wird nicht extrahiert | Überprüfe den Regulären Ausdruck im Function-Node (z. B. /temp=([0-9.]+)'C/). |
Debug zeigt [object Object] an |
Stelle sicher, dass der Debug-Node auf "msg.payload" gesetzt ist. |
- Erweiterungsidee: Nutze einen Dashboard-Node, um die Temperatur in einem Echtzeit-Diagramm anzuzeigen.
-
Fehlerbehebung: Falls der Exec-Node keine Ausgabe liefert, prüfe, ob der Befehl
vcgencmd measure_tempim Terminal des Raspberry Pi funktioniert.
- Temperaturdaten in eine Datenbank speichern
- Node-RED Dashboard: Echtzeit-Monitoring
- Automatisierungen mit Temperaturwerten
Erweitere den Temperatur-Flow um eine visuelle Anzeige im Node-RED Dashboard – ideal für Echtzeit-Monitoring oder IoT-Projekte.
| Node | Funktion |
|---|---|
| ui_gauge | Zeigt die Temperatur als analoges Messinstrument (z. B. 0–100 °C) an. |
| ui_text | Zeigt die Temperatur als Text (z. B. "42.0 °C") an. |
| ui_tab | Erstellt eine Registerkarte im Dashboard (z. B. "Systemmonitoring"). |
| ui_group | Gruppiert Widgets (z. B. "CPU-Status"). |

-
Dashboard-Nodes konfigurieren
- ui_tab: Erstelle eine neue Registerkarte (z. B. Name: "Systemmonitoring").
- ui_group: Erstelle eine Gruppe (z. B. Name: "CPU-Status").
-
ui_gauge einrichten
- Füge einen ui_gauge-Node hinzu und verbinde ihn mit dem Function-Node.
- Konfiguriere die Gauge:
-
Label:
CPU Temperatur -
Einheit:
°C -
Min:
0 -
Max:
100 -
Gruppe: Wähle die zuvor erstellte Gruppe (z. B. "CPU-Status").
-
Label:
-
Dashboard starten
-
Öffne das Dashboard im Browser:
http://<deine-pi-ip>:1880/ui -
Die CPU-Temperatur wird nun live in der Gauge und/oder als Text angezeigt.

-
- Projektidee: Kombiniere die Temperaturanzeige mit einem Schwellwert-Alarm (z. B. E-Mail-Benachrichtigung bei > 70 °C).
- Erweiterung: Füge ein ui_chart-Widget hinzu, um die Temperatur über die Zeit zu protokollieren.
| Problem | Lösung |
|---|---|
| Dashboard zeigt keine Daten an | Prüfe, ob der Function-Node das korrekte msg.payload-Format liefert. |
| Gauge bleibt leer | Stelle sicher, dass der ui_gauge-Node mit der richtigen ui_group verknüpft ist. |
Text-Widget zeigt [object Object]
|
Nutze msg.payload = msg.payload.temperature + " °C"; im Function-Node. |
- Node-RED Dashboard: Fortgeschrittene Widgets
- Alarme und Benachrichtigungen einrichten
- Daten in einer Datenbank speichern
| Frage | Antwort |
|---|---|
| Brauche ich Programmierkenntnisse? | Nein! Node-RED ist Low-Code – du kannst ohne Code loslegen. |
| Kann ich Node-RED auf dem Raspberry Pi nutzen? | Ja! Node-RED ist auf DOITPi vorinstalliert und läuft stabil. |
| Wie erweitere ich Node-RED? | Installiere Nodes aus der Palette (z. B. für MQTT, Telegram, Datenbanken). |
| Kann ich Flows speichern? | Ja! Flows werden als JSON-Dateien gespeichert und können exportiert/importiert werden. |
💡 Warum Node-RED mit DOITPi?
- Einfachheit: Visuelle Programmierung ohne Code – ideal für Einsteiger:innen.
- Flexibilität: Von einfachen IoT-Projekten bis zu komplexen Automatisierungen.
- Praktisch: Perfekt für Schulprojekte, Prototypen und Experimente!
Hier zu Home
DOITPi ist Open Source und steht unter der MIT-LICENSE.
- Code: GitHub Repository
- Dokumentation: Wiki
- Releases: Aktuelles Image herunterladen
Hinweis: DOITPi nutzt Tools und Bibliotheken Dritter. Die jeweiligen Lizenzen finden Sie in den Danksagungen.
DOITPi steht auf den Schultern von Riesen. Besonderer Dank gilt:
- Raspberry Pi OS (Basis-System)
- CustomPiOS (Image-Erstellung)
- NetworkManager (Auto-Hotspot-Funktion)
- ROS2 & Node-RED (Robotik & IoT)
- Ansible (Automatisierung)
- Allen Mitwirkenden (GitHub Contributors)!
💙 Möchtest du hier auftauchen? Trage bei und sende einen Pull Request!
DOITPi © 2023–2025 DevOps & IoT für alle – einfach, offen, leistungsstark.
Für Eilige:
Du willst sofort loslegen? Hier ist der direkte Weg zur 01_Installation
Was du brauchst:
- Raspberry Pi (Modell 3/4/5 oder Zero 2 W)
- microSD-Karte (mind. 32 GB)
- Kartenleser o.Ä
- Netzteil
- 15 Minuten Zeit
Los geht’s! 🎉
Jetzt zur 01_Installation
⚡ DOITPi 01a_Autohotspot
Immer verbunden – automatisch!
- Aktiviert sich selbst, wenn kein WLAN verfügbar ist.
-
SSID:
AP_<Hostname>| Passwort:123456789 -
Zugriff per Browser/SSH – ideal für Headless-Betrieb.
- Codeserver (für webbasiertes Code-Editing)
- NodeRed (für visuelles IoT- ROS2-Programmieren)
- Automatische Umschaltung alle 60 Sekunden.
🔒 Passwort anpassen! 🔧
Kurz, klar, direkt zum Ziel – perfekt für alle, die keine Zeit verlieren wollen! 😊