Node-RED in Home Assistant – Automationen visuell erstellen 2026
Home Assistant’s eingebauter Automationseditor ist gut für einfache Abläufe. Sobald du aber komplexere Logik, Verzweigungen, Schleifen oder externe APIs einbinden willst, stößt er an Grenzen. Node-RED ist das visuelle Programmierwerkzeug, das diese Lücke füllt: Automationen werden als Flussdiagramme auf einer Leinwand zusammengeklickt – kein YAML, keine Programmiersprache nötig.
In diesem Guide lernst du, wie du Node-RED als Add-on installierst, mit Home Assistant verbindest und deine ersten Flows baust.
Inhalt
- Was ist Node-RED und wann lohnt es sich?
- Node-RED Add-on installieren
- Mit Home Assistant verbinden
- Erste Flows bauen
- Die wichtigsten Nodes im Überblick
- 5 praktische Flow-Beispiele
- Node-RED vs. HA-Automationen – wann was?
- Tipps & Best Practices
- FAQ
Was ist Node-RED und wann lohnt es sich?
Node-RED ist eine von IBM entwickelte, Open-Source Flow-Programmierumgebung, die ursprünglich für IoT-Projekte gebaut wurde. Kernkonzept: Funktionsblöcke (Nodes) werden durch Verbindungslinien (Wires) zu Workflows (Flows) zusammengesetzt. Daten fließen als JavaScript-Objekte (Nachrichten) von Node zu Node.
Node-RED lohnt sich wenn du…
- Komplexe Mehrfach-Verzweigungen brauchst (wenn A dann B, sonst wenn C dann D…)
- Externe APIs abfragen willst (Wetter, Strompreise, Kalender)
- Zeitpläne mit variablen Zeiten programmieren möchtest
- Daten transformieren oder berechnen musst vor der Weiterverarbeitung
- Flows visuell debuggen willst (jede Nachricht ist in Echtzeit sichtbar)
- Mit MQTT direkt arbeiten willst (z. B. eigene Zigbee-Direktintegration)
HA-Automationen bleiben besser wenn…
- Die Automation einfach ist (Trigger → Action ohne Logik)
- Du sie per Sprachbefehl oder Blueprint einrichten willst
- Du keine Lust auf eine weitere Oberfläche hast
Node-RED Add-on installieren
Node-RED ist nicht im Standard-Add-on-Store von Home Assistant enthalten, kann aber über ein Community-Repository hinzugefügt werden.
Schritt 1: Add-on-Store öffnen
Navigiere zu Einstellungen → Add-ons → Add-on-Store (Button unten rechts).
Schritt 2: Community-Repository hinzufügen
Klicke oben rechts auf die drei Punkte → „Repositories“. Füge folgende URL hinzu:
1 | https://github.com/hassio-addons/repository |
Klicke „Hinzufügen“ und warte, bis der Store neu geladen hat.
Schritt 3: Node-RED suchen und installieren
Suche im Add-on-Store nach „Node-RED“. Klicke auf das Add-on von Home Assistant Community Add-ons (nicht ein anderes gleichnamiges). Klicke „Installieren“ – der Download dauert ~2–3 Minuten.
Schritt 4: Konfiguration anpassen
Nach der Installation öffne den Reiter „Konfiguration“ im Add-on:
1 2 3 4 5 6 | credential_secret: "dein_geheimes_passwort_hier" # ÄNDERN! dark_mode: false leave_front_page_alone: false log_level: info ssl: false require_ssl: false |
credential_secret zu einem sicheren Passwort. Es verschlüsselt gespeicherte Zugangsdaten in deinen Flows. Einmal gesetzt nicht mehr ändern – sonst müssen alle Credentials neu eingegeben werden.Schritt 5: Add-on starten
Wechsle zum Reiter „Info“ und aktiviere:
- „Beim Start starten“ → an
- „Watchdog“ → an (Neustart bei Absturz)
Klicke „Starten“. Die Node-RED-Oberfläche ist jetzt über den Button „Web-Oberfläche öffnen“ erreichbar – oder direkt unter http://homeassistant.local:1880.
Mit Home Assistant verbinden
Das Add-on bringt die node-red-contrib-home-assistant-websocket-Bibliothek bereits vorinstalliert mit. Diese stellt alle HA-spezifischen Nodes bereit.
Verbindung konfigurieren
Beim ersten Start fragt Node-RED nach einer HA-Serververbindung. Ziehe eine beliebige HA-Node auf die Leinwand, öffne sie per Doppelklick und klicke auf den Stift-Button neben „Server“.
Trage ein:
- Base URL:
http://homeassistant.local:8123(oder IP) - Access Token: Long-Lived Access Token aus HA
Long-Lived Access Token erstellen
In Home Assistant: Klicke auf dein Profil (unten links) → scrolle ganz nach unten → „Langlebige Zugriffstoken“ → „Token erstellen“. Gib dem Token einen Namen (z. B. „nodered“) und kopiere ihn – er wird nur einmal angezeigt.
Füge den Token in Node-RED ein und klicke „Hinzufügen“. Die Verbindung wird mit einem grünen „connected“-Label angezeigt.
Erste Flows bauen
Aufbau der Node-RED-Oberfläche
- Linke Leiste: Palette mit allen verfügbaren Nodes
- Mitte: Flow-Leinwand – hier baust du deine Flows
- Rechte Leiste: Info zu ausgewählter Node / Debug-Ausgaben
- Deploy-Button (oben rechts): Aktiviert Änderungen – immer nach Bearbeitung klicken
Erster Flow: Licht per Bewegungsmelder
- Suche in der Palette nach „events: state“ → auf die Leinwand ziehen
- Doppelklick → Server auswählen → Entity:
binary_sensor.bewegungsmelder_flur_occupancy - Aus der Palette „call service“ ziehen und mit dem ersten Node verbinden
- Doppelklick → Domain:
light, Service:turn_on, Entity:light.flur - „Deploy“ klicken
Wenn sich der Bewegungsmelder ändert (auf oder ab), schaltet das Licht ein. Zu simpel – im nächsten Abschnitt wird das verfeinert.
Die wichtigsten Nodes im Überblick
| Node | Kategorie | Funktion |
|---|---|---|
| events: state | HA Input | Reagiert auf Statusänderungen von HA-Entitäten |
| call service | HA Output | Ruft einen HA-Dienst auf (light.turn_on etc.) |
| get entities | HA Input | Liest den aktuellen Zustand von Entitäten ab |
| current state | HA Input | Gibt den Zustand einer Entität bei Nachrichteneingang zurück |
| switch | Standard | Verzweigt Nachrichtenfluss anhand von Bedingungen |
| function | Standard | Beliebiger JavaScript-Code zur Datentransformation |
| delay | Standard | Verzögert oder bremst den Nachrichtenfluss |
| inject | Standard | Manueller Trigger oder Zeitplan (cron) |
| debug | Standard | Zeigt Nachrichten in der Debug-Leiste an |
| http request | Netzwerk | HTTP GET/POST zu externen APIs |
| mqtt in/out | Netzwerk | MQTT-Nachrichten empfangen/senden |
| change | Standard | Nachrichteneigenschaften setzen, löschen, verschieben |
5 praktische Flow-Beispiele
Beispiel 1: Licht mit Ausschaltverzögerung
Flow: events: state (Bewegungsmelder) → switch (on/off) → delay (3 Min bei off) → call service (light)
Die switch-Node prüft msg.payload:
- Ausgang 1: wenn
== on→ sofort zu „light.turn_on“ - Ausgang 2: wenn
== off→ durch delay (3 Minuten) → „light.turn_off“
Wichtig: Den delay-Node im Modus „Delay each message“ belassen. Kommt während der Verzögerung erneut eine „on“-Nachricht, musst du den Timer zurücksetzen. Setze dafür in der delay-Node „Reset timer when new message arrives“ auf den gleichen Topic.
Beispiel 2: Strompreis-abhängige Automation (Tibber API)
Flow: inject (stündlich) → http request (Tibber GraphQL) → function (Preis auslesen) → switch (günstig/teuer) → call service
1 2 3 4 5 6 7 | // function-Node: Tibber-Preis auslesen const data = JSON.parse(msg.payload); const price = data.data.viewer.homes[0].currentSubscription .priceInfo.current.total; msg.payload = price; msg.topic = price < 0.25 ? "cheap" : "expensive"; return msg; |
Beispiel 3: Wöchentlicher Automations-Report
Flow: inject (Montag 8:00) → get entities (alle Sensoren) → function (Zusammenfassung bauen) → call service (notify)
1 2 3 4 5 6 7 8 9 10 | // function-Node: Report zusammenstellen const entities = msg.payload; let report = "📊 Wochenbericht Smart Home:n"; report += `Temp Wohnzimmer: ${entities['sensor.thermostat_temp'].state}°Cn`; report += `Luftfeuchte: ${entities['sensor.thermostat_humidity'].state}%n`; report += `Strom heute: ${entities['sensor.strom_tag'].state} kWhn`; msg.payload = { message: report }; msg.domain = "notify"; msg.service = "mobile_app_iphone"; return msg; |
Beispiel 4: Mehrere Räume mit einer Logik
Anstatt 5 identische Automationen für 5 Zimmer zu bauen, nutzt Node-RED eine einzelne Logik für alle:
1 2 3 4 5 6 7 8 9 10 11 | // function-Node: Raum aus Entity-ID ableiten const entityId = msg.data.entity_id; // binary_sensor.bewegung_wohnzimmer_occupancy → light.wohnzimmer const room = entityId.replace('binary_sensor.bewegung_', '') .replace('_occupancy', ''); msg.payload = { domain: "light", service: msg.payload === "on" ? "turn_on" : "turn_off", target: { entity_id: `light.${room}` } }; return msg; |
Beispiel 5: Kalender-Automation (Urlaub erkennen)
Flow: inject (täglich 06:00) → http request (Google Calendar iCal) → function (heute Urlaub?) → call service (input_boolean.urlaubsmodus setzen)
1 2 3 4 5 6 7 8 9 10 11 | // function-Node: Prüfe ob heute ein Urlaubs-Eintrag im Kalender ist const ical = msg.payload; const today = new Date().toISOString().split('T')[0].replace(/-/g,''); const hasVacation = ical.includes('SUMMARY:Urlaub') && ical.includes('DTSTART:' + today); msg.payload = { domain: "input_boolean", service: hasVacation ? "turn_on" : "turn_off", target: { entity_id: "input_boolean.urlaubsmodus" } }; return msg; |
Node-RED vs. HA-Automationen – wann was?
| Kriterium | HA-Automationen | Node-RED |
|---|---|---|
| Einstieg | Sehr einfach (UI-Editor) | Lernkurve ~1 Stunde |
| Komplexe Logik | Begrenzt (choose/if-then) | Beliebig komplex |
| Externe APIs | Über REST-Integration möglich | Native http-request-Node |
| Debugging | Traces (gut) | Echtzeit-Debug (sehr gut) |
| MQTT direkt | Über Integration | Native MQTT-Nodes |
| Blueprints / Vorlagen | Ja (community.home-assistant.io) | Ja (flows.nodered.org) |
| Performance | Sehr gut (in HA integriert) | Gut (separater Prozess) |
| Empfehlung | Für 80% der Automationen | Für komplexe Spezialfälle |
Tipps & Best Practices
Tipp 1: Flows sauber benennen und kommentieren
Doppelklicke auf einen leeren Bereich der Leinwand → füge eine Kommentar-Node ein. Beschrifte jeden Flow mit Zweck und Datum. Nach 3 Monaten wirst du dankbar sein.
Tipp 2: Subflows für Wiederverwendung
Wenn dieselbe Logik in mehreren Flows vorkommt, erstelle einen Subflow: Menü → „Subflow erstellen“. Subflows sind wie Funktionen – einmal definiert, mehrfach verwendbar.
Tipp 3: Flows exportieren / Backup
Menü → „Exportieren“ → „Alle Flows“ → in Datei speichern. Speichere dieses Backup regelmäßig und zusammen mit deinen HA-Backups. Die Flows liegen auch auf dem Pi unter:
1 | /addon_configs/a0d7b954_nodered/flows.json |
Tipp 4: inject-Node zum Testen
Verbinde einen inject-Node mit jedem Flow-Eingang. Damit kannst du Flows per Klick manuell auslösen, ohne auf den echten Trigger warten zu müssen.
Tipp 5: catch-Node für Fehlerbehandlung
Füge einen catch-Node hinzu, der bei Fehlern im Flow eine Benachrichtigung schickt. So siehst du sofort, wenn etwas schiefläuft:
catch → function (Fehlermeldung aufbereiten) → call service (notify)
Tipp 6: Kontext-Variablen für Zustandsspeicherung
Node-RED hat drei Speicher-Ebenen für persistente Daten:
msg.xxx– nur innerhalb einer Nachrichtflow.xxx– geteilt zwischen Nodes im gleichen Flow-Tabglobal.xxx– geteilt zwischen allen Flows
1 2 3 4 5 | // Letzten Bewegungszeitpunkt speichern: flow.set('lastMotion', Date.now()); // Auslesen: const last = flow.get('lastMotion') || 0; const minutesAgo = (Date.now() - last) / 60000; |
FAQ
Verlangsamt Node-RED Home Assistant?
Minimal. Node-RED läuft als separates Add-on in einem eigenen Container. Auf einem Raspberry Pi 5 ist der Overhead kaum spürbar. Auf einem Pi 4 mit 2 GB RAM und 50+ komplexen Flows könnte es etwas mehr Ressourcen verbrauchen.
Kann ich bestehende HA-Automationen nach Node-RED migrieren?
Du musst nicht – beide Systeme arbeiten parallel. Node-RED greift über den WebSocket auf HA zu und kann HA-Entitäten lesen und schreiben. Einfache Automationen kannst du in HA lassen, nur komplexe in Node-RED umziehen.
Gibt es fertige Flows zum Download?
Ja – auf flows.nodered.org findest du tausende Flows. Klicke im Node-RED-Menü auf „Importieren“ → fürge den JSON-Code des Flows ein.
Wie aktualisiere ich Node-RED?
Im Home-Assistant-Add-on-Store erscheint bei verfügbaren Updates ein Hinweis. Klicke auf „Update“ – deine Flows bleiben erhalten, da sie separat von der Node-RED-Installation gespeichert werden.
Node-RED zeigt „disconnected“ – was tun?
Prüfe zuerst, ob HA läuft und erreichbar ist. Öffne einen der HA-Nodes → prüfe, ob die Base-URL und der Access-Token korrekt sind. Häufige Ursache: Der Token ist abgelaufen oder wurde gelöscht. Erstelle in HA einen neuen Token und trage ihn in Node-RED ein.
Kann Node-RED auch lokale Skripte ausführen?
Ja – mit der exec-Node kannst du Bash-Befehle auf dem Host ausführen (nur in Home Assistant OS eingeschränkt). Alternativ: HA-Skripte über call service (script.SCRIPTNAME) aufrufen.







