InfluxDB2 für Homeassistant

Hallo zusammen,

mein erster Post hier und gleich eine Contribute-Bitte :smiley:

Da es ja Seitens Homeassistant bis jetzt keine offizielle Implementierung für die InfluxDB2 gibt, habe ich mich vor einigen Monaten selber mal daran gemacht und versucht, ein entsprechendes AddOn an den Start zu bekommen.

Über die Ursache, warum es bis jetzt kein offizielles Plugin gibt kann man sicher philosophieren. Ich denke aber, es liegt daran, dass es mit InfluxDB2 nur noch x64 Support gibt und Homeassistant so lange wie möglich ja auch noch x86 Systeme unterstützt hat.

Herausgekommen ist also ein Addon, welches man recht einfach über den AddonStore an den Start bekommt. Aktuell gibt es aber keine Ingress-Unterstützung. D.h es gibt keine Inline-Verwaltung, sondern die Adminoberfläche geht außerhalb des Homeassistant Interfaces.

Installiert werden kann das ganze über das Repository unter:
https://github.com/Dattel/homeassistant-influxdb2

Für die Dokumentation fehlt mir noch die notwendige Lust, bzw. wenn nur ich alleine das Addon nutze, dann macht es wenig Sinn, wenn ich Stundenlang Zeit hier investiere.

Bei mir läuft das Addon auf dem Livesystem parallel zum offiziellen InfluxDB1 Addon. Da die Homeassistant Config aber nur EINE InfluxDB Instanz zulässt, lasse ich alle notwendigen Sensoren, die ich gerne in der InfluxDB2 hätte, über einen NodeRed Flow noch in die InfluxDB2 laufen. Anfangs habe ich einen kompletten Datendump von V1 gemacht und diesen in mein V2 Addon importiert, damit ich einen identischen Datenbestand habe. Wer hier wissen möchte, wie das geht → dann gerne einfach nachfragen.
Alle meine Grafana-Dashboard habe ich in 2 Varianten laufen (InfluxDB1 und InfluxDB2), um hier dann stichprobenhaft Aussagen treffen zu können, dass diese noch identisch aussehen und mir also keine Daten verloren gehen. :smiley:

Würde mich freuen, wenn es mal den einen oder anderen Testkandidaten gibt, oder vielleicht sogar Contributor, dass wir hier die Lücke vielleicht schließen können. Meine Kenntnis über HomeAssistant Addons basiert hier auf Try&Error und dem, was ich bestehenden Addons so entnommen habe.

Bitte beachtet hierbei, dass es sich hier um eine frühe Test-Version handelt, ich weder offiziell noch professionell an diesem Addon arbeite. Wer das Addon im Livesystem einsetzt, sollte sich im Klaren sein, wie im Notfall die Daten gesichert werden.

So das war’s erstmal - würde mich über Feedback freuen…

1 „Gefällt mir“

Hi Dattel die Installation war problemlos. Nachdem ich dann meine Konfiguration entsprechend dieses Homassistan Artikels angepasst habe funktionierte der Zugriff und die Daten einer Entität wurden in der Datenbank abgelegt. Ich möchte Influxdb2 eigentlich verwenden um mehrere Buckets anzulegen, damit ich eine unterschiedliche Rentention konfigurieren kann. Besteht immer noch das hier beschriebene Problem, dass Home Assistant nur einen Bucket unterstützt oder kennst Du einen Workaround?

Hallo @daest,

danke für deine Antwort. Mit meiner Dokumentation bin ich tatsächlich stiefmütterlich. Ich habe da wenig Zeit reingesteckt, da ich ja eigentlich auch hoffe, dass influx2 irgendwann mal in den community-quellen offiziell Einzug findet. Deshalb zielt meine aktuelle Umsetzung eigentlich auch experimentierfreudige Anwender ab, die auch in der Lage wären, bei einen offiziellem Release einer Community-Influx2 Variante ihre Daten zu migrieren. Aber du hast mit der Doku von danieloldberg ja was passendes gefunden :smiley: . Leider scheint er einmal eine Version veröffentlicht zu haben und seit dem passiert da auch nix mehr. Ich versuche ja aktuell als Minimum noch immer die letzten Releases mit einfließen zu lassen.

Ja! Du kannst offiziell mit Homeassistant in der Config nur ein einzelnen INFLUXDB und auch nur ein Bucket angeben - in die wird dann alles geschrieben. Daher lasse ich aus der Config auch weiterhin nur meine alte Influxdb1 beschreiben (sozusagen als Witness-Instanz" für alles was ich nebenher mit der DB2 anstelle). Wenn ich also Mist baue, dann transponiere ich mir den aktuellsten Datenstand aus der DB1 wieder in die DB2 rüber :smiley:

Abgesehen von meinem doppelten Boden sorge ich im Normalfall für die Daten in der InfluxDB2 über NodeRed. Da habe ich dann eine Auswahl an Sensoren, die ihre Werte schreiben.

[Hier sollte eigentlich ein Bild sein, ich darf aber als neuer User max 1. Bild pro Beitrag, wenn Interesse besteht, dann reiche ich das nach]

Da könntest du dann tatsächlich separate Buckets wählen, wenn du magst.

[Hier sollte eigentlich ein Bild sein, ich darf aber als neuer User max 1. Bild pro Beitrag, wenn Interesse besteht, dann reiche ich das nach]

Ich lasse aber alles weiterhin alles in ein Bucket schreiben und generiere mir anschließend 2 separate Retention Policies daraus, bei denen ich die Daten gleichzeitig Downsamplen lasse.

  • Bucket “homeassistant” → hier fließt ALLES rein.
  • Bucket “homeassistant_15” → hier habe ich dann nur noch einen Datenpunkt alle 15 Min
  • Bucket “homeassistant_60” → nur noch einen Datenpunkt alle 60 Min

Die beiden Buckets werden dann automatisch über Tasks befüllt

Hi Dattel,
erst mal vielen Dank für die ausführliche Antwort. Deinen Ansatz mit dem Downsampling schaue ich mir unbedingt mal an. Allerdings finde ich, dass der Ansatz den HomeAssistant verfolgt, nicht gut ist. Ich komme eigentlich aus der Iobroker Welt. Da ist es überhaupt kein Problem mehrere Instanzen vom Influxdb Adapter zu instantiieren. Man muss dann nur einfach entsprechend die Objects/Entitäten konfigurieren, dass deren Daten dann entsprechend auf die Buckets verteilt werden. Das große Manko beim Iobroker ist jedoch die Darstellung in der Vis. Das Responsive Design im HA halte ich für um längen besser. Es gibt ja auch einen Lovelace Adapter für Iobroker, den ich momentan verwende. Der hat aber wiederum auch das selbe Thema, dass er nur eine Influxdb unterstützt.

Letztendlich möchte ich die Daten der unterschiedlichen Buckets ja auch auf dem Dashboard Visualisieren. Ich habe versucht im Iobroker/Lovelace die Apexcharts-card zu verwenden, habe aber über den Datengenerator keine Lösung mit unterschiedlichen Buckets hinbekommen. Ein Grafana Addon unter Iobroker gibt es für Lovelace nicht. Wie sieht dann Deine Lösung aus?

Da bin ich absolut bei dir. Wünschenswert wäre es, wenn man einfach mehrere Influx-Instanzen definieren könnte zu denen man dann unterschiedliche Entitäten konfiguriert. Das ist aber ein Thema, welches schon seit Jahren immer mal wieder in den Influx-Threads auftaucht und seit dem nicht angegangen wird. Deshalb behelfe ich mir ja grade über einen Node-Red Flow um gleichzeitig Influx1 und Influx2 schreiben zu können.

Ich habe Grafana installiert und lasse die Dashboards da ohne Probleme über die unterschiedlichen Buckets aus der Influx2 generieren. Für die Tages/Wochenansichten nutze ich den feingranulierten Bucket (homeassistant) und was über mehrere Monate geht, da nehme ich dann die homeassistant_15m oder homeassistant_60m Buckets.

Was dann natürlich nicht so ohne weiteres geht, ist ein seamless-Zoom von der Jahresansicht hinein in die Minuteneinsicht, weil da dann die Genauigkeit fehlt. Wäre natürlich genial, wenn man ab einer bestimmten Detailstufe automatisch die daten aus einem anderen Bucket nehmen könnte → impliziert aber, dass man einfach alle Daten bis zum Erbrechen in mehreren Buckets hält. Bei mir geht das, weil ich nur ganz selektive Sensoren in die Influx schiebe. Da bin ich nach einem Jahr Stromverbrauchs/Solarmesswerten + paar Temperatursensoren bei knapp 500Mb Daten.

Moin,

ich bin ja noch recht neu in HA und komme auch von ioBroker, aber ich fand es auch dort schon falsch mehrere Instanzen für unterschiedliche Bukets einzurichten, denn die bedeutet ja Mehrbelastung des Grundsystems, habe ich nicht weiter kontrolliert, oder gemessen, ist ein Bauchgefühl.
Im Gegensatz dazu sind die Tasks, die man bei influxDB einrichten kann, vom Ressourcenverbrauch denke ich günstiger, da sie ja nur x Mal am Tag laufen.
Ich habe es mir noch nicht genauer angeschaut, aber mit dem sensor

# Example configuration.yaml entry
sensor:
  - platform: influxdb
    api_version: 2
    organization: RANDOM_16_DIGIT_HEX_ID
    token: GENERATED_AUTH_TOKEN
    queries_flux:
      - group_function: mean
        imports:
          - strings
        name: "Mean humidity reported from past day"
        query: >
          filter(fn: (r) => r._field == "value" and r.domain == "sensor" and strings.containsStr(v: r.entity_id, substr: "humidity"))
          |> keep(columns: ["_value"])
        range_start: "-1d"

auch auf die zusätzlichen Buckets in einer influxDB Installation zugreifen kann.

Jetzt ist halt nur die Frage, was will man haben, ich stehe auf dem Standpunkt, dass ich 30 Tage die volle Auflösung haben möchte, danach vielleicht noch 2-3 Monate eine Auflösung von 60 Minuten, dann nach drei Monaten ist mir eine Auflösung von 1 Tag genug.

Das mal meine 5 Cent zu dem Thema :slight_smile:

VG
Bernd

Na wenn ich von vornherein schon weiß, dass ich von bestimmten Daten nur Interesse an z.b. den letzten 4 Wochen habe, warum sollen die Daten dann nicht direkt in ein entsprechenden Bucket laufen.

Ich gebe zu, dass ich die Influx-Tasks (oder ehemals bei influx 1.7 die ContinousQuerys) nicht nutze um damit Retentions umzusetzen, sondern um ein Downsampling hinzubekommen. Ansonsten kann ich es mir platztechnisch aktuell leisten, einfach alles aufzuheben.

Moin,

ich mache genau das, zum einen unterschiedliche Retention für die Buckets und gleichzeitig down sample der Daten, bzw. auch Daten z.B. Strom in ein eigenes Bucket zu verschieben. Ich mache meine Auswertungen aber eher in Grafana, und weniger in HA.

VG
Bernd

1 „Gefällt mir“

Hi Dattel,
ich schreibe Dir noch mal bezüglich eines multiple bucket supports. Wenn man auf influx Datenbanken zugreifen will, wird in der Regel sicher der standard Adapter aus dem Home Assistant core (homeassistant/components/influxdb/sensor.py) verwendet werden. Da geht es leider überhaupt nicht weiter bzgl einer Unterstützung mehrerer Buckets oder verschiedener Datenbanken. Hast Du an dieser Stelle eventuell ein Update?

Hi, nein überhaupt nicht… die offizielle Influx Implementierung von Homeassistant befüllt auch weiterhin nur meine Influx 1.x DB. Die Daten für Influx2 werden auch weiterhin bei mir über NodeRed befüllt. Hab auch bis heute nie den kompletten Wechsel auf Influx2 vollzogen.

Mit scheint, dass der Wunsch, Langzeitdaten aus Homeassistant längerfristig zu persistieren nicht all zu verbreitet ist. Grade seitdem die interne History (z.B. für die Stromdaten) redesigned wurde, fehlt vielleicht bei vielen die Notwendigkeit, da ein separates Addon zu installieren und zu konfigurieren.

Moin,

meiner Meinung nach ist das auch kein Thema in HA, sondern das erledigt man in InfluxDB!
Angenommen Du hast mehrere Datenlieferanten, die könnten alle in dasselbe Bucket, bzw. in dieselbe Datenbank schreiben, auf dem Bucket, der Datenbank laufen dann Tasks, die die Daten lesen, z. B. Strom und die dann in ein eigenes Bucket, eigene Datenbank schreiben, der Datenlieferant muss nicht wissen, dass es mehrere Buckets, Datenbanken gibt!
Nutzt man dann Grafana, bindet man dann halt verschiedene Datasources an.

Für InfluxDb <= V 1.8, heißt das continius queries und in InfluxDB > V 2.x heißt es tasks

VG
Bernd

da bin ich inhaltlich bei dir… Ist für mich auch nicht das Thema - meine Retentions werden genau so umgesetzt… Mich hindert es einfach, dass man nur eine INFLUX-DB anbinden kann. Mehrere Instanzen gehen halt einfach nicht. Ich hätte z.B gerne aktuell Influx und Influx2 angebunden. Andere vielleicht influx und victorianmetrics… geht aber nicht gleichzeitig, weil es die selbe Konfig ist.

Moin,

Sicher, dass das nicht geht?
Für die Installation als Add-on, kann ich nichts zu sagen, nutze ich nicht, bei mir läuft InfluxDB als LXC unter Proxmox.

Ich kann mir aber gut vorstellen, dass wenn man die Konfiguration nicht in der HA configuration.yaml macht, sondern über include in verschiedene Dateien, das auch klappen könnte.
Ich versuche das heute mal.

VG
Bernd

P.S.: die Sinnhaftigkeit, fehlt mir aber trotzdem :thinking: , ich habe damals alles von V 1.8 hinzu V 2.7 migriert.

Mein Use Case ist einfach, dass ich mehrere Datenbanken oder auch verschiedene Buckets einbinden möchte. Klar kann man den Weg über das downsampling gehen um in verschiedenen Buckets unterschiedliche Retentions zu erreichen. Das meine ich gar nicht.
Eigentlich möchte ich gar nicht Grafana zur Darstellung von Daten verwenden, sondern Apexcharts. Das lässt sich viel besser einbinden. Das geschickteste wäre für mich ein Influxdb2 interface zu einem Sensor, den ich dann per Apexchart anzeigen kann.

Moin,

das ist ja etwas ganz anderes :slight_smile:
Dann solltest Du Dir die Dokumentation zur Installation von InfluxDB anschauen

Da dann unter dem Punkt Sensors

The influxdb sensor allows you to use values from an InfluxDB database to populate a sensor state. This can be used to present statistics as Home Assistant sensors, if used with the influxdb history integration. It can also be used with an external data source.

Was mich dann aber auch zu der Frage führt, warum setzt Du dann überhaupt auf InfluxDB?
Du kannst doch die Statistikdaten aus der Standarddatenbank nutzen.

VG
Bernd

Moin,

Ich zitiere mich mal selbst, ich habe etwas herumgespielt, aus HA heraus habe ich es nicht geschafft.
Auch wenn ich versucht habe victoriametrics, als Prometheus Endpunkt anzugeben.

Also doch auf eine Lösung seitens HA warten.

VG
Bernd

Das InfluxDB Interface das Du verlinkt hast verwende ich ja auch. Das ist aber leidlich unflexibel, da es nur einen Bucket in einer Datenbank verwalten kann. Das ist ja genau mein Schmerz…

Warum ich Influx verwende?

  • Clustern von Daten in Buckets
  • Retention per bucket
  • Die Standard history in HA ist unflexibel und kann meines Wissens nach nur 30 Tage sichern.

Um mal einige zu nennen. Es gibt sicher noch 1000 andere Gründe. Leider gibt es halt kein gescheites Interface

Genau da geht es halt nicht weiter…

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Moin,

das ist ein Missverständnis, Historie ist schon korrekt, wenn nicht anders eingestellt, dann werden da Daten nur für 10 Tage behalten, Historie ist aber auch nur der Teil für Kurzzeitdaten in voller Auflösung, wenn die x Tage abgelaufen sind, dann werden Daten wie Schalter on/off ganz gelöscht, aber Daten wie kWh, W und einiges andere werden aggregiert und in die Langzeittabellen = Statistiktabellen abgespeichert, das sieht man dann auch


(1) das war die Zeit, in der HA einige Probleme mit der internen Datenbank hatte
(2) das ist die Historie, mit voller Auflösung
(3) das sind die Statistikdaten

Ich habe an der Einstellung nichts geändert, also nach 10 Tagen wird Aggregiert
Hier noch mal eine Übersicht, wo man sieht wie die daten von History zu Statistik werden

VG
Bernd

@Dattel Ich bin auch gerade dabei eine 2. InfluxDB (v2) zu befüllen. Der Weg über NodeRed klingt vielversprechend. Allerdings tute ich mich etwas schwer damit. Was ist dein Auslöser (event-state-change ?) und formatierst du die Werte vorher nochmal um? In welcher Form schreibst du die measurements und wie kann ich die Einheit (°C etc.) auch weiterreichen an InfluxDB?

Ich bin grad nicht in der Lage, dir da was zu schicken. Bin ab Sonntag wieder im Lande, dann kann ich dazu was posten

1 „Gefällt mir“