NEWS
Influxdb: Differenz zwischen measurements
-
Hi,
ich habe zwei Stromzähler (Haushaltsstrom und Wärmepumpenstrom) und bekomme alle 30 Sekunden den aktuellen Stromverbrauch per MQTT am iobroker und speichere das dann in einer Influxdb. Das sieht dann so aus (beim anderen Zähler heißt es dann "...chn1..."):table _measurement _field _value _start _stop _time 0 mqtt.0.vzlogger.data.chn0.agg value -1770.55018 2024-01-09T10:08:17.945Z 2024-01-09T11:08:17.945Z 2024-01-09T10:08:50.000Z
Das Problem ist, dass der Zähler "chn1" den gesamten Stromverbrauch anzeigt (also WP plus HH). Wenn ich also wissen möchte, wieviel meine Wärmepumpe verbraucht, muss ich die Differenz aus Werten von zwei Measurements (mqtt.0.vzlogger.data.chn1.agg und mqtt.0.vzlogger.data.chn0.agg) berechnen. Wie mache ich das? Die "_time"-Werte sind ja nicht genau die gleichen. Evtl. kann ich da mit Aggregationen arbeiten, ein Wert pro x Minuten würde mir ja reichen (besser 30 Sekunden, dann haben alle den gleichen Detailgrad).
Besten Dank! -
@nicknick sagte in Influxdb: Differenz zwischen measurements:
Die "_time"-Werte sind ja nicht genau die gleichen.
Über aggregateWindow und dann eine Pivot-Funktion wäre am einfachsten. Dann hast Du beide Werte in einer Tabelle und kannst damit rechnen.
-
@haus-automatisierung
Danke Dir! Kannst Du das mit der Pivot-Funktion etwas erläutern? Wie kann ich das am besten als neues Measurement speichern? -
@nicknick sagte in Influxdb: Differenz zwischen measurements:
Kannst Du das mit der Pivot-Funktion etwas erläutern
Jau:
-
Falls sich jemand dieselbe Frage stellt, ich fand es einfacher, Blockly-Skripte zu schreiben als das in der InfluxDB zu machen. Ich habe also einen neuen Zustand in den IOBroker-Objekten erzeugt, der alle 30 Sekunden aus den bestehenden MQTT-Daten gefütterrt wird. Das kann ich ja dann in der DB verwenden.
-
@nicknick Das funktioniert für die Zukunft - aber wenn man jetzt schon Monate oder Jahre die Daten gesammelt hat (und sie nutzen möchte), hilft das ja recht wenig.
-
@haus-automatisierung
Bis jetzt habe ich dafür immer die Funktion spread benutz und bin damit auch ganz zufrieden.
Aber jetzt sind Probleme aufgetaucht wenn ich neue Datenpunkte aufnehme und dann in die Vergangenheit gehe(wo es den Datenpunkt noch nicht gibt) kommt logischerweise ein Fehler im Log. Kann man das irgendwie umgehen ?