Skip to content

Logging per InfluxDB

SBorg2014 edited this page May 18, 2023 · 10 revisions

Wenn man bereits InfluxDB nutzt, muss man nicht zwangsweise eine neue Datenbank anlegen, man kann auch eine bestehende nutzen. Wenn man sich extra eine eigene Datenbank für die Wetterdaten anlegt, muss man dann auch mit einer weiteren Instanz des Influx-Adapters im ioBroker arbeiten, denn aktuell kann eine Instanz des Adapters auch immer nur eine Datenbank bedienen!
Trotzdem ist die Idee mit mehreren Buckets zu arbeiten nicht die schlechteste. Man kann pro Bucket nur eine Retention Policy (=Aufbewahrungsrichtlinie) festlegen. Wollt ihr also bspw. die Wetterdaten/-messwerte behalten, loggt aber alles in einen Bucket (zB. den Zustand der Briefklappe [Stichwort: "Post da..."]), dann bleiben sämtliche weitere Messserien ebenfalls im Bucket enthalten. Das wird dann uU. eine extreme Datenflut und wen interessiert noch ob vor 3 Jahren die Briefklappe betätigt wurde...

Instanz.0 --> SmartHome
Instanz.1 --> Wetterstation
Instanz.n --> ...

Da dies hier keine WiKi zur InfluxDB oder des ioBroker-Adapters ist, sei an dieser Stelle auf entsprechende anderweitige Quellen verwiesen zur allgemeinen Konfiguration oder Inbetriebnahme derer.

Wofür brauche ich denn überhaupt Influx?

Zumindest schon mal wenn man

  • Min/Max Außentemperatur Heute (0:00 Uhr bis 23:59 Uhr)
  • Min/Max Außentemperatur der letzten 24 Stunden (aktuelle Uhrzeit minus 24 Stunden)
  • Min/Max/Avg Außentemperatur vor einem Jahr
  • Windböe maximal

haben möchte. Sicherheitshalber erwähne ich es: man kann natürlich bspw. Temperaturen vor einem Jahr erst haben, wenn man auch mindestens ein Jahr schon die Daten loggt...
Diese Daten stellen die Stationen nicht zur Verfügung und werden vom WLAN-Skript aus der InfluxDB ermittelt. Nutzt man nun noch bspw. Grafana, braucht man immer eine Datenbank (=InfluxDB).

Welche Datenpunkte muss ich mindestens loggen?

Für derzeit alle Funktionen des Shell-Skriptes müssen zumindest (bei Default-Struktur)

  • 0_userdata.0.Wetterstation.Aussentemperatur
  • 0_userdata.0.Wetterstation.Wind_max
  • 0_userdata.0.Wetterstation.Regen_Tag

per Influx geloggt werden.

Wie sehen die Einstellungen für das Logging idealerweise aus?

Das kommt auf die Art der Daten an. Permanente (z.B. eine Temperatur, die gibt es immer ["0" ist hier schon ein Messwert]) unterscheiden sich von sporadischen (z.B. Regen oder Wind ["0"= keiner; zählt hier nicht als Messwert]) Daten.

Influx Logging

  1. muss zum Einschalten des Loggen aktiviert sein
  2. sollte aktiviert werden, damit nur eine Änderung des Wertes geloggt wird. Es gibt zwar auch Ausnahmen, aber normalerweise braucht man nicht alle 30 Sekunden (=Standardsendeintervall der Stationen) in die Influx zu schreiben dass es nicht regnet
  3. hängt von #2 und dem Messwert ab. Hiermit wird mit der eingestellten Sekundenzahl ein schreiben in die Influx erzwungen. Wenn man also #2 aktiviert hat und einen sporadischen Messwert hat, ergibt es durchaus Sinn gelegentlich mal einen Wert in die Influx schreiben zu lassen. Man kann entstandene Messwertlücken z.B. problemlos in Grafana überbrücken, nur nutzt das irgendwann ev. auch nichts mehr, wenn bspw. der Zeitraum des Graphen 1 Tag beträgt und innerhalb des Tages kein Messwert vorlag. Dann läuft auch in Grafana die Einstellung "previous Wert" ins Leere (man kann halt nichts wiederholen wenn nichts vorliegt). Deswegen empfehle ich bei sporadischen Werten zumindest alle 12 Stunden mal einen Wert in die Influx zu schreiben, also hier 43200 (in Sekunden entspricht 12 Stunden) einzutragen. Bei einer Temperatur wäre dies allerdings kontraproduktiv, da diese wohl weder in der Wüste, noch am Nord-/Südpol 24 Stunden lang auf das Hundertstel Grad konstant bleiben wird (bei aktivierter #2 wird jede Wertänderung aufgezeichnet).
  4. Sollte man korrekt auf den Messwert anpassen. Die Automatik hat schon das ein oder andere mal versagt, was später zu Problemen führen kann. Obige drei Messwerte sind alle vom Typ "Nummer".
  5. bitte nicht nutzen! Es mag zwar nachher in Influx einfacher zu handeln sein, da ich aber schlecht wissen kann wie der Einzelne den Datenpunkt benennt, funktionieren alle Abfragen (auch das Statistik-Addon) nur mit der Default-Datenstruktur! Beispiel: Datenpunkt im ioBroker 0_userdata.0.Wetterstation.Aussentemperatur --> wird auch genau so ohne Verwendung des Alias in Influx angelegt.
    Ihr tragt nun einen Alias ein wie bspw. "Aussentemperatur", "Außentemp", "Temperatur draußen"... --> dann wird er so in Influx angelegt, das Shell-Skript oder Statistik-Addon fragt aber in Influx dann 0_userdata.0.Wetterstation.Aussentemperatur ab, was nicht funktionieren kann...

Kann ich die Influx-Verbindung testen?

Wenn in Aussentemperatur schon geloggt wurde, liefert ein ./wetterstation.sh --influx_test (erst ab V3.1.0 verfügbar) bei bestandener Verbindung auch ein Ergebnis.