Optionale Energieanimation
Im Dashboard blendet der Schalter Animation eine kompakte, transparente Szene innerhalb der Karte „Deine Automationen“, unter den Geräteinformationen, ein. Der Browser merkt sich den Animationsschalter über Seitenwechsel und Neuladen hinweg. Beim ersten Besuch bleibt der Bereich eingeklappt; die Grafik wird erst beim Aufklappen geladen. Die Informationsdaten werden bereits kurz nach dem Aufbau des Dashboards asynchron vorgeladen, auch bei geschlossenem Bereich. Die bisherigen kleinen Netz–Haus-Animationen in den Messquellen-Kacheln entfallen. Deren Messwerte und Richtungsanzeige bleiben erhalten.
Die Szene verwendet die freigegebene Haus-/Auto-Grafik mit bewegten Energiepfaden und Wetterebenen. Die Grafik bleibt maximal etwa 480 px breit; rechts stehen Temperatur, Wetter, Luftqualität, Pollen und der aktuelle Börsenstrompreis klein untereinander. Gesamte maximale Breite: 780 px. Eine dezente Trennlinie verbindet die kompakte Werteliste optisch mit der Szene. Mobil stehen die fünf Werte kompakt unter der Grafik (maximal 460 px bzw. verfügbare Breite). Animation und Werteliste werden gemeinsam ein-/ausgeblendet. Ohne Wallbox-Task wird der Fahrzeug-/Wallboxbereich ausgeblendet. Blitze sind bei Gewitter separat aktivierbar und zunächst aus.
Daten und Grenzen
- Netzleistung: signierte aktuelle Messquelle, bevorzugt
grid.power_weinschließlich vorangestellter Payload-Pfade wieSENSOR.grid.power_w; auchENERGY.Power, gleichwertige JSONPath-Klammerpfade,total_act_power, dokumentiertesE320.power_in(einschließlich übergeordnetem Payload-Pfad) und erkannte Smart-Meter-Leistung einschließlichpower.total_w,total_powerundactive_power_w. Die bestehende Task-Messquelle wird automatisch verwendet; eine zusätzliche Zählerauswahl gibt es nicht. Positive Werte = Bezug, negative = Einspeisung. Derselbe Zähler wird bei Verwendung in mehreren Tasks nicht summiert. Mehrere nicht eindeutig zuordenbare Zähler ergeben keine erfundene Gesamtsumme. Einzelne Import-/Exportregister werden nicht als signierte Netzleistung interpretiert. Die Richtungsanzeige der Task-Karte und die Szene verwenden dieselbe Pfaderkennung. In den Szenendetails steht auch der tatsächlich verwendete Task-Pfad. - Fallback: vorhandener Energiesnapshot des ausgewählten Geräts mit
grid.power_w, gesetzter Verfügbarkeit und höchstens drei Minuten altem Gerätezeitstempel. Reicht das nicht aus, wird die bereits vorhandene, serverseitig aufgelöste Hauszählerquelle aus/info/latestgenutzt. Diese berücksichtigt die gespeicherte Fallback-Hauszählerauswahl. Akzeptiert werden nursnapshot.grid,snapshot.devices.smart_meterundsnapshot.devices.fallback_home_meter, ein endlicher Leistungswert und ein frischer Datenstand von höchstens 60 Minuten gemäß Informationsdienst. Task-Werte haben Vorrang. Tageszählerstände liefern keine Leistung. Es gibt dafür keinen zusätzlichen Abruf und keine erneute Zählerauswahl. - PV/Haus: nur tatsächliche Leistungs-Messquellen (
pv.power_w,solar.power_w,production.power_wbzw.house.power_w,home.power_w,consumption.power_w). Wetterprognosen und PV-Potenzial sind keine gemessene Erzeugung. Ohne PV-Messung steht der Hinweis unter „Messquelle & Datenstand“. Bei reinem Netzbezug steht der Hauspfad für die Versorgung des Hausanschlusses, ohne einen separaten Hausverbrauch zu behaupten. - Wallbox: Wallbox-Tasks des ausgewählten Geräts. Ladeanimation nur bei frischer, fehlerfreier Leistung über 100 W; ein Status „charging“, eine aktive Regel oder ein eingestecktes Fahrzeug allein genügt nicht. Mehrere Tasks derselben Wallbox werden nicht doppelt gezählt. Echte Leistung kann auch bei deaktivierter Automatik angezeigt werden (manuelles Laden).
- Wetter: bestehender Informations-/Intelligence-Endpunkt
/info/latest, einschließlich Wettercode, Standort, Luftqualität, Pollen und Strompreisen. Bei aktivem Informationszugang unabhängig vom Animationsschalter: Erstabruf 200 ms nach dem Einhängen des Dashboards, erfolgreiche Antworten 15 Minuten zwischengespeichert. Bei Fehlern erfolgen Wiederholungen nach 1, 2, 4, 8 und maximal 15 Minuten; keine Abrufe im verdeckten Tab. Keine zusätzlichen Home-Connect-Aufrufe. Frische Geräte-Wetterangaben können als Rückfall dienen. Regenwahrscheinlichkeit löst keinen Regen aus; Schnee und Nebel werden nicht als Regen dargestellt. - Nacht: näherungsweiser Sonnenstand aus UTC-Zeit und Standortkoordinaten nach NOAA. Ohne Standort bleibt Tag/Nacht offen. Nach Sonnenuntergang läuft kein PV-Pfad. Tatsächlich gemessene Einspeisung bleibt korrekt sichtbar, etwa bei Speicherentladung. Das Mondsymbol stellt Nacht dar, keine gemessene Mondphase.
Gerätewechsel verwerfen die vorherige Szene. Die Netzleistungsanzeige verwendet denselben gespeicherten Task-Datenstand wie die Task-Karten, auch beim Start aus dem Sitzungsspeicher, vor der Live-Verbindung und nach längeren Abständen zum vollständigen Dashboard-Paket. Der letzte vorhandene Wert läuft nicht durch eine zusätzliche Szenen-Altersgrenze ab. Patches werden im bestehenden Runtime-Datenstand zusammengeführt; die Szene übernimmt dessen Änderungen ohne eigenen Messwertcache. Bei getrennter Verbindung oder explizit offline gemeldeter Quelle bleibt der Netzleistungswert sichtbar, die Netz-/zugehörige Hausbewegung ruht. Online folgt die Netzbewegung der Richtung des letzten bekannten Task-Werts. Fehlende/ungültige Messwerte oder entfernte Tasks werden nicht aus einem alten Szenenwert rekonstruiert. PV-, Haus- und Wallbox-Livewerte behalten ihre bisherige Sechs-Minuten-Grenze; die Snapshot-/Informations-Fallbacks behalten ihre eigenen Alters- und Verfügbarkeitsprüfungen. Unter „Messquelle & Datenstand“ werden Herkunft und Alter des Dashboard-Pakets bzw. Energiesnapshots angezeigt; dies ist kein separater Messzeitstempel des Sensors. Bei mehrfach verwendeter identischer Zählerquelle wird die im Browser zuletzt beobachtete Wert-/Quellenänderung bevorzugt, nicht summiert oder gemittelt. Ohne unterschiedliche Beobachtungszeitpunkte gilt die stabile Task-Reihenfolge. valueObservedAtMs wird mit dem Dashboard-Zustand gespeichert; dies ist ausdrücklich kein Sensor-Messzeitstempel. Unveränderte Werte und fremde Status-Patches setzen diesen Zeitpunkt nicht neu. Unterschiedliche Zähler bleiben mehrdeutig und werden nicht anhand dieser Reihenfolge miteinander vermischt. Energiepfade verwenden ein 20-W-Totband. Ausgeblendete Ansichten werden ausgehängt; im Hintergrund, außerhalb des sichtbaren Bereichs und bei der globalen Animationspause ruhen Bewegungen. Die Betriebssystem-Einstellung für reduzierte Bewegung wird berücksichtigt.
Umsetzung
React-Komponente EnergyScene, reine Zustandsableitung in lib/dashboard/energyScene.ts, Wetterabruf in useEnergySceneWeather. Das statische SVG enthält keine Demo-Skripte. Die zwei transparenten WebP-Dateien werden separat gecacht (zusammen rund 290 KB). Kein WebGL, keine zusätzliche Bibliothek, keine Änderung an Gerätebefehlen oder der Regelungs-Engine.
Prüfung: node --test tests/browser/dashboard-energy-scene.test.mjs tests/browser/dashboard-grid-flow.test.mjs tests/browser/dashboard-animation-preference.test.mjs tests/browser/dashboard-motion-lifecycle.test.mjs tests/browser/dashboard-compact-render.test.mjs.
Die Informationsabfrage startet nach dem Aufbau des Dashboards asynchron, unabhängig vom Aufklappen. Weder die Seite noch die Animation wartet darauf. Platzhalter halten die Werteliste stabil. Schließen hängt nur die Grafik und Werteliste aus; das Vorladen läuft im Dashboard weiter. Gerätewechsel, gesperrter Zugang und Verlassen des Dashboards beenden die zugehörigen Timer; verspätete Antworten dürfen keine fremden Gerätedaten einblenden. Preisstunden werden anhand ihres gültigen Zeitfensters ausgewählt (auch negative Preise sind möglich); abgelaufene Preise erscheinen als „–“. Vorhandene ältere Wetter-, Luftqualitäts- und Pollenwerte bleiben wie auf Informationen sichtbar, ohne Alterszusätze in der kompakten Werteliste. Der jeweilige Datenstand steht bei Bedarf unter „Messquelle & Datenstand“. Nicht verfügbare Werte bleiben „–“; veraltete Wetterdaten starten keine Wetteranimation. Bei Pollen wird die höchste verfügbare Konzentration mit Pflanzenart gezeigt, fehlende Werte werden nicht als null interpretiert.
Hinweise zur Herkunft von Wetter- und Umweltdaten erscheinen erst bei verfügbaren Informationsdaten. Deaktivierte Zusatzinformationen, laufendes Nachladen und Abruffehler werden getrennt angezeigt; ein fehlender Standort wird nur bei einer erfolgreichen Wetterantwort ohne nutzbare Koordinaten gemeldet.
Die statische SVG-Grafik ist mit React.memo von Messwert- und Uhrzeitupdates getrennt; ihr Zeichenbereich ist vom umgebenden Layout isoliert. Eine Beseitigung des gemeldeten Browser-Flackerns ist ohne Live-Reproduktion noch nicht bestätigt.
Die Task-Karten verwenden die Website-Flächen auch im Inneren: Messquelle, Wallbox, Geräte, Zeitplan und Detailwerte erhalten gemeinsame dezente Rahmen und Hintergründe. Die bisherigen Fotohintergründe entfallen. Messwerte und Ladeübersicht sind kompakter, mobil bleiben Schalter und Details bedienbar.