#!/usr/bin/env python3 """1) Löscht Überlappungsbereich 2) rekonstruiert sauber mit neuen Schwellen.""" import json from urllib.parse import quote from urllib.request import Request, urlopen INFLUX='http://localhost:8086'; DB='iobroker' def qget(sql): with urlopen(f'{INFLUX}/query?db={DB}&epoch=ns&q={quote(sql)}', timeout=30) as r: return json.loads(r.read().decode()) def qpost(sql): url = f'{INFLUX}/query?db={DB}' req = Request(url, data=f'q={quote(sql)}'.encode(), method='POST', headers={'Content-Type':'application/x-www-form-urlencoded'}) with urlopen(req, timeout=30) as r: return json.loads(r.read().decode()) # Zeitraum: ab erstem "toten" Zeitpunkt bis eine Minute vor Live-Service-Start # Live-Start war 2026-04-20 21:45 MESZ = 19:45 UTC # Rekonstruktion soll 06.04. mittags bis 20.04. 21:44 MESZ START_UTC = '2026-04-06T02:00:00Z' # 04:00 MESZ 06.04. END_UTC = '2026-04-20T19:45:00Z' # 21:45 MESZ 20.04. print('=== VOR DELETE ===') for m in ('brennerstarts','brennerstatus','brennerlaufzeit'): r = qget(f'SELECT count(value) FROM {m} WHERE time >= \'{START_UTC}\' AND time < \'{END_UTC}\'') s = r['results'][0].get('series',[]) c = s[0]['values'][0][1] if s else 0 print(f' {m}: {c} Zeilen im Rekonstruktions-Fenster') print('\n=== DELETE ===') for m in ('brennerstarts','brennerstatus','brennerlaufzeit'): r = qpost(f'DELETE FROM {m} WHERE time >= \'{START_UTC}\' AND time < \'{END_UTC}\'') print(f' {m}: {r}') print('\n=== NACH DELETE ===') for m in ('brennerstarts','brennerstatus','brennerlaufzeit'): r = qget(f'SELECT count(value) FROM {m} WHERE time >= \'{START_UTC}\' AND time < \'{END_UTC}\'') s = r['results'][0].get('series',[]) c = s[0]['values'][0][1] if s else 0 print(f' {m}: {c} Zeilen verbleibend')