From 5294e8ef50e818a0df47af5ebb96db3f88f16e3b Mon Sep 17 00:00:00 2001 From: Christian Mueller Date: Fri, 24 Apr 2026 13:35:41 +0200 Subject: [PATCH] fix: keep MAC, version, LEDs in DB when device goes offline --- app.py | 17 ++++++++--------- scheduler.py | 28 ++++++++++++++++------------ 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app.py b/app.py index aeb2a76..86aaaf7 100644 --- a/app.py +++ b/app.py @@ -349,15 +349,14 @@ async def check_single_device(device_id: int): if dev: from datetime import datetime info = get_wled_info(dev["hostname"]) - conn.execute(""" - UPDATE wled_devices SET online=?, leds=?, version=?, mac=?, last_check=? WHERE id=? - """, ( - 1 if info.get("online") else 0, - info.get("leds", 0) if info.get("online") else 0, - info.get("version", "") if info.get("online") else "", - info.get("mac", "") if info.get("online") else "", - datetime.now(), device_id, - )) + if info.get("online"): + conn.execute(""" + UPDATE wled_devices SET online=1, leds=?, version=?, mac=?, last_check=? WHERE id=? + """, (info.get("leds", 0), info.get("version", ""), info.get("mac", ""), datetime.now(), device_id)) + else: + conn.execute(""" + UPDATE wled_devices SET online=0, last_check=? WHERE id=? + """, (datetime.now(), device_id)) conn.commit() conn.close() return RedirectResponse("/devices", status_code=303) diff --git a/scheduler.py b/scheduler.py index 6e47ef1..7176267 100644 --- a/scheduler.py +++ b/scheduler.py @@ -208,18 +208,22 @@ def check_devices(): devices = conn.execute("SELECT id, hostname FROM wled_devices").fetchall() for dev in devices: info = get_wled_info(dev["hostname"]) - conn.execute(""" - UPDATE wled_devices - SET online=?, leds=?, version=?, mac=?, last_check=? - WHERE id=? - """, ( - 1 if info.get("online") else 0, - info.get("leds", 0) if info.get("online") else 0, - info.get("version", "") if info.get("online") else "", - info.get("mac", "") if info.get("online") else "", - datetime.now(), - dev["id"], - )) + if info.get("online"): + conn.execute(""" + UPDATE wled_devices + SET online=1, leds=?, version=?, mac=?, last_check=? + WHERE id=? + """, ( + info.get("leds", 0), + info.get("version", ""), + info.get("mac", ""), + datetime.now(), + dev["id"], + )) + else: + conn.execute(""" + UPDATE wled_devices SET online=0, last_check=? WHERE id=? + """, (datetime.now(), dev["id"])) conn.commit() logger.info("Device-Check: %d Geraete geprueft", len(devices)) except Exception as e: