Skip to content

Node-RED ​

Node-RED dient im Wohnmobil als zentrale Verarbeitungsebene fĂŒr Messwerte, externe Daten und einfache Schnittstellen zwischen den verschiedenen Diensten.

Die Anwendung lÀuft als Docker-Container auf dem Raspberry Pi tsg-bobil.

Zugriff ​

Im Womo-Netz ist die Node-RED-OberflÀche unter folgender Adresse erreichbar:

http://192.168.8.10:1880

EigenschaftWert
AnwendungNode-RED
Containernodered
Port1880
Adresse im Womo-Netz192.168.8.10:1880

Zugriffsschutz ​

Der Zugriff auf den Node-RED-Editor ist durch Benutzername und Passwort geschĂŒtzt.

Die Anmeldung wird ĂŒber die adminAuth-Konfiguration von Node-RED geregelt. Das Passwort wird dabei nicht im Klartext gespeichert, sondern als kryptografischer Hash in der Datei settings.js hinterlegt.

⚠Zugangsdaten▶

Die Zugangsdaten werden nicht im Handbuch gespeichert, sondern separat in Bitwarden verwaltet.

Aufgaben ​

Node-RED empfÀngt Daten aus verschiedenen Quellen und kann diese weiterverarbeiten, umwandeln und an andere Dienste weitergeben.

Derzeit ĂŒbernimmt Node-RED unter anderem:

  • Empfang von Messwerten ĂŒber MQTT
  • Aufbereitung von Sensordaten
  • Speicherung historischer Messwerte in InfluxDB
  • Bereitstellung aktueller Messwerte fĂŒr das Womo-Handbuch
  • Verarbeitung der GPS-Position des Wohnmobils
  • Verwaltung des Wetterstandorts
  • Umschaltung zwischen manuellem und GPS-basiertem Wetterstandort
  • Ermittlung von Koordinaten und Ortsnamen ĂŒber OpenWeatherMap
  • Abruf aktueller Wetterdaten von OpenWeatherMap
  • Bereitstellung von HTTP-Schnittstellen fĂŒr VitePress

Verarbeitung von Sensordaten ​

Eine wichtige Aufgabe ist die Verarbeitung der Messwerte der Zigbee-Sensoren.

Der Datenweg sieht dabei vereinfacht so aus:

text
Zigbee-Sensor
     │
     ▌
Zigbee2MQTT
     │
     ▌
 Mosquitto
     │
     │ MQTT
     ▌
  Node-RED
     │
     ├────────────â–ș HTTP-API
     │                  │
     │                  â–Œ
     │             Womo-Handbuch
     │
     ▌
  InfluxDB
     │
     ▌
   Grafana

Node-RED abonniert die entsprechenden MQTT-Topics bei Mosquitto und erhÀlt dadurch die von Zigbee2MQTT bereitgestellten Messwerte.

Die empfangenen MQTT-Nachrichten enthalten bei den Raumklimasensoren unter anderem:

  • Temperatur
  • relative Luftfeuchtigkeit
  • Luftdruck
  • Batteriestatus
  • Verbindungsinformationen

Die Messwerte können anschließend fĂŒr unterschiedliche Zwecke verwendet werden.

Aktuelle Messwerte ​

FĂŒr die Anzeige auf der Startseite des Womo-Handbuchs werden die zuletzt empfangenen Werte in Node-RED aufbereitet und zwischengespeichert.

FĂŒr den derzeit verwendeten Innensensor werden unter anderem folgende Werte bereitgestellt:

text
Temperatur
Luftfeuchtigkeit
Luftdruck
Sensor-Batterie
Zeitpunkt der letzten Messung

Die VitePress-Startseite ruft diese Daten regelmĂ€ĂŸig ĂŒber eine HTTP-Schnittstelle ab.

Dadurch werden neue Sensordaten automatisch auf der Startseite angezeigt, ohne dass die Webseite manuell neu geladen werden muss.

Historische Messwerte ​

Messwerte, die langfristig gespeichert werden sollen, werden zusĂ€tzlich an InfluxDB ĂŒbergeben.

Beispielsweise werden die Werte eines Raumklimasensors dem Measurement

raumklima

zugeordnet.

Die einzelnen Sensoren können ĂŒber ein Tag wie

sensor = RTF_Test_Pi8

unterschieden werden.

Grafana kann anschließend auf die gespeicherten Daten zugreifen und zeitliche VerlĂ€ufe darstellen.

â„čAufgabentrennung▶

Mosquitto transportiert die MQTT-Nachrichten.

Node-RED verarbeitet die darin enthaltenen Daten und stellt aktuelle Werte bereit.

InfluxDB ĂŒbernimmt die dauerhafte Speicherung der Messwerte.

Grafana dient der Darstellung und Auswertung historischer Daten.

VitePress zeigt ausgewÀhlte aktuelle Werte direkt im Womo-Handbuch an.

Außenwetter ​

Node-RED ruft aktuelle Wetterdaten von OpenWeatherMap ab und stellt diese fĂŒr die Wetteranzeige auf der Startseite des Womo-Handbuchs bereit.

FĂŒr die Auswahl des Wetterstandorts stehen zwei Betriebsarten zur VerfĂŒgung:

  • Manuell – der gewĂŒnschte Ort wird auf der Startseite eingegeben.
  • GPS-Standort – die aktuelle Position des Wohnmobils wird automatisch verwendet.

Der manuelle Modus ist der Standard. Dadurch kann beispielsweise auch gezielt das Wetter eines Reiseziels angezeigt werden, unabhÀngig davon, wo sich das Wohnmobil gerade befindet.

Manueller Wetterstandort ​

Im manuellen Modus kann der gewĂŒnschte Ort direkt in der Wetteranzeige des Womo-Handbuchs eingegeben werden.

Node-RED ĂŒbergibt den Ortsnamen an das Geocoding von OpenWeatherMap und erhĂ€lt die zugehörigen geografischen Koordinaten:

text
Ortsname
   │
   ▌
Node-RED
   │
   ▌
OpenWeatherMap
Geocoding
   │
   ▌
Latitude / Longitude

Die ermittelten Koordinaten werden anschließend fĂŒr den Abruf der Wetterdaten verwendet.

GPS-basierter Wetterstandort ​

Alternativ kann die aktuelle Position des Wohnmobils als Wetterstandort verwendet werden.

Die Positionsdaten stammen vom am Raspberry Pi angeschlossenen GPS-EmpfĂ€nger und werden ĂŒber gpsd bereitgestellt.

text
GPS-EmpfÀnger
     │
     │ USB
     ▌
   gpsd
     │
     ▌
 Node-RED
     │
     ▌
Latitude / Longitude

Node-RED speichert die letzte gĂŒltige GPS-Position und stellt sie fĂŒr weitere Funktionen zur VerfĂŒgung.

Da der GPS-EmpfĂ€nger zunĂ€chst nur geografische Koordinaten liefert, wird zusĂ€tzlich ĂŒber das Reverse Geocoding von OpenWeatherMap der zugehörige Ortsname ermittelt:

text
Latitude / Longitude
        │
        ▌
     Node-RED
        │
        ▌
 OpenWeatherMap
Reverse Geocoding
        │
        ▌
     Ortsname

Dadurch kann auf der Startseite beispielsweise statt der reinen GPS-Koordinaten ein Standort wie

Stolberg, DE

angezeigt werden.

Die Ortsbestimmung ĂŒber Reverse Geocoding muss nicht bei jedem neuen GPS-Datensatz durchgefĂŒhrt werden. Ein bereits bestimmter Ortsname kann weiterverwendet werden, solange sich das Fahrzeug nicht wesentlich vom zuletzt bestimmten Standort entfernt hat.

Wetterdaten abrufen ​

UnabhĂ€ngig davon, ob der Standort manuell oder per GPS bestimmt wurde, verwendet Node-RED anschließend dessen geografische Koordinaten fĂŒr den eigentlichen Wetterabruf:

text
            Wetterstandort
                  │
          ┌───────┮───────┐
          │               │
       Manuell            GPS
          │               │
          └───────┬───────┘
                  │
                  ▌
         Latitude / Longitude
                  │
                  ▌
               Node-RED
                  │
                  ▌
           OpenWeatherMap
                  │
                  ▌
        aktuelle Wetterdaten
                  │
                  ▌
           Womo-Handbuch

Zu den bereitgestellten Wetterdaten gehören unter anderem:

  • Standort
  • geografische Koordinaten
  • Temperatur
  • gefĂŒhlte Temperatur
  • relative Luftfeuchtigkeit
  • Luftdruck
  • Wetterlage
  • Windgeschwindigkeit
  • Bewölkung
  • Zeitpunkt der Wetterdaten

Die Wetterdaten werden regelmĂ€ĂŸig aktualisiert.

Beim Umschalten zwischen Manuell und GPS-Standort wird unmittelbar ein neuer Wetterabruf fĂŒr den gewĂ€hlten Standort ausgelöst.

FĂŒr den Abruf neuer Wetterdaten sowie fĂŒr die Ermittlung eines Ortsnamens ĂŒber OpenWeatherMap ist eine Internetverbindung erforderlich.

â„čGPS und Internetverbindung▶

Die Ermittlung der geografischen Position ĂŒber den GPS-EmpfĂ€nger funktioniert unabhĂ€ngig von einer Internetverbindung.

Eine Internetverbindung wird jedoch benötigt, um aus den GPS-Koordinaten einen Ortsnamen zu ermitteln und aktuelle Wetterdaten von OpenWeatherMap abzurufen.

5-Tage-Wettervorhersage ​

ZusÀtzlich zu den aktuellen Wetterdaten ruft Node-RED eine Wettervorhersage von OpenWeatherMap ab.

FĂŒr die Vorhersage wird derselbe Wetterstandort verwendet wie fĂŒr die aktuellen Wetterdaten. Dadurch berĂŒcksichtigt die Vorhersage automatisch den auf der Startseite gewĂ€hlten Wettermodus:

  • Manuell – Vorhersage fĂŒr den manuell gewĂ€hlten Standort
  • GPS-Standort – Vorhersage fĂŒr die aktuelle Position des Wohnmobils

Der Datenweg sieht vereinfacht so aus:

text
       gewÀhlter Wetterstandort
                 │
         ┌───────┮───────┐
         │               │
      Manuell            GPS
         │               │
         └───────┬───────┘
                 │
                 ▌
        Latitude / Longitude
                 │
                 ▌
              Node-RED
                 │
                 ▌
          OpenWeatherMap
              Forecast
                 │
                 ▌
       3-Stunden-Vorhersage
                 │
                 ▌
              Node-RED
                 │
                 ▌
        Tagesaufbereitung
                 │
                 ▌
           Womo-Handbuch

OpenWeatherMap liefert die Vorhersagedaten in einem Raster von drei Stunden.

FĂŒr einen vollstĂ€ndigen Tag stehen dadurch bis zu acht Vorhersagepunkte zur VerfĂŒgung:

text
00:00
03:00
06:00
09:00
12:00
15:00
18:00
21:00

FĂŒr den aktuellen Tag werden nur noch die zum Zeitpunkt des Abrufs verfĂŒgbaren zukĂŒnftigen Vorhersagepunkte berĂŒcksichtigt.

Node-RED gruppiert die einzelnen Vorhersagepunkte nach Kalendertagen und erzeugt daraus eine Tageszusammenfassung.

Diese enthÀlt unter anderem:

  • minimale und maximale Temperatur
  • Wetterlage
  • Niederschlagswahrscheinlichkeit
  • erwartete Niederschlagsmenge
  • maximale Windgeschwindigkeit

ZusĂ€tzlich bleiben die einzelnen 3-Stunden-Werte erhalten. Dadurch können auf der Wetterseite neben der TagesĂŒbersicht auch detaillierte Werte fĂŒr den ausgewĂ€hlten Tag angezeigt werden.

Die Wettervorhersage zeigt Heute und die folgenden vier Tage.

Über die Tagesauswahl kann ein Tag ausgewĂ€hlt werden. Darunter werden die verfĂŒgbaren 3-Stunden-Werte dieses Tages angezeigt, unter anderem:

  • Uhrzeit
  • Temperatur
  • gefĂŒhlte Temperatur
  • Wetterlage
  • Niederschlagswahrscheinlichkeit
  • Niederschlagsmenge
  • Windgeschwindigkeit
  • relative Luftfeuchtigkeit

Die aufbereiteten Forecast-Daten werden von Node-RED zwischengespeichert und ĂŒber eine eigene HTTP-Schnittstelle fĂŒr VitePress bereitgestellt.

â„čWetterstandort▶

Aktuelles Wetter und Wettervorhersage verwenden immer denselben gewÀhlten Standort.

Wird auf der Startseite zwischen Manuell und GPS-Standort gewechselt, gilt diese Auswahl damit auch fĂŒr die Wettervorhersage.

HTTP-Schnittstellen ​

Node-RED stellt fĂŒr die Startseite des Womo-Handbuchs eigene HTTP-Schnittstellen bereit.

MethodeSchnittstelleAufgabe
GET/api/innendatenaktuelle Innenraum-Messwerte abrufen
GET/api/aussenwetteraktuelle Wetterdaten abrufen
POST/api/standortWetterstandort Àndern
GET/api/forecast5-Tage-Wettervorhersage abrufen

Die Vue-Komponenten der VitePress-Startseite verwenden diese Schnittstellen fĂŒr die Anzeige und Aktualisierung der Live-Daten.

Innenraumdaten abrufen ​

Über

GET /api/innendaten

werden die zuletzt von Node-RED empfangenen Innenraumdaten bereitgestellt.

Die Antwort enthÀlt beispielsweise:

json
{
  "sensor": "RTF_Test_Pi8",
  "temperatur": 28.7,
  "luftfeuchtigkeit": 50.8,
  "luftdruck": 991.5,
  "batterie": 90,
  "zeitpunkt": 1786807200
}

Außenwetter abrufen ​

Über

GET /api/aussenwetter

werden die zuletzt abgerufenen Wetterdaten bereitgestellt.

Beispielsweise:

json
{
  "ort": "Aachen, DE",
  "lat": 50.78,
  "lon": 6.08,
  "temperatur": 28.3,
  "gefuehlt": 28.6,
  "luftfeuchtigkeit": 47,
  "luftdruck": 1014,
  "wetter": "Bedeckt",
  "icon": "04d",
  "wind_kmh": 16.5,
  "wolken": 100,
  "zeitpunkt": 1786807197
}

Wettervorhersage abrufen ​

Über

GET /api/forecast

werden die von Node-RED aufbereiteten Daten der 5-Tage-Wettervorhersage bereitgestellt.

Die Vorhersage verwendet denselben Wetterstandort wie die Anzeige des aktuellen Außenwetters. AbhĂ€ngig vom gewĂ€hlten Wettermodus stammen die Koordinaten daher entweder vom manuell eingestellten Standort oder von der aktuellen GPS-Position des Wohnmobils.

Die Antwort enthĂ€lt eine TagesĂŒbersicht fĂŒr Heute und die folgenden vier Tage. ZusĂ€tzlich enthĂ€lt jeder Tag die verfĂŒgbaren Vorhersagewerte im 3-Stunden-Raster.

Beispiel:

json
{
  "ort": "Lindau (Bodensee), DE",
  "lat": 47.550753,
  "lon": 9.6926624,
  "zeitpunkt": 1787070000,
  "tage": [
    {
      "datum": "2026-08-18",
      "datum_kurz": "18.08.",
      "wochentag": "Heute",
      "temp_min": 24.0,
      "temp_max": 24.5,
      "wetter": "Leichter Regen",
      "icon": "10d",
      "regen_wahrscheinlichkeit": 100,
      "regen_mm": 0.9,
      "wind_max_kmh": 12.1,
      "stunden": [
        {
          "zeit": "20:00",
          "temperatur": 24.5,
          "gefuehlt": 24.8,
          "luftfeuchtigkeit": 65,
          "luftdruck": 1014,
          "wetter": "Leichter Regen",
          "icon": "10d",
          "regen_wahrscheinlichkeit": 100,
          "regen_mm": 0.6,
          "wind_kmh": 12.1,
          "wind_richtung": 245,
          "wolken": 80,
          "zeitpunkt": 1787076000
        }
      ]
    }
  ]
}

Die Felder auf Tagesebene stellen eine Zusammenfassung der verfĂŒgbaren 3-Stunden-Werte dar.

Dabei werden unter anderem folgende Werte ermittelt:

  • temp_min – niedrigste vorhergesagte Temperatur
  • temp_max – höchste vorhergesagte Temperatur
  • wetter – reprĂ€sentative Wetterlage des Tages
  • regen_wahrscheinlichkeit – höchste Niederschlagswahrscheinlichkeit
  • regen_mm – aufsummierte Niederschlagsmenge
  • wind_max_kmh – höchste vorhergesagte Windgeschwindigkeit
  • stunden – einzelne Vorhersagepunkte des Tages

Die Vue-Komponente WomoForecast ruft diese Schnittstelle ab und stellt die Daten auf der Seite Wettervorhersage dar.

Über die Tagesauswahl können die zusammengefassten Tageswerte sowie die detaillierten 3-Stunden-Werte angezeigt werden. ​

Wetterstandort Ă€ndern ​

Über

POST /api/standort

kann ein neuer Wetterstandort an Node-RED ĂŒbergeben werden.

Beispiel:

json
{
  "ort": "Doolin, IE"
}

Node-RED ermittelt anschließend ĂŒber OpenWeatherMap die Koordinaten des Ortes und ruft unmittelbar die Wetterdaten fĂŒr diesen Standort ab.

Der neue Standort wird danach auch fĂŒr die regelmĂ€ĂŸige Aktualisierung der Wetterdaten verwendet.

Kommunikation zwischen Docker-Containern ​

Node-RED ist mit den anderen benötigten Docker-Containern ĂŒber das interne Docker-Netzwerk womo-net verbunden.

Dadurch können Dienste direkt ĂŒber ihre Containernamen angesprochen werden.

Beispiele:

text
Mosquitto → mosquitto:1883
InfluxDB  → influxdb:8086

Die interne Kommunikation ist dadurch unabhÀngig von der jeweiligen IP-Adresse des Raspberry Pi im Heim- oder Womo-Netz.

Weitere Informationen dazu befinden sich im Kapitel Netzwerk.

Erweiterungen ​

Node-RED lĂ€sst sich ĂŒber zusĂ€tzliche Nodes und eigene Flows erweitern.

FĂŒr die Speicherung der Messwerte in InfluxDB sind entsprechende InfluxDB-Nodes installiert.

Dadurch können aufbereitete Messwerte direkt aus einem Flow in die InfluxDB geschrieben werden.

Weitere Verwendung ​

Node-RED bildet die zentrale Verarbeitungsebene fĂŒr weitere Automatisierungs- und Messaufgaben im Wohnmobil.

ZukĂŒnftig können hier beispielsweise auch Messwerte der Victron-Komponenten verarbeitet und ĂŒber denselben Datenweg bereitgestellt werden:

text
Victron
   │
   ▌
Node-RED
   │
   ├──â–ș aktuelle Werte → Womo-Handbuch
   │
   └──â–ș historische Werte → InfluxDB → Grafana

Damit kann die bestehende Struktur spÀter um weitere Fahrzeug- und Energiedaten ergÀnzt werden.

← ZurĂŒck zum IT-System