Skip to content

NodeRed

kraeml edited this page Nov 24, 2025 · 8 revisions

Node-RED – Visuelle Programmierung für IoT

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.

🔧 Wie Node-RED funktioniert

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:

  1. MQTT-Sensordaten eines ESP32 einlesen.
  2. Werte filtern (z. B. Schwellenwert für Temperatur).
  3. Ergebnisse anzeigen (z. B. per Telegram-Bot oder Dashboard).

🎯 Warum Node-RED perfekt zu DOITPi passt

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 in der Praxis mit DOITPi

Node-RED verwenden

Node-RED ist auf DOITPi vorinstalliert und läuft standardmäßig unter:

👉 http://:1880

Falls Node-RED nicht läuft:

sudo systemctl status nodered.service
sudo systemctl start nodered.service

📌 Inject-Node: Nachrichten manuell oder zeitgesteuert injizieren

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

🔧 So funktioniert’s

  1. Node platzieren: Ziehe den Inject-Node aus der Palette auf die Arbeitsfläche.
  2. Payload konfigurieren:
    • Doppelklick auf den Node -> Wähle den Payload-Typ (z. B. String, Timestamp, Boolean).
    • Beispiel: Gib "Hello, world!" als String ein.
  3. Auslöser festlegen:
    • Manuell: Klick auf den Button am Node.
    • Automatisch: Aktiviere "Repeat" und wähle ein Intervall (z. B. alle 5 Sekunden).
  4. Debug-Node anschließen: Verbinde den Output des Inject-Nodes mit einem Debug-Node, um die Nachricht im Debug-Tab anzuzeigen.
  5. Testen: Klicke auf "Deploy" und dann auf den Inject-Button – die Nachricht erscheint sofort im Debug-Fenster.

Nachrichten manuell oder zeitgesteuert injizieren

💡 Tipps für den Unterricht

  • 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).

⚠️ Häufige Fehler

  • 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.payload nicht undefined).

🌡️ Node-RED Flow: CPU-Temperatur des Raspberry Pi auslesen und anzeigen

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.


🔧 Benötigte Nodes

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.

📋 Schritt-für-Schritt-Anleitung

  1. 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). Inject-Node konfigurieren
  2. 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'C zurück. Exec-Node einrichten

  3. 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;

    Function-Node für Datenaufbereitung

  4. 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.
  5. Flow deployen und testen

    • Klicke auf "Deploy".
    • Die CPU-Temperatur wird nun automatisch alle 60 Sekunden im Debug-Tab angezeigt.

⚠️ Häufige Fehler und Lösungen

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.

🎓 Tipps für Lehrkräfte

  • 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_temp im Terminal des Raspberry Pi funktioniert.

📌 Nächste Schritte


📊 CPU-Temperatur im Node-RED Dashboard visualisieren

Erweitere den Temperatur-Flow um eine visuelle Anzeige im Node-RED Dashboard – ideal für Echtzeit-Monitoring oder IoT-Projekte.


🔧 Benötigte Dashboard-Nodes

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").

📋 Schritt-für-Schritt-Anleitung

Dashboard-Nodes konfigurieren

  1. Dashboard-Nodes konfigurieren

    • ui_tab: Erstelle eine neue Registerkarte (z. B. Name: "Systemmonitoring").
    • ui_group: Erstelle eine Gruppe (z. B. Name: "CPU-Status").
  2. 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"). ui_gauge einrichten
  3. 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. Dashboard


🎓 Tipps für den Unterricht

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

⚠️ Häufige Fehler und Lösungen

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.

📌 Nächste Schritte


❓ Häufige Fragen zu Node-RED

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.

📌 Nächste Schritte mit DOITPi


💡 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!

🚀 Schnellstart: DOITPi in 30 Sekunden

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! 😊

Clone this wiki locally