Appearance
InfluxDB
InfluxDB▶
InfluxDB ist die Zeitreihendatenbank des IT-Systems im Wohnmobil.
Sie speichert Messwerte zusammen mit ihrem jeweiligen Zeitstempel und ermöglicht dadurch die spätere Auswertung zeitlicher Verläufe.
InfluxDB läuft auf dem Raspberry Pi tsg-bobil als Docker-Container.
Aktuelle Messwerte werden zunächst von Node-RED verarbeitet. Werte, die historisch aufgezeichnet werden sollen, schreibt Node-RED zusätzlich in InfluxDB.
Die gespeicherten Daten werden anschließend von Grafana für Diagramme und Auswertungen verwendet.
Aufgabe im IT-System
InfluxDB übernimmt die Speicherung historischer Messwerte.
Der grundsätzliche Datenfluss sieht dabei so aus:
text
Sensor / Systemwert
│
▼
Node-RED
│
▼
InfluxDB
│
▼
GrafanaInfluxDB stellt dabei keine eigentliche Benutzeranzeige bereit.
Die Visualisierung und Auswertung der gespeicherten Daten erfolgt über Grafana.
Zugriff
Die Weboberfläche von InfluxDB ist im Womo-Netz erreichbar unter:
text
http://192.168.8.10:8086Im Heimnetz ist tsg-bobil derzeit erreichbar unter:
text
http://192.168.2.194:8086Zugriff▶
Der Zugriff auf die InfluxDB-Weboberfläche ist für die Administration des Systems vorgesehen.
Zugangsdaten und Zugriffstoken werden nicht im Womo-Handbuch dokumentiert.
Organisation
Für das Womo-System wird folgende InfluxDB-Organisation verwendet:
text
womoBucket
Die Messwerte werden derzeit im Bucket
text
metrics_90dgespeichert.
Für diesen Bucket ist eine Aufbewahrungszeit von:
text
90 Tageneingestellt.
Messwerte, die älter als 90 Tage sind, werden von InfluxDB automatisch entfernt.
Aufbewahrungszeit▶
Die InfluxDB-Daten dienen hauptsächlich zur Beobachtung und Auswertung der letzten Tage und Wochen.
Eine dauerhafte Archivierung der Messwerte ist derzeit nicht vorgesehen.
Die begrenzte Aufbewahrungszeit verhindert gleichzeitig, dass die Datenbank durch kontinuierlich eintreffende Messwerte unbegrenzt wächst.
Datenstruktur
InfluxDB organisiert die gespeicherten Daten unter anderem über:
- Measurements
- Fields
- Tags
- Zeitstempel
Ein Measurement fasst zusammengehörige Messwerte zusammen.
Fields enthalten die eigentlichen Messwerte.
Tags dienen zur Unterscheidung und Filterung verschiedener Datenquellen.
Measurement raumklima
Die Messwerte der drei Raumklimasensoren werden im Measurement
text
raumklimagespeichert.
Sensoren
Die einzelnen Sensoren werden über den Tag sensor unterschieden.
| Sensor | Bereich |
|---|---|
RTF_01_WR | Wohnraum |
RTF_02_LR | Laderaum |
RTF_03_FR | Fahrgastraum |
Fields
Für jeden Raumklimasensor werden folgende Fields gespeichert:
| Field | Bedeutung | Einheit |
|---|---|---|
temperature | Temperatur | °C |
humidity | relative Luftfeuchtigkeit | % |
pressure | Luftdruck | hPa |
battery | Batteriestand des Sensors | % |
Datenfluss
Die Daten gelangen über Zigbee2MQTT und Mosquitto zu Node-RED.
text
Zigbee-Sensor
│
│ Zigbee
▼
Zigbee2MQTT
│
│ MQTT
▼
Mosquitto
│
▼
Node-RED
│
▼
InfluxDBNode-RED bereitet die eingehenden Daten für InfluxDB auf.
Die Daten werden dabei beispielsweise in folgender Struktur übergeben:
text
Measurement: raumklima
Tag:
sensor = RTF_01_WR
Fields:
temperature
humidity
pressure
batteryDie gleiche Struktur wird für die Sensoren im Laderaum und Fahrgastraum verwendet.
Measurement system
Neben den Raumklimadaten werden auch ausgewählte Betriebswerte des Raspberry Pi gespeichert.
Diese werden im Measurement
text
systemabgelegt.
Host
Zur Zuordnung des Rechners wird der Tag host verwendet:
text
host = tsg-bobilFields
Derzeit wird folgender Systemwert gespeichert:
| Field | Bedeutung | Einheit |
|---|---|---|
temperature | CPU-Temperatur des Raspberry Pi | °C |
Erfassung der CPU-Temperatur
Node-RED liest die CPU-Temperatur des Raspberry Pi regelmäßig aus.
Die Temperatur kann unter Linux über folgende Systemdatei abgefragt werden:
text
/sys/class/thermal/thermal_zone0/tempDer dort gelieferte Wert wird von Node-RED in Grad Celsius umgerechnet und auf eine Nachkommastelle gerundet.
Die Messung erfolgt derzeit:
text
einmal pro MinuteAnschließend wird der Wert in InfluxDB gespeichert.
Der Datenfluss ist damit:
text
Raspberry Pi
│
│ CPU-Temperatur
▼
Node-RED
│
▼
InfluxDB
│
▼
GrafanaSchreiben der Daten durch Node-RED
Node-RED verwendet für das Schreiben der Messwerte die vorhandene InfluxDB-Verbindung.
Die wesentlichen Einstellungen sind:
| Einstellung | Wert |
|---|---|
| Organisation | womo |
| Bucket | metrics_90d |
| Zeitgenauigkeit | Millisekunden |
Raumklima
Für die Raumklimadaten wird verwendet:
text
Measurement: raumklimaRaspberry Pi
Für die Systemdaten wird verwendet:
text
Measurement: systemDadurch bleiben Raumklima- und Systemdaten innerhalb desselben Buckets logisch voneinander getrennt.
Auswertung mit Grafana
Grafana verwendet InfluxDB als Datenquelle.
Die gespeicherten Messwerte können dadurch über frei wählbare Zeiträume dargestellt werden.
Im Dashboard Womo-Raumklima werden derzeit ausgewertet:
- Temperatur von Wohnraum, Laderaum und Fahrgastraum
- relative Luftfeuchtigkeit von Wohnraum, Laderaum und Fahrgastraum
- Luftdruck von Wohnraum, Laderaum und Fahrgastraum
- Batteriestand der drei Raumklimasensoren
- CPU-Temperatur des Raspberry Pi
Weitere Informationen zur Darstellung befinden sich im Kapitel:
Aktuelle Datenstruktur
Die derzeit verwendete Struktur lässt sich vereinfacht so zusammenfassen:
text
Organisation
└── womo
│
└── Bucket
└── metrics_90d
│
├── Measurement: raumklima
│ │
│ ├── Tag: sensor
│ │ ├── RTF_01_WR
│ │ ├── RTF_02_LR
│ │ └── RTF_03_FR
│ │
│ └── Fields
│ ├── temperature
│ ├── humidity
│ ├── pressure
│ └── battery
│
└── Measurement: system
│
├── Tag: host
│ └── tsg-bobil
│
└── Fields
└── temperatureDatensicherung
Die eigentlichen Messdaten werden derzeit nicht über Git gesichert.
Aufgrund der begrenzten Aufbewahrungszeit von 90 Tagen sind die historischen Messdaten nicht als dauerhaftes Archiv vorgesehen.
Die für einen Wiederaufbau wichtige Struktur der InfluxDB-Konfiguration wird dagegen im Git-Repository
text
tsg-bobil-configdokumentiert.
Dort befindet sich die InfluxDB-Dokumentation unter:
text
influxdb/README.mdDas Grafana-Dashboard wird zusätzlich als JSON-Datei im gleichen Repository gesichert.
Git und Messdaten▶
Git dient zur Sicherung der Konfiguration und Dokumentation, nicht zur Sicherung der laufenden InfluxDB-Messdaten.
Die eigentlichen Zeitreihendaten im Bucket metrics_90d werden daher nicht in das Git-Repository übernommen.
Erweiterung
Die vorhandene Struktur kann später um weitere Measurements und Messwerte ergänzt werden.
Vorgesehen bzw. denkbar sind beispielsweise Daten aus dem elektrischen Bordnetz wie:
- Batteriespannung
- Batteriestrom
- Ladezustand
- Lade- und Entladeleistung
- Solarleistung
- Energieerträge
Diese Daten können nach ihrer Anbindung ebenfalls über Node-RED in InfluxDB gespeichert und anschließend in Grafana ausgewertet werden.