From 9e012ac740f5152cc18e3a9110d2cebba4566e68 Mon Sep 17 00:00:00 2001 From: l_samenv Date: Fri, 23 Aug 2024 13:56:11 +0200 Subject: [PATCH] insert_last_known_values for expired=True --- influxdb.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/influxdb.py b/influxdb.py index ceb9ef9..d4f0e6f 100644 --- a/influxdb.py +++ b/influxdb.py @@ -360,7 +360,8 @@ class InfluxDataGetter: def _insert_last_known_value(self, variable, parameter, curve, time): """ Adds the last known value as the first point in the curve if the last known value is outside the viewing window, for the given variable and parameter. - + The point is added only if it is not expired. + Parameters : variable (str) : the name (Influx) of the variable we want the values of. parameter (str) : the parameter of the variable to get the values from @@ -376,21 +377,28 @@ class InfluxDataGetter: from(bucket: "{self._bucket}") |> range(start: 0, stop: {time[0]+1}) |> filter(fn : (r) => r._measurement == "{variable}") - |> filter(fn : (r) => r._field == "{parameter+"_float"}" and r.expired == "False") + |> filter(fn : (r) => r._field == "{parameter+"_float"}") |> last() - |> keep(columns: ["_value"]) + |> keep(columns: ["_time", "_value", "expired"]) |> yield(name: "res") """ tables = self._db.query(query) - + pair_to_insert = [] for table in tables: - for record in table.records: - value = record.get_value() - try: - value = PrettyFloat(value) - except: - value = None - curve.insert(0, [time[0], value]) + for record in table.records: + t = round(datetime.timestamp(record.get_time()), 3) + value = None + if record["expired"] == "False": + value = record.get_value() + try: + value = PrettyFloat(value) + except: + value = None + if len(pair_to_insert) == 0 or t >= pair_to_insert[0]: + pair_to_insert = [t, value] + + if len(pair_to_insert)==2 and pair_to_insert[1] != None: + curve.insert(0, [time[0], pair_to_insert[1]]) return curve def _get_last_values(self, variable, parameter, start_time, end_time):