Dashboard 2 (unifi) hinzugefügt

This commit is contained in:
hubobel 2026-06-01 17:59:25 +02:00
parent 709cea301b
commit c3fa99bc0d

134
down.py
View file

@ -248,6 +248,107 @@ from(bucket: "{INFLUX_BUCKET}")
print(traceback.format_exc()) print(traceback.format_exc())
return [] return []
def get_unifi_clients():
try:
with urllib.request.urlopen(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.health.lan.num_user",
timeout=3
) as response:
lan = int(response.read().decode().strip())
with urllib.request.urlopen(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.health.wlan.num_user",
timeout=3
) as response:
wlan = int(response.read().decode().strip())
return lan + wlan
except Exception as e:
print("UniFi Client Fehler:", e)
return 0
def get_url_value(url):
try:
with urllib.request.urlopen(url, timeout=3) as response:
value = response.read().decode().strip()
# ioBroker liefert manche Werte als "2.3" oder "721371"
value = value.replace('"', '')
return value
except Exception as e:
print("URL Fehler:", e)
return "0"
def get_unifi_stats():
try:
lan = int(get_url_value(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.health.lan.num_user"
))
wlan = int(get_url_value(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.health.wlan.num_user"
))
cpu = float(
get_url_value(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.devices.9c:05:d6:52:52:19.system-stats.cpu"
).replace('"', '')
)
ram = float(
get_url_value(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.devices.9c:05:d6:52:52:19.system-stats.mem"
).replace('"', '')
)
uptime = int(get_url_value(
"http://10.0.1.122:8087/getPlainValue/unifi.2.default.devices.9c:05:d6:52:52:19.system-stats.uptime"
))
return {
"lan": lan,
"wlan": wlan,
"clients": lan + wlan,
"cpu": cpu,
"ram": ram,
"uptime": uptime
}
except Exception as e:
print("UniFi Fehler:", e)
return {
"lan": 0,
"wlan": 0,
"clients": 0,
"cpu": 0,
"ram": 0,
"uptime": 0
}
def format_uptime(seconds):
days = seconds // 86400
hours = (seconds % 86400) // 3600
return f"{days}d {hours}h"
# ------------------------------------------------- # -------------------------------------------------
# Speedtest aus InfluxDB lesen # Speedtest aus InfluxDB lesen
@ -613,6 +714,9 @@ def draw_dashboard_2():
draw = ImageDraw.Draw(img) draw = ImageDraw.Draw(img)
stats = get_unifi_stats()
# Header wie Dashboard 1 # Header wie Dashboard 1
draw.text( draw.text(
@ -657,20 +761,30 @@ def draw_dashboard_2():
(10, 60, WIDTH - 10, 60), (10, 60, WIDTH - 10, 60),
fill="white" fill="white"
) )
draw.text( draw.text(
(20, 110), (20, 90),
time.strftime("%d.%m.%Y"), "UNIFI GATEWAY MAX",
fill="white", fill="cyan",
font=font_small_bold font=font_small_bold
) )
draw.text( draw.text((20, 130), "LAN CLIENTS", fill="white", font=font_small_bold)
(20, 140), draw.text((220, 130), str(stats["lan"]), fill="lime", font=font_small_bold)
time.strftime("%H:%M:%S"),
fill="green", draw.text((20, 160), "WLAN CLIENTS", fill="white", font=font_small_bold)
font=font_download draw.text((220, 160), str(stats["wlan"]), fill="lime", font=font_small_bold)
)
draw.text((20, 190), "CLIENTS GES.", fill="white", font=font_small_bold)
draw.text((220, 190), str(stats["clients"]), fill="lime", font=font_small_bold)
draw.text((20, 220), "UXG CPU", fill="white", font=font_small_bold)
draw.text((220, 220), f"{stats['cpu']:.0f} %", fill="yellow", font=font_small_bold)
draw.text((20, 250), "UXG RAM", fill="white", font=font_small_bold)
draw.text((220, 250), f"{stats['ram']:.0f} %", fill="cyan", font=font_small_bold)
draw.text((20, 280), "UPTIME", fill="white", font=font_small_bold)
draw.text((220, 280), format_uptime(stats["uptime"]), fill="orange", font=font_small_bold)
return img return img