Influx Datenbank editieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Influx Datenbank editieren

Beitrag von OliverCJ »

Hallo zusammen,

irgendwie habe ich das Gefühl, ich hätte in der Vergangenheit schon mal was dazu gelesen, finde aber nichts :-(

Ich würde gerne in der InfluxDB ein paar Werte manuell ändern bzw ergänzen. Sie fehlen, weil influx ein paar Tage nicht richtig lief. Ich habe die Werte aber und würde sie gerne nachtragen... geht das?
Es ist ein Wert, der nur 1x täglich geschrieben wird, von daher wäre es für 3 oder 4 Tage auch kein sehr großer Aufwand...

Danke!

VG, Oliver

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Influx Datenbank editieren

Beitrag von peter-pan »

Hallo Oliver,
auf die Schnelle kann ich dir nur diese Internetseite bieten. Da ich aber gerade selber mit einer influxDB "herumspiele", werde ich mal etwas probieren und falls was dabei herauskommt, geb ich wieder Bescheid.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Influx Datenbank editieren

Beitrag von sihui »

OliverCJ hat geschrieben: 25. Okt 2021 13:19 geht das?
Ja, ist aber ein unbequemer Weg und die Vorgehensweise hängt von deiner influx Version ab:

1.x:

Code: Alles auswählen

influx //ruft die CLI auf
use openhab_db //Datenbank auswählen
INSERT Temperature value=-2.0 1581484218000000 //minus 2 Grad für das Item "Temperature" am 12.02.2020 eintragen, Datum muss in Nanosekunden sein (einfach die verfügbaren Millisekunden Onlinerechner nehmen und drei Nullen anhängen)
2.x:
Konfiguration speichern und aktiv machen:

Code: Alles auswählen

influx config create --config-name openhab \
  --host-url http://localhost:8086 \
  --org openHAB \
  --token Y_jlsdjfajsdf0as8f0as8f0wejrasjflasjflksjd03ww0402394pskfsdjfjsf== \  //Ist ein Fake Token
  --active
Dann direkt in der Shell für den gleichen Vorgang wie oben folgendes eingeben (auf die drei Zeilen verteilt):

Code: Alles auswählen

influx write --bucket openhab_db "
Temperature,category=n/a,item=Temperature,label=n/a,type=Number value=-2.0 1581484218000000000
"
Wichtig ist hierbei, dass man alle vorhandenen Datenfelder auch ausfüllt, notfalls mit n/a falls leer.

Die jeweils korrekten Datenbankbezeichnungen/Itemnamen/Bucket-Namen/Token etc musst du natürlich durch deine eigenen ersetzen.
Nähere Infos und genauere Beschreibungen bekommt man auf den Hilfeseiten von influx.
Zuletzt geändert von sihui am 26. Okt 2021 07:26, insgesamt 1-mal geändert.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Influx Datenbank editieren

Beitrag von peter-pan »

Ich muss auch gleich vorweg schicken, dass ich mich bisher noch nie mit den Datenbank-Optionen in opeHAB bzw. mit Datenbanken als solches beschäftigt habe. Aber ich habe OH3 jetzt auf einer alten SCSI-Platte (1TB) installiert und da müssen natürlich auch Daten drauf :lol: :lol:

Also ich hab das mal bei mir versucht. Ich habe eine Influx-DB Version 1.8.10 installiert und habe mit dem "curl"-Kommando experimentiert.

Das Datum für die Nanosekunden habe ich über den Internet-Converter "Unix Time Stamp" ermittelt und soweit ich das verstanden habe wird dieser Zeitstempel in Sekunden angegeben. Deshalb müsste man noch 9 Nullen für die Nanosekunden anhängen
Beispiel: 01.01.1999 Uhrzeit 15:00 Uhr
Umgerechnet lt. Time-Converter : 915199200 # Sekunden
als Nanosekunden : 915199200000000000 # Sekunden + 9 Nullen

Der curl-Befehl:
Die Eingabe erfolgt ganz normal über die Shell-Konsole (Putty)

Beispiel 1:
measurement = socket_07_Spannung, item = socket_07_Spannung, value = 15.4
Hier ist measurement und item die selbe Messgrösse/Messeinheit der Messwert (value) ist 15.4 - 915199200000000000 ist die Zeit in Nano-Sekunden (1.1.1999 - 15:00 Uhr MEZ)

Code: Alles auswählen

curl -i -XPOST "http://localhost:8086/write?db=openhab&u=DB_user&p=DB_Password" --data-binary 'socket_07_Spannung,item=socket_07_Spannung value=15.4 915199200000000000'
Beispiel 2:
measurement = temperature, item = esp_32_01_temp, floor = gEG_Kind2, value = 15.4
Hier ist measurement "temperature" für eine Gruppe von Messsesoren,item das Messgerät/Name (Tag-Key), floor ist ebenfalls ein Tag-Key zur Erweiterung(Achtung die Tag-Keys, wenn mehrere vorhanden, sind durch Komma getrennt). Value ist der Field-Key also der Messwert selbst (21.3)

Code: Alles auswählen

curl -i -XPOST "http://localhost:8086/write?db=openhab&u=DB_user&p=DB_Password" --data-binary 'temperature,item=esp_32_01_temp,floor=gEG_Kind2 value=21.3  1635174000000000000'

Das Ergebnis aus der Datenbank sieht dann so aus:
zu Beispiel 1

Code: Alles auswählen

> select * from socket_07_Spannung
name: socket_07_Spannung
time               item               value
----               ----               -----
915199200000000000 socket_07_Spannung 15.4
zu Beispiel 2

Code: Alles auswählen

> select * from temperature where item = 'esp_32_01_temp'
name: temperature
time                floor     item           value
----                -----     ----           -----
1635174000000000000 gEG_Kind2 esp_32_01_temp 21.3
>
Was hier für dich passt(oder auch nicht) hängt natürlich auch damit zusammen, wie du deine Items angelegt (und getagged) hast.

Ein Beispiel aus meinem SetUp (old-School -> Text-File)

Code: Alles auswählen

Number esp_32_02_temp "ESP32-02 DHT11 Temperatur[%.1f °C]"       <temperature> (gESP32_02,gRtIstI) ["Temperature","Measurement"] { channel="mqtt:topic:vera:esp3202:temp", influxdb="temperature" [floor="gUG_Keller"]}               
Number esp_32_02_hum  "ESP32-02 DHT11 Luftfeuchtigkeit[%.1f %%]" <humidity>    (gESP32_02)         ["Humidity", "Measurement"]   { channel="mqtt:topic:vera:esp3202:hum", influxdb="humidity" [floor="gUG_Keller"]}
Vielleicht hilft's ja. Ich habe jedenfalls einiges dazu gelernt und mach jetzt meine Hausaufgaben mit den Tipps von @sihui
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Influx Datenbank editieren

Beitrag von OliverCJ »

Super, vielen lieben Dank schon mal euch beiden!
Ich werde mir das mal in einer ruhigen Minute zur Gemüte führen und berichten...

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Influx Datenbank editieren

Beitrag von OliverCJ »

Also, das klappt super. Habe jetzt die paar Werte nachtragen können und zwar nach dem Beispiel von sihui zur influx Version 1.x
DANKE!

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Influx Datenbank editieren

Beitrag von OliverCJ »

Mir ist gerade noch etwas aufgefallen. Die manuell ergänzten Werte scheinen ohne den Item-Namen gespeichert zu werden:

Code: Alles auswählen

> select * from GL_Corona_Inzidenz order by time desc Limit 20
name: GL_Corona_Inzidenz
time                            item                       value
----                              ----                         -----
1635130800000000000                                50.1
1635044400000000000                                50.8
1634958000000000000                                45.2
1634871600000000000                                41.7
1634788800795000000 GL_Corona_Inzidenz 37.772484
1634698800000000000                                31.8
1634612400000000000                                32.5
1634526000000000000                                31.8
1634439600000000000                                32.5
1634353200000000000                                27.9
1634266800000000000                                27.9
1634191215565000000 GL_Corona_Inzidenz 27.182066
1634090408062000000 GL_Corona_Inzidenz 28.241108
1634007608693000000 GL_Corona_Inzidenz 26.123026
1633834808516000000 GL_Corona_Inzidenz 28.594122
1633748415693000000 GL_Corona_Inzidenz 27.888094
1633658411127000000 GL_Corona_Inzidenz 25.770012
1633572015685000000 GL_Corona_Inzidenz 22.9459
1633485600479000000 GL_Corona_Inzidenz 16.238638
1633399200470000000 GL_Corona_Inzidenz 20.827818
Alle Werte, bei denen man keinen Itemnamen sieht, habe ich über INSERT GL_Corona_Inzidenz value=50.1000 1635130800000000000 eingefügt, also durchaus inkl. dem Itemnamen...

Wobei, wenn ich anschließend in Grafana den Graphen aktualisiere, dann wird mit der sauber angezeigt...

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Influx Datenbank editieren

Beitrag von peter-pan »

Das ist soweit auch korrekt, da das "measurement" ja "GL_Corona_Inzidenz" ist und das wird dir auch am am Anfang (Nach dem "select) hinter "name"

Code: Alles auswählen

> select * from GL_Corona_Inzidenz order by time desc Limit 20
name: GL_Corona_Inzidenz
angezeigt.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Influx Datenbank editieren

Beitrag von OliverCJ »

Ja schon, aber die Werte, die automatisch geschrieben wurden (durch everyChange) enthalten den Itemnamen... im Grunde stört es mich ja nicht, da der Graph richtig dargestellt wird und ich eher selten auf die DB schaue... war mir jetzt in dem Zug halt nur aufgefallen...

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Influx Datenbank editieren

Beitrag von peter-pan »

Ich habe das mit "insert" noch nicht ausprobiert, aber in den Beispielen, die ich mit "curl" gemacht habe, habe ich auch immer mit dem Tag "item=xxx" gearbeitet.

Ich vermute mal, dass in OH bzw. im Add-On, automatisch der Item-Name als "measurement" und ebenfalls der Tag "item", wenn nichts anderes angegeben.
Ich habe als Key in einem meiner Beispiele(.items), das Key-Word "temperature" gewählt und zusätzlich noch einen Tag "floor". Ich vermute mal, dass OH dann automatisch den Tag "item" mit dem Item-Namen belegt.

Es gibt ja dazu in der OH-Doku auch den Hinweis.

Ich werde es auf jeden Fall mal nachher testen und geb dann wieder Bescheid, falls du's nicht schon vorher herausgefunden hast ;-)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten