FIX-NETATMO-04: Hintergrund auf echtes Weiss fuer ACeP-Display

ACeP rendert warm-creme (252,248,240) als nicht-weisses Pixel und
laesst den Hintergrund verfaerbt/gruengelbstichig aussehen.
PAPER_BG auf (255,255,255) und alle Box-Fills auf reines weiss gesetzt.
Chart-Fill (225,240,225) entfernt — Linie allein reicht.
Box-Trennlinien und Akzent-Farben unveraendert.
This commit is contained in:
Hermes
2026-08-29 20:40:41 +04:00
parent 1aa11f5843
commit c55cc90bda
+13 -11
View File
@@ -27,17 +27,19 @@ from palette import (
) )
# ── WarmNews Farbpalette ──────────────────────────────────────────────────── # ── WarmNews Farbpalette ────────────────────────────────────────────────────
PAPER_BG = (252, 248, 240) # Hintergrund: ECHTES WEISS (255,255,255) für ACeP-Display.
# Auf ACeP wird warm-creme als nicht-weiss gerendert und sieht verfärbt aus.
PAPER_BG = (255, 255, 255) # echtes weiss
INK = ( 18, 12, 8) INK = ( 18, 12, 8)
INK_MID = (130, 110, 90) INK_MID = (110, 110, 110)
INK_LIGHT = (220, 210, 190) INK_LIGHT = (200, 200, 200)
FAINT = (235, 228, 215) FAINT = (230, 230, 230)
RED = (200, 50, 40) RED = (200, 50, 40)
GREEN = ( 50, 120, 60) GREEN = ( 50, 120, 60)
BLUE = ( 60, 70, 160) BLUE = ( 60, 70, 160)
INFO_BL = ( 50, 100, 160) INFO_BL = ( 50, 100, 160)
PURPLE = (100, 80, 150) PURPLE = (100, 80, 150)
YELLOW = (180, 140, 40) YELLOW = (200, 160, 40)
BATT_LOW = (200, 50, 40) BATT_LOW = (200, 50, 40)
BATT_MID = (220, 160, 30) BATT_MID = (220, 160, 30)
@@ -366,7 +368,7 @@ class Widget(Widget):
# ── Aussen ────────────────────────────────────────────────────────── # ── Aussen ──────────────────────────────────────────────────────────
def _draw_aussen(self, draw, x, y, w, h, main, out, modules): def _draw_aussen(self, draw, x, y, w, h, main, out, modules):
# Box # Box
draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 252, 245)) draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 255, 255))
draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=GREEN) draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=GREEN)
self._text(draw, "AUSSEN", x + 12, y + STRIP_H + 4, font_size=14, color=GREEN) self._text(draw, "AUSSEN", x + 12, y + STRIP_H + 4, font_size=14, color=GREEN)
# Batterie + Signal oben rechts # Batterie + Signal oben rechts
@@ -425,7 +427,7 @@ class Widget(Widget):
self._right_text(draw, right_text, x, chart_label_y, w - SAFE_PAD, f_clbl, INK_MID) self._right_text(draw, right_text, x, chart_label_y, w - SAFE_PAD, f_clbl, INK_MID)
self._draw_line_chart(draw, x + SAFE_PAD, chart_label_y + 18, self._draw_line_chart(draw, x + SAFE_PAD, chart_label_y + 18,
w - 2 * SAFE_PAD, h - (chart_label_y - y) - 32, w - 2 * SAFE_PAD, h - (chart_label_y - y) - 32,
history, GREEN, fill_color=(225, 240, 225)) history, GREEN)
# Footer # Footer
foot_y = chart_label_y + 18 + (h - (chart_label_y - y) - 32) + 4 foot_y = chart_label_y + 18 + (h - (chart_label_y - y) - 32) + 4
if foot_y + 12 <= y + h - 4: if foot_y + 12 <= y + h - 4:
@@ -435,7 +437,7 @@ class Widget(Widget):
# ── Wind ──────────────────────────────────────────────────────────── # ── Wind ────────────────────────────────────────────────────────────
def _draw_wind(self, draw, x, y, w, h, wind): def _draw_wind(self, draw, x, y, w, h, wind):
draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 252, 245)) draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 255, 255))
draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=BLUE) draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=BLUE)
self._text(draw, "WIND", x + 12, y + STRIP_H + 4, font_size=14, color=BLUE) self._text(draw, "WIND", x + 12, y + STRIP_H + 4, font_size=14, color=BLUE)
if wind.get("battery_pct") is not None: if wind.get("battery_pct") is not None:
@@ -464,7 +466,7 @@ class Widget(Widget):
# ── Regen ─────────────────────────────────────────────────────────── # ── Regen ───────────────────────────────────────────────────────────
def _draw_regen(self, draw, x, y, w, h, rain): def _draw_regen(self, draw, x, y, w, h, rain):
draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 252, 245)) draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 255, 255))
draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=INFO_BL) draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=INFO_BL)
self._text(draw, "REGEN", x + 12, y + STRIP_H + 4, font_size=14, color=INFO_BL) self._text(draw, "REGEN", x + 12, y + STRIP_H + 4, font_size=14, color=INFO_BL)
if rain.get("battery_pct") is not None: if rain.get("battery_pct") is not None:
@@ -509,7 +511,7 @@ class Widget(Widget):
# ── Indoor ────────────────────────────────────────────────────────── # ── Indoor ──────────────────────────────────────────────────────────
def _draw_indoor(self, draw, x, y, w, h, indoor): def _draw_indoor(self, draw, x, y, w, h, indoor):
draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 252, 245)) draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 255, 255))
draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=RED) draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=RED)
self._text(draw, f"INNEN x{len(indoor)}", x + 12, y + STRIP_H + 4, self._text(draw, f"INNEN x{len(indoor)}", x + 12, y + STRIP_H + 4,
font_size=14, color=RED) font_size=14, color=RED)
@@ -589,7 +591,7 @@ class Widget(Widget):
# ── Forecast (Open-Meteo) ────────────────────────────────────────── # ── Forecast (Open-Meteo) ──────────────────────────────────────────
def _draw_forecast(self, draw, x, y, w, h, forecast): def _draw_forecast(self, draw, x, y, w, h, forecast):
draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 252, 245)) draw.rectangle((x, y, x + w - 1, y + h - 1), fill=(255, 255, 255))
draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=PURPLE) draw.rectangle((x, y, x + w - 1, y + STRIP_H), fill=PURPLE)
self._text(draw, "FORECAST", x + 12, y + STRIP_H + 4, self._text(draw, "FORECAST", x + 12, y + STRIP_H + 4,
font_size=14, color=PURPLE) font_size=14, color=PURPLE)