Skip to content
BotServBotServ
Node-REDHome AssistantSmart HomeAutomatisierungIoT

Node-RED mit Home Assistant

Node-RED mit Home Assistant verbinden. Entities steuern, Automatisierungen bauen, KI in Smart Home und Praxisbeispiele.

S

schutzgeist

6 min read
Node-RED mit Home Assistant

Node-RED mit Home Assistant

Was dieser Artikel über Node-RED mit Home Assistant behandelt

  • Wie Du Node-RED mit Home Assistant verbindest.
  • Wie Du Entities steuerst und auf Zustandsänderungen reagierst.
  • Wie komplexe Automatisierungen in Node-RED aussehen.
  • Wie Du KI in Smart-Home-Flows integrierst.
  • Praxisbeispiele für Licht, Klima, Sicherheit und Energie.

Einleitung: Node-RED mit Home Assistant verständlich erklärt

Home Assistant hat eigene Automatisierungen, aber sie sind begrenzt. Node-RED als Ergänzung ermöglicht komplexe Logik: Wenn-dann-Verknüpfungen mit mehreren Bedingungen, Zeiten, Verzögerungen und KI-Entscheidungen. Die Kombination ist der Standard für fortgeschrittene Smart-Home-Automatisierung.

Dieser Artikel richtet sich an Anwender, die Home Assistant mit Node-RED erweitern wollen. Grundlagen findest Du in Node-RED installieren und Heimautomatisierung.

Warum brauche ich Node-RED mit Home Assistant?

Home Assistant Automatisierungen sind YAML-basiert und linear. Wenn Du „Wenn Temperatur > 25 UND niemand zu Hause UND Sonne scheint, dann Rollladen runter” brauchst, wird YAML unübersichtlich. Node-RED macht das visuell: Sensor → Bedingungen → Aktion, alles als Flow.

Node-RED mit Home Assistant kurz erklärt

Node-RED verbindet sich über WebSocket mit Home Assistant. Du siehst alle Entities, kannst auf Zustandsänderungen reagieren und Services aufrufen. Flows sind visuell, mächtiger als YAML-Automatisierungen.

Der Kerngedanke lautet: Home Assistant liefert Daten, Node-RED liefert Logik.

Für wen ist dieser Artikel gedacht?

  • Home-Assistant-Nutzer, die komplexere Automatisierung brauchen.
  • Smart-Home-Bastler, die KI in ihre Automatisierung einbauen.
  • Node-RED-Nutzer, die Home Assistant anbinden wollen.
  • Self-Hoster, die ihr Smart Home selbst kontrollieren.

Vorkenntnisse in Home Assistant und Node-RED sind hilfreich.

Wichtige Begriffe

  • Node-RED - Flow-Editor. Wann nützlich: für komplexe Logik.
  • Home Assistant - Smart-Home-Plattform. Wann nützlich: die Basis.
  • Entity - Gerät/Sensor in HA. Wann nützlich: was gesteuert wird.
  • Service - Aktion in HA. Wann nützlich: was aufgerufen wird.
  • WebSocket - Verbindung HA ↔ Node-RED. Wann nützlich: für Echtzeit.
  • Ollama - Lokaler Modellserver. Wann nützlich: für KI in Flows.

Setup: Node-RED + Home Assistant

1. Home Assistant Add-on (einfachste Methode)

Wenn Du Home Assistant OS nutzt:

  1. Settings → Add-ons → Add-on Store
  2. „Node-RED” suchen und installieren
  3. „Start on boot” aktivieren
  4. Node-RED öffnen

Die Verbindung ist automatisch konfiguriert.

2. Docker (manuell)

version: "3.8"

services:
  homeassistant:
    image: homeassistant/home-assistant:latest
    container_name: homeassistant
    restart: unless-stopped
    ports:
      - "8123:8123"
    volumes:
      - ha_config:/config
    networks:
      - smarthome

  nodered:
    image: nodered/node-red:latest
    container_name: nodered
    restart: unless-stopped
    ports:
      - "1880:1880"
    volumes:
      - nodered_data:/data
    networks:
      - smarthome

volumes:
  ha_config:
  nodered_data:

networks:
  smarthome:
    driver: bridge

3. Node-RED mit HA verbinden

# In Node-RED: Palette → Install
node-red-contrib-home-assistant-websocket

Dann in Node-RED:

  1. Einen events: state Node hinzufügen.
  2. Auf das Zahnrad → „Add new server”.
  3. Home Assistant URL: http://homeassistant:8123
  4. Access Token aus Home Assistant (Profil → Long-Lived Access Tokens).

Wichtige Nodes

NodeZweck
events: stateReagiert auf Zustandsänderung
events: allAlle Events
call serviceService aufrufen (licht.turn_on)
current stateAktuellen Zustand lesen
trigger: stateTrigger bei Zustand
poll stateZustand periodisch abfragen
wait untilWarten bis Zustand erreicht
apiBeliebige HA-API aufrufen

Praxisbeispiel 1: Licht bei Bewegung

[events: state: binary_sensor.bewegung_flur]
    │
    ▼ (state == "on")
[time range: 18:00 - 06:00]  ← nur nachts
    │
    ▼
[call service: light.turn_on]
  Entity: light.flur
  Data: {"brightness": 128}
    │
    ▼
[delay: 5 minutes]
    │
    ▼
[call service: light.turn_off]
  Entity: light.flur

Praxisbeispiel 2: Klima-Automatisierung

[poll state: sensor.aussentemperatur] (alle 5 Min)
    │
    ▼
[function: Entscheidung]
  const temp = msg.payload;
  const innen = global.get("innentemperatur") || 21;
  if (temp > 25 && innen > 23) {
    msg.payload = "kuehlen";
  } else if (temp < 5 && innen < 19) {
    msg.payload = "heizen";
  } else {
    msg.payload = "nichts";
  }
    │
    ▼
[switch]
    ├─ kuehlen → [call service: climate.set_hvac_mode cool]
    ├─ heizen → [call service: climate.set_hvac_mode heat]
    └─ nichts → [call service: climate.set_hvac_mode off]

Praxisbeispiel 3: Anwesenheitserkennung mit KI

[events: state: person.max]
    │
    ▼
[function: Kontext sammeln]
  const context = {
    person: msg.payload,
    uhrzeit: new Date().toLocaleTimeString(),
    wochentag: new Date().toLocaleDateString('de', {weekday: 'long'}),
    licht: global.get("licht_status"),
    temperatur: global.get("temperatur")
  };
  msg.payload = JSON.stringify(context);
    │
    ▼
[HTTP Request: Ollama]
  "Basierend auf dem Kontext, was sollte passieren?
   Kontext: {{msg.payload}}
   Optionen: licht_an, musik_an, heizung_an, nichts
   Antworte als JSON."
    │
    ▼
[function: JSON parsen]
    │
    ▼
[switch: action]
    ├─ licht_an → [call service: light.turn_on]
    ├─ musik_an → [call service: media_player.play]
    └─ heizung_an → [call service: climate.set_temperature]

Praxisbeispiel 4: Energie-Management

[poll state: sensor.strompreis] (alle 15 Min)
    │
    ▼
[function: Preis analysieren]
  const preis = parseFloat(msg.payload);
  msg.guenstig = preis < 0.25;  // Cent/kWh
  msg.teuer = preis > 0.40;
    │
    ▼
[switch]
    ├─ guenstig → [call service: switch.turn_on waschmaschine]
    │             [call service: switch.turn_on geschirrspueler]
    └─ teuer → [call service: switch.turn_off nicht_notwendig]

Praxisbeispiel 5: Sicherheits-Monitoring

[events: state: group.alle_sensoren]
    │
    ▼
[function: Alarm prüfen]
  const state = msg.payload;
  const uhrzeit = new Date().getHours();
  const nacht = uhrzeit < 6 || uhrzeit > 22;

  if (state === "on" && nacht) {
    msg.alarm = true;
    msg.grund = "Nächtliche Bewegung erkannt";
  }
    │
    ▼
[switch: alarm?]
    │
    ▼ (ja)
[call service: notify.notify]
  "Alarm! {{msg.grund}}"
    │
    ▼
[call service: light.turn_on]
  Alle Lichter an
    │
    ▼
[call service: camera.snapshot]
  Foto aufnehmen

KI in Smart-Home-Flows

Natürliche Sprachbefehle

[HTTP In: /api/voice-command]
    │
    ▼
[HTTP Request: Ollama]
  "Interpretiere den Befehl: '{{msg.payload.command}}'
   Verfügbare Entities: {{entities}}
   Antworte als JSON: {action, entity, params}"
    │
    ▼
[function: JSON parsen + Service aufrufen]
  const cmd = JSON.parse(msg.payload);
  msg.service = cmd.action;
  msg.entity = cmd.entity;
  msg.data = cmd.params;
    │
    ▼
[call service]

Anomalie-Erkennung

// Function Node: Ungewöhnliche Muster erkennen
const verlauf = context.get("verlauf") || [];
verlauf.push({ temp: msg.payload, zeit: Date.now() });
if (verlauf.length > 100) verlauf.shift();

// An KI senden für Analyse
msg.payload = `Temperaturverlauf: ${JSON.stringify(verlauf.slice(-20))}
Erkennst du Anomalien? Antworte: normal/anomalie + Begründung`;
return msg;

Sicherheitshinweise

  • Access Token: Erstelle ein dediziertes Token für Node-RED mit minimalen Berechtigungen.
  • Nicht exponieren: Node-RED und Home Assistant nicht direkt ins Internet.
  • Kritische Aktionen: Für Sicherheits-relevante Aktionen (Alarm, Türen) menschliche Bestätigung. Siehe Menschliche Freigabe.
  • Validierung: KI-Ausgaben prüfen, bevor Aktionen ausgeführt werden.

Typische Stolpersteine

  • Falsche Entity-IDs: Entities heißen light.wohnzimmer, nicht Wohnzimmer.
  • Token abgelaufen: Long-Lived Access Tokens können ablaufen. Neu generieren.
  • Zu viele Events: events: all kann überwältigend sein. Filtere spezifisch.
  • Race Conditions: Zwei Flows, die dieselbe Entity steuern, können sich widersprechen.
  • Kein Fallback: Wenn Node-RED ausfällt, sollten kritische Automatisierungen in HA laufen.

Key Takeaways:

  • Node-RED + Home Assistant = mächtige Smart-Home-Automatisierung.
  • node-red-contrib-home-assistant-websocket für die Verbindung.
  • events: state für Trigger, call service für Aktionen.
  • KI mit Ollama für intelligente Entscheidungen.
  • Komplexe Logik visuell statt YAML.

FAQ

Wie verbinde ich Node-RED mit Home Assistant?

Installiere node-red-contrib-home-assistant-websocket, erstelle ein Long-Lived Access Token in Home Assistant und konfiguriere den Server in Node-RED.

Node-RED oder HA-Automatisierungen?

HA-Automatisierungen für einfache Wenn-Dann. Node-RED für komplexe Logik mit mehreren Bedingungen, Verzögerungen und KI. Beides kann koexistieren.

Wie finde ich Entity-IDs?

In Home Assistant unter Settings → Devices & Services → Entities. Oder in Node-RED im Node-Editor beim Konfigurieren eines HA-Nodes.

Wie baue ich KI in Smart-Home-Flows?

Über einen HTTP Request Node an Ollama. Die KI kann Kontext analysieren, Befehle interpretieren oder Anomalien erkennen.

Ist das sicher?

Ja, wenn lokal. Beide Dienste bleiben in Deinem Netzwerk. Erstelle ein dediziertes Token mit minimalen Berechtigungen und exponiere nichts ins Internet.

Was passiert bei Node-RED-Ausfall?

Flows stoppen. Kritische Automatisierungen (Alarm, Heizung) sollten als Fallback in Home Assistant selbst laufen.

Wie performant ist das?

WebSocket-Verbindung ist Echtzeit (ms). KI-Aufrufe dauern 2-10 Sekunden. Für Zeitkritisches (Bewegungsmelder → Licht) ist Node-RED ohne KI schneller.

Wie debugge ich Flows?

Debug-Nodes nach jedem Schritt einfügen, im Debug-Panel Nachrichten prüfen. Der events: all Node zeigt alle HA-Events.

Quellen und weiterführende Literatur

Zurück zum KI Blog
Share:

Ähnliche Beiträge