ink. Schalter ON/OFF/ON

This commit is contained in:
hubobel 2026-05-25 17:20:19 +02:00
parent e7e857d019
commit ac75294295

160
down.py
View file

@ -9,6 +9,23 @@ import urllib.request
from zoneinfo import ZoneInfo from zoneinfo import ZoneInfo
from influxdb_client import InfluxDBClient from influxdb_client import InfluxDBClient
from gpiozero import Button
# -------------------------------------------------
# GPIO Schalter
# -------------------------------------------------
SWITCH1 = Button(
5,
pull_up=True,
bounce_time=0.1
)
SWITCH2 = Button(
21,
pull_up=True,
bounce_time=0.1
)
# ------------------------------------------------- # -------------------------------------------------
# InfluxDB V2 # InfluxDB V2
@ -347,8 +364,6 @@ def draw_graph(draw, values, x, y, w, h):
if max_val <= 0: if max_val <= 0:
return return
# Dezente Hilfslinien
draw.line( draw.line(
(x, y + h // 2, x + w, y + h // 2), (x, y + h // 2, x + w, y + h // 2),
fill=(40, 40, 40) fill=(40, 40, 40)
@ -372,10 +387,10 @@ def draw_graph(draw, values, x, y, w, h):
draw.line(points, fill="green", width=2) draw.line(points, fill="green", width=2)
# ------------------------------------------------- # -------------------------------------------------
# UI zeichnen # Dashboard 1
# ------------------------------------------------- # -------------------------------------------------
def draw_ui(): def draw_dashboard_1():
down, up, down_prev, up_prev, ts = get_speedtest() down, up, down_prev, up_prev, ts = get_speedtest()
@ -435,23 +450,12 @@ def draw_ui():
font=font_small_bold font=font_small_bold
) )
if ping >= 0: draw.text(
(10, 55),
draw.text( f"PING: {ping:.1f} ms",
(10, 55), fill=ping_color,
f"PING: {ping:.1f} ms", font=font_small_bold
fill=ping_color, )
font=font_small_bold
)
else:
draw.text(
(10, 55),
"PING: FEHLER",
fill="red",
font=font_small_bold
)
draw.line( draw.line(
(10, 80, WIDTH - 10, 80), (10, 80, WIDTH - 10, 80),
@ -538,6 +542,103 @@ def draw_ui():
return img return img
# -------------------------------------------------
# Dashboard 2
# -------------------------------------------------
def draw_dashboard_2():
img = Image.new("RGB", (WIDTH, HEIGHT), "black")
draw = ImageDraw.Draw(img)
draw.text(
(20, 20),
"SYSTEMSTATUS",
fill="white",
font=font_title
)
draw.line(
(20, 60, WIDTH - 20, 60),
fill="white"
)
draw.text(
(20, 100),
f"WLAN: {get_ip()}",
fill="cyan",
font=font_small
)
draw.text(
(20, 130),
f"WAN: {get_wan_ip()}",
fill="orange",
font=font_small
)
draw.text(
(20, 190),
time.strftime("%d.%m.%Y"),
fill="white",
font=font_small_bold
)
draw.text(
(20, 220),
time.strftime("%H:%M:%S"),
fill="green",
font=font_download
)
return img
# -------------------------------------------------
# Dashboard 3
# -------------------------------------------------
def draw_dashboard_3():
img = Image.new("RGB", (WIDTH, HEIGHT), "black")
draw = ImageDraw.Draw(img)
draw.text(
(20, 20),
"DASHBOARD 3",
fill="white",
font=font_title
)
draw.line(
(20, 60, WIDTH - 20, 60),
fill="white"
)
draw.text(
(20, 100),
"Bereit fuer weitere",
fill="green",
font=font_small
)
draw.text(
(20, 130),
"Informationen",
fill="green",
font=font_small
)
draw.text(
(20, 200),
"GPIO21 aktiv",
fill="orange",
font=font_small_bold
)
return img
# ------------------------------------------------- # -------------------------------------------------
# Framebuffer schreiben # Framebuffer schreiben
# ------------------------------------------------- # -------------------------------------------------
@ -566,7 +667,20 @@ while True:
try: try:
img = draw_ui() # Dashboard 3
if SWITCH2.is_pressed:
img = draw_dashboard_3()
# Dashboard 2
elif SWITCH1.is_pressed:
img = draw_dashboard_2()
# Dashboard 1
else:
img = draw_dashboard_1()
write_fb(img) write_fb(img)
@ -574,4 +688,4 @@ while True:
print(traceback.format_exc()) print(traceback.format_exc())
time.sleep(60) time.sleep(1)