wykres z gap

This commit is contained in:
Mateusz Gruszczyński
2026-03-02 17:39:54 +01:00
parent 6bd4b525b1
commit 8e14d38c38
3 changed files with 79 additions and 35 deletions

18
app.py
View File

@@ -205,6 +205,7 @@ def get_timeseries(phase_id):
datetime.fromisoformat(end_param.replace("Z", "+00:00"))
except Exception:
return api_error(400, "bad_datetime", "start/end must be ISO 8601")
time_filter = f"time >= '{start_param}' AND time <= '{end_param}'"
interval = config.DEFAULT_INTERVAL
else:
@@ -213,6 +214,7 @@ def get_timeseries(phase_id):
parse_range(clean_range)
except Exception:
return api_error(400, "bad_range", "range must be like 24h or 7d")
time_filter = f"time > now() - {clean_range}"
interval = config.TIME_RANGES.get(range_param, {}).get("interval", config.DEFAULT_INTERVAL)
@@ -221,17 +223,21 @@ def get_timeseries(phase_id):
FROM "{config.MEASUREMENT}"
WHERE "entity_id" = '{entity_id}'
AND {time_filter}
GROUP BY time({interval}) fill(none)
GROUP BY time({interval}) fill(null)
'''
client = get_influx_client()
try:
result = client.query(query)
data = [
{"time": p["time"], "voltage": round(p["voltage"], 2)}
for p in result.get_points()
if p.get("voltage") is not None
]
data = []
for p in result.get_points():
v = p.get("voltage")
data.append(
{
"time": p["time"],
"voltage": (round(float(v), 2) if v is not None else None),
}
)
return jsonify(data)
except Exception as e:
app.logger.error(f"Timeseries Error: {e} | Query: {query}")