Vollbildanzeige fuer den Raspberry Pi (800 x 480)

index.php?action=anzeige: Uebersicht, Anlage und Speicher ohne Kopf und
Seitenleiste, schmale Leiste links, immer quer. Nach zwei Minuten ohne
Beruehrung zurueck zur Uebersicht, MQTT verbindet still neu (Punkt in der
Leiste), alle sechs Stunden neu laden. Standard "ruhig" fuer den Pi 3B+
(nur Fluesse, grobe Stufen, kein Mauszeiger); &animation=1 und &maus=1.

Dafuer:
- Seitentabelle kennt "eigen" (Vorlage ist eine ganze Seite)
- Energiefluss: Optionen hochkantUnter und klickFilter; Anlage: hochkantUnter
- Bewaesserungszustand aus solarMQTT.js nach bewaesserungAnzeige.js, von
  Solar-Seite und Anzeige gemeinsam genutzt
- Speicher: "voll/leer" mit Tag ("morgen 21:52", "in 3 Tagen")

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 19:15:46 +02:00
co-authored by Claude Opus 5
parent 377aa03637
commit b8b2e66fd0
10 changed files with 503 additions and 180 deletions
+11 -2
View File
@@ -34,6 +34,15 @@
const uhrzeit = d => String(d.getHours()).padStart(2, "0") + ":" + String(d.getMinutes()).padStart(2, "0");
const schutz = s => String(s).replace(/[&<>"]/g, c => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" }[c]));
/** Zeitpunkt in h Stunden: "um 17:40", "morgen 06:10" oder "in 3 Tagen". */
function wann(h) {
const ziel = new Date(Date.now() + h * 3600000);
const tage = Math.round((new Date(ziel).setHours(0, 0, 0, 0) - new Date().setHours(0, 0, 0, 0)) / 86400000);
if (tage <= 0) return "um " + uhrzeit(ziel);
if (tage === 1) return "morgen " + uhrzeit(ziel);
return "in " + tage + " Tagen";
}
function leser(daten) {
return {
da(t) { return daten[t] !== undefined; },
@@ -219,10 +228,10 @@
let prognose = "in Ruhe";
if (p > 50 && kwh) {
const h = kwh * (100 - soc) / 100 / (p / 1000);
prognose = soc >= 99.5 ? "voll" : "voll um " + uhrzeit(new Date(Date.now() + h * 3600000));
prognose = soc >= 99.5 ? "voll" : "voll " + wann(h);
} else if (p < -50 && kwh) {
const h = kwh * soc / 100 / (-p / 1000);
prognose = "leer um " + uhrzeit(new Date(Date.now() + h * 3600000));
prognose = "leer " + wann(h);
}
if (p > 50 && s.grenze > 0 && s.grenze < 100) prognose += " · begrenzt auf " + Math.round(s.grenze) + " %";