fix: keep MAC, version, LEDs in DB when device goes offline

This commit is contained in:
Christian Mueller 2026-04-24 13:35:41 +02:00
parent 02ab0d0139
commit 5294e8ef50
2 changed files with 24 additions and 21 deletions

17
app.py
View File

@ -349,15 +349,14 @@ async def check_single_device(device_id: int):
if dev: if dev:
from datetime import datetime from datetime import datetime
info = get_wled_info(dev["hostname"]) info = get_wled_info(dev["hostname"])
conn.execute(""" if info.get("online"):
UPDATE wled_devices SET online=?, leds=?, version=?, mac=?, last_check=? WHERE id=? conn.execute("""
""", ( UPDATE wled_devices SET online=1, leds=?, version=?, mac=?, last_check=? WHERE id=?
1 if info.get("online") else 0, """, (info.get("leds", 0), info.get("version", ""), info.get("mac", ""), datetime.now(), device_id))
info.get("leds", 0) if info.get("online") else 0, else:
info.get("version", "") if info.get("online") else "", conn.execute("""
info.get("mac", "") if info.get("online") else "", UPDATE wled_devices SET online=0, last_check=? WHERE id=?
datetime.now(), device_id, """, (datetime.now(), device_id))
))
conn.commit() conn.commit()
conn.close() conn.close()
return RedirectResponse("/devices", status_code=303) return RedirectResponse("/devices", status_code=303)

View File

@ -208,18 +208,22 @@ def check_devices():
devices = conn.execute("SELECT id, hostname FROM wled_devices").fetchall() devices = conn.execute("SELECT id, hostname FROM wled_devices").fetchall()
for dev in devices: for dev in devices:
info = get_wled_info(dev["hostname"]) info = get_wled_info(dev["hostname"])
conn.execute(""" if info.get("online"):
UPDATE wled_devices conn.execute("""
SET online=?, leds=?, version=?, mac=?, last_check=? UPDATE wled_devices
WHERE id=? SET online=1, 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("leds", 0),
info.get("version", "") if info.get("online") else "", info.get("version", ""),
info.get("mac", "") if info.get("online") else "", info.get("mac", ""),
datetime.now(), datetime.now(),
dev["id"], dev["id"],
)) ))
else:
conn.execute("""
UPDATE wled_devices SET online=0, last_check=? WHERE id=?
""", (datetime.now(), dev["id"]))
conn.commit() conn.commit()
logger.info("Device-Check: %d Geraete geprueft", len(devices)) logger.info("Device-Check: %d Geraete geprueft", len(devices))
except Exception as e: except Exception as e: