NEWS
UNSOLVED Influx-DB: Summierte true-Zeiten über Zeitraum
-
Servus Beisammen,
folgende Tabelle:
Wert Ack Quelle Zeit false true influxdb.0 2019-11-13 18:13:28.108 true false javascript.0 2019-11-13 18:13:55.834 true true fhem.0 2019-11-13 18:13:55.873 true true fhem.0 2019-11-13 18:13:56.180 false false javascript.0 2019-11-13 18:14:04.290 false true fhem.0 2019-11-13 18:14:04.336 false true fhem.0 2019-11-13 18:14:04.654 true false javascript.0 2019-11-13 18:23:40.851 true true fhem.0 2019-11-13 18:23:40.889 true true fhem.0 2019-11-13 18:23:41.228
Ich würde nun gerne wissen, wie lang innerhalb eines Bestimmten Zeitraumes der Wert True war. (Also z.B. wie lang war die Lampe diesen Tag an?)
Krieg ich das so raus?
Ich müsste ja quasi die Tabelle durchlaufen, wenn der Wert "true" ist den Timestamp merken, und beim nächsten false von diesem Timestamp den gemerkten Abziehen.
Von diesen Werten Wiederum eine Summe erstellen.
(und wenns genau gehen soll dann noch Anfange+Ende hinzurechnen, weils ja nicht immer um 0:00 auf True gesetzt wird, falls es schon true ist)Gibts da was in Influx das das erleichtert?
Und wie kommt das dann am einfachsten in iobroker/VIS rein?
LG Freisei
-
@freisei sagte:
wie lang war die Lampe diesen Tag an?
Genügt nicht ein einfaches Skript, das den Lampenaktor überwacht und um Mitternacht die Einschaltdauer des Tages in einen Datenpunkt schreibt ? Etwa so
const idActor = '...'; // ID eintragen ! const idED = '...'; // Einschaltdauer Tag var midnight = 0; var ed = 0; var actor = getState(idActor).val; on(idActor, function(dp) { actor = dp.state.val; if(!actor) { // Aktor schaltet aus var ontime = dp.oldState.lc; if(midnight) { ontime = midnight; midnight = 0; } ed = ed + dp.state.lc - ontime; } }); schedule('0 0 * * *', function() { // Mitternacht if(actor) { midnight = Date.now(); ed = ed + midnight - getState(idActor).lc; } else midnight = 0; setState(idED, Math.round(ed/60000), true); // Minuten ed = 0; });
-
@paul53
Cooler ansatz, Danke!
Nachteilig ist, dass ich das dann für alle Einschaltdauer-Einträge ein Script mitlaufen lassen muss. Das wären bei mir dann doch einige.
Weiterer Nachteil: die Auflösung ist quasi auf den Tag beschränkt, obwohl die daten ja genauer da sind. Das wäre aber zweitrangig.
Daher hätte mir der Auswertungsansatz aus der DB irgendwie besser gefallen.
Ich schau mal was sich ergibt.Danke aber nochmal!
-
@freisei sagte:
die Auflösung ist quasi auf den Tag beschränkt,
Das lässt sich einfach mit zusätzlichen Datenpunkten erweitern.