Hi,
ich hoffe ich schreibe hier im richtigen Forenabschnitt.
Folgendes Problem habe ich. Der InfluxDB Adapter schreibt den letzten Wert von einem Datenpunkt in die Datenbank auch wenn der längst übertragen wurde. Dies tritt bei jedem gelogten Datenpunkt auf wenn ioBroker neu startet, der InfluxDB Adapter neu startet oder die Konfiguration von einem gelogten Datenpunkt gespeichert wird.
Besonders Problematisch ist das bei Datenpunkten die nur sehr selten geschrieben werden und z.B. als Säule in Flot dargestellt werden. Eine Deltaprüfung (z.B. 0.00001) hilft da anscheinend auch nicht.
Folgenden Datenpunkt kann ich als Beispiel geben.
{
"from": "system.adapter.admin.0",
"user": "system.user.admin",
"ts": 1604927567240,
"common": {
"name": "Hausanschluss.Zähler Haus.kWh je Tag",
"role": "value",
"type": "number",
"desc": "Manuell erzeugt",
"unit": "kWh",
"min": 0,
"def": 0,
"read": true,
"write": true,
"custom": {
"influxdb.0": {
"enabled": true,
"changesOnly": true,
"debounce": "10",
"retention": 0,
"changesRelogInterval": 0,
"changesMinDelta": 0.0001,
"storageType": "",
"aliasId": ""
}
}
},
"native": {},
"acl": {
"object": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator",
"state": 1636
},
"_id": "0_userdata.0.Hausanschluss.Zähler_Haus.kWh_je_Tag",
"type": "state"
}
Debuglog wenn der Datenpunkt gespeichert wird.
influxdb.0 2020-12-21 22:37:26.042 debug (6265) Datatype 0_userdata.0.Hausanschluss.Zähler_Haus.kWh_je_Tag: Currently: number, StorageType: false
falseinfluxdb.0 2020-12-21 22:37:26.042 debug (6265) timed-relog 0_userdata.0.Hausanschluss.Zähler_Haus.kWh_je_Tag, value=8.956199999999967, lastLogTime=undefined, ts=1608586646042
falseinfluxdb.0 2020-12-21 22:37:26.042 info (6265) enabled logging of 0_userdata.0.Hausanschluss.Zähler_Haus.kWh_je_Tag, Alias=false
falseinfluxdb.0 2020-12-21 22:37:19.798 debug (6265) SELECT * from "0_userdata.0.Hausanschluss.Zähler_Haus.kWh_je_Tag" WHERE time < '2020-12-21T21:37:30.849Z' ORDER BY time DESC LIMIT 50;SELECT value from "0_userdata.0.Hausanschluss.Zähler_Haus.
falseinfluxdb.0 2020-12-21 22:37:19.478 debug (6265) SELECT * from "0_userdata.0.Hausanschluss.Zähler_Haus.kWh_je_Tag" WHERE time < '2020-12-21T21:37:30.528Z' ORDER BY time DESC LIMIT 50;SELECT value from "0_userdata.0.Hausanschluss.Zähler_Haus.
Ergebnis in der InfluxDB. Alle Werte mit "system.adapter.influxdb.0" wurden in einem der oben genannten Fälle geschrieben. "system.adapter.influxdb.0" wird aber auch verwendet wenn "changesRelogInterval" größer 0 ist (was hier aber nicht der Fall ist).
time ack from q value
1608508800007 true system.adapter.javascript.0 0 8.956199999999967
1608512621946 true system.adapter.influxdb.0 0 8.956199999999967
1608568536048 true system.adapter.influxdb.0 0 8.956199999999967
1608569242905 true system.adapter.influxdb.0 0 8.956199999999967
1608569400896 true system.adapter.influxdb.0 0 8.956199999999967
1608569521072 true system.adapter.influxdb.0 0 8.956199999999967
1608581637265 true system.adapter.influxdb.0 0 8.956199999999967
1608583155224 true system.adapter.influxdb.0 0 8.956199999999967
1608585570880 true system.adapter.influxdb.0 0 8.956199999999967
1608585741436 true system.adapter.influxdb.0 0 8.956199999999967
1608586393735 true system.adapter.influxdb.0 0 8.956199999999967
Meine Vermutung ist das "lastLogTime=undefined" das Problem ist weswegen er die alten Werte schreibt. Frage ich den Datenpunkt mit einem Blockly die letzte Änderung ab hat der Punkt aber einen Zeitstempel.
Weiter komme ich leider in der Fehleranalyse ohne Hilfe nicht und ein manuelles Löschen der Werte in der InfluxDB ist auf dauer auch keine Lösung.