openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
iTob
Beiträge: 44
Registriert: 8. Mär 2020 19:58
Answers: 0

openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von iTob »

Hallo,

ich habe bei meinem Openhab Updates von der 2 schrittweise bis zur 5 vorgenommen.
Durch irgend eines der Updates schreibt Openhab in influxdb zu Zeit und value noch die Spalte item dazu mit der Bezeichnung des items. Das entspricht aber immer genau der Bezeichung des messurement - ist also völlig überflüssig.
Das ist mir erst jetzt aufgefallen, nachdem ich influxdb von 1.8 nach 2.7 geupdatet habe. Nun muss ich die Verbindung von Grafana zur influxdb neu konfigurieren und da zeigt sich plötzlich ein Unterschied, ob die zusätzliche Spalte item einen Wert enthält oder nicht.

Warum und seit wann gibt es diese Änderung und kann ich diese Spalte unterdrücken?

Ich verwende folgende Einträge in der influxdb.persist:

Code: Alles auswählen

Strategies
{
    everyMinute : "0 * * * * ?"
    every10Minutes : "0 */10 * * * ?"
    everyHour : "0 0 * * * ?"
    everyDay : "0 0 0 * * ?"
    default = everyChange
}
Items
{
    hz_mqtt_aussentemp  : strategy = every10Minutes
    
    ...
}
    
und neuerdings steht in der influxdb:

Code: Alles auswählen

select * from  hz_mqtt_aussentemp WHERE time > now() - 1h
name: hz_mqtt_aussentemp
time                item               value
----                ----               -----
1756831200340000000 hz_mqtt_aussentemp 16.8
VG

Tokamak
Beiträge: 195
Registriert: 20. Aug 2019 08:37
Answers: 5
Wohnort: Aachen

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von Tokamak »

Es handelt sich bei "item" nur um einen Tag, nicht wie bei "value" um ein Field, verbraucht also nur unwesentlich Speicherplatz.
Dass sich da was geändert hat, ist mir neu. Ich kenne es nicht anders, nutze aber die InfluxDB erst seit OH 3.4, wenn ich mich recht entsinne.

Tags werden genutzt, um unterschiedliche sogenannte "Series" innerhalb eines "Measurements" zu unterscheiden.

Den Namen des Measurements als auch die Tags kannst du in der Item-Konfiguration angeben (s. https://www.openhab.org/addons/persistence/influxdb/). Du kannst auch mehrere Tags angeben. Damit könntest du zum Beispiel alle Temperaturen, die du misst, unter einerm Measurement "Temperatur" zusammenfassen und etwa die Räume durch Tags unterscheiden.

Tust du das nicht, ist standardmäßig der Name des Measurments gleich dem Itemnamen, und es wird zusätzlich ein Tag "item" hinzugefügt, das auch den Itemnamen enthält.

Wie gesagt, der Speicherverbrauch ist vernachlässigbar.
Proxmox mit OH 4.3 und HABApp 25 im LXC-Container

iTob
Beiträge: 44
Registriert: 8. Mär 2020 19:58
Answers: 0

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von iTob »

Danke,
mein item ist aktuell folgendermaßen definiert:

Code: Alles auswählen

Number hz_mqtt_aussentemp "Aussentemperatur [%.1f °C]" <temperature> {channel="mqtt:topic:MQTTBrokerBSB:bsblan:aussentemp"}
openhab2 hat das item-tag noch nicht in influxdb geschrieben. So habe ich nun zwei verschiedene tag-Einträge je measurement in der influxdb.

Kann ich mit einem Befehl in der influxdb in einem messurement jedem Eintrag den gleichen Tag zuweisen damit die alten Daten genau so aussehen, wie die neuen?

Ändere ich das item auf:

Code: Alles auswählen

Number hz_mqtt_aussentemp "Aussentemperatur [%.1f °C]" <temperature> {channel="mqtt:topic:MQTTBrokerBSB:bsblan:aussentemp", influxdb="temperatur"]}
dann schreibt er in temperatur und speichert das item dazu als tag. Das wäre in Zukunft eine mögliche Umstellung.

Tokamak
Beiträge: 195
Registriert: 20. Aug 2019 08:37
Answers: 5
Wohnort: Aachen

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von Tokamak »

iTob hat geschrieben: 3. Sep 2025 16:28 Kann ich mit einem Befehl in der influxdb in einem messurement jedem Eintrag den gleichen Tag zuweisen damit die alten Daten genau so aussehen, wie die neuen?
Warum solltest du das tun wollen? Das Measurement ist dasselbe. Es sind nur zwei Serien (mit und ohne Tag). Ich vermute, dass du aus openHAB heraus auch auf die alten Daten zugreifenn kannst, wenn du das willst.

Und ein "select value from hz_mqtt_aussentemp" wird dir alte wie neue Daten liefern.

Ansonsten könnte folgendes gehen (nicht ausprobiert).
  1. Sichere alte Daten ohne Tag in ein anderes Measurement: select * into temp from hz_mqtt_aussentemp where item is null
  2. Lösche alte Daten ohne item: delete from hz_mqtt_aussentemp where item is null
  3. Füge erneut ein (sollte automatisch das item - Tag hinzufügen): select * into hz_mqtt_aussentemp from temp
  4. Lösche temp: delete from temp
Ohne Gewähr. Speziell bei Schritt 3 bin ich mir nicht sicher.

Anfangs hatte ich Anpassung der Measurement- und Tag-Namen per Konfguration gearbeitet, aber dann keinen Vorteil gesehen. Inzwischen lasse ich die Quelldaten unverändert und erstelle neue Measurements nach Bedarf.
Proxmox mit OH 4.3 und HABApp 25 im LXC-Container

Benutzeravatar
udo1toni
Beiträge: 15348
Registriert: 11. Apr 2018 18:05
Answers: 247
Wohnort: Darmstadt

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von udo1toni »

My 2 Cents:

Tags in InfluxDB sind lediglich für InfluxDB "wichtig", in dem Sinne, dass man sie dort nutzen kann. Natürlich kann man auch z.B. über Grafana entsprechende Funktionen verwenden.
Für openHAB spielen die Tags zumindest bisher hingegen keine Rolle, sie werden also lediglich gesetzt, nicht aber genutzt.

Tags sind eine spezielle Funktion in InfluxDB, vermutlich gibt es auch noch andere Datenbanken, die so etwas können, viele andere aber können das nicht. openHAB verwendet gewöhnlich nur Grundfunktionen der Datenbanken, also Datensatz anlegen und Datensatz auslesen, eine einfache Abfrage (Datensätze innerhalb eines Zeitraums, Summe, Min/Max usw.), aber keinesfalls Spezialfunktionen, da die Bindings möglichst universell sein sollen.

Die Tags zu schreiben ist ok, weil sie "ehda" sind, so können nachgelagerte Systeme sie nutzen.
Viel Energie zur Konsolidierung der Daten würde ich aber nicht investieren, gewöhnlich werden die Daten ja nach einem Jahr gelöscht (default retention policy)

Das Tag wird aktiv von openHAB gesetzt, insofern denke ich, dass beim Zurückschreiben der Daten in die "Originalspalte" das Tag auch mit angegeben werden muss. Da müsste man in der Doku von InfluxDB nachschauen, wie das geht.
Eine erste Recherche "auf die Schnelle" liefert hier https://stackoverflow.com/questions/451 ... n-influxdb die Info, dass die Datensätze einzeln geschrieben werden müssen.
Es gibt wohl auch ein Tool (InfluxDB Fetcher mit dem man Datensätze im Line Protocol Format exportieren kann. Damit kann man dann das Tag per Text Editor ergänzen ("ersetze Zeilenumbruch mit tag=blah Zeilenumbruch") und die Daten anschließend über die UI neu importieren. Ist zwar nicht sonderlich elegant, aber vielleicht die einfachste semimanuelle Variante.
openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

iTob
Beiträge: 44
Registriert: 8. Mär 2020 19:58
Answers: 0

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von iTob »

Ich nutze aktuell noch mein openhab 2.5.12 mit influx1.8 und grafana 11.4.

Nun habe ich parallel dazu im Docker der Reihe nach die Updates gemacht. Vermutlich seit openhab3 schreibt er die Tags mit.
Aufgefallen ist mir das erst nach dem Update von influx auf die 2.7. Ich musste Grfana von InfluxQL auf Flux umstellen und nun zeigt er die Daten mit und ohne tag als zwei getrennte Reihen an. Ist kein Riesen Drama - aber ich möchte es eben gern verstehen und vieleicht anpassen.

Eine "alte shell" kann ich unter influxdb2 noch mit

Code: Alles auswählen

 influx v1 shell
starten. Dort funktioniert zwar noch ein

Code: Alles auswählen

select
, aber ein funktioniert nicht mhr.

Nun muss ich mich wohl erst mal mit Flux befassen, um die Daten zu "manipulieren".

Oder ich erledige das noch in influxdb1.8
Dort funktioniert:
  1. select * into temp from hz_mqtt_aussentemp where item = ''
  2. delete from hz_mqtt_aussentemp where item = ''
  3. select * into hz_mqtt_aussentemp from temp
da wird aber der Tag nicht hinzugefügt.
und Löschen der zwischengespeicherten Daten geht dann am Besten mit:
  • drop measurements temp
Mal sehen, ob ich dazu noch eine Anleitung finde, wie ich beim Umschreiben der Werte einen bestimmten Tag hinzugügen kann...

Tokamak
Beiträge: 195
Registriert: 20. Aug 2019 08:37
Answers: 5
Wohnort: Aachen

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von Tokamak »

Warum willst du überhaupt was ändern? Ästethik? Technisch hat es keinen Nutzen.

Ich würde es so lassen, wie es ist.

iTob hat geschrieben: Gestern 21:31 Mal sehen, ob ich dazu noch eine Anleitung finde, wie ich beim Umschreiben der Werte einen bestimmten Tag hinzugügen kann...
Wenn der Tag mit "select into" nicht hinzugefügt wird, musst du die Points über insert einfügen. Es gibt ein besonderes Format, line protocol genannt, mit dem das zu bewerkstelligen ist.
Allerdings muss du, um das zu tun, wie von Udo beschrieben Code schreiben müssen.
Proxmox mit OH 4.3 und HABApp 25 im LXC-Container

nw378
Beiträge: 324
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: openhab schreibt neuerdings eine zusätzliche Spalte in die influxdb

Beitrag von nw378 »

Man könnte das wahrscheinlich auch über Tasks in der Influxdb WebUI anpassen.

https://docs.influxdata.com/influxdb/v2 ... t-started/

Aber einfacher wär sicherlich, die Abfrage der Daten in Grafana (die Filter) entsprechend anzupassen.

Thema "into". Es funktionieren einige InfluxQL Befehle in Influx 2 nicht mehr, hier eine Auflistung:

https://docs.influxdata.com/influxdb/v2 ... ql-support
openHAB 5.0.1 @ RPi 5 / M.2 SSD - InfluxDB2 und Grafana @ Synology Docker - KNX, Viessmann vcontrol, u.v.m.

Antworten