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
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