sphings-dev.de

Power Flow Card Plus Mushroom: Mehrere Batterien, mehrere PV-Strings, beliebig viele Verbraucher

Die Power-Flow-Karte ist im Energie-Dashboard vieler Home-Assistant-Installationen das, was man zuerst sieht. Power Flow Card Plus von @flixlix ist dafür eine der beliebtesten Varianten. Sie geht aber von einem einfachen Aufbau aus: eine Batterie, ein PV-Eingang, höchstens vier Einzelverbraucher. Wer mehrere Speicher oder mehrere Dachflächen hat, muss die Werte vorher in Template-Sensoren zusammenrechnen. Für diesen Fall habe ich power-flow-card-plus-mushroom gebaut.

Die Karte ist ein Fork. Das Original stammt von @flixlix, der die Karte geschrieben hat und dem die Anerkennung dafür gehört. Der Fork ergänzt mehrere Batterien, mehrere PV-Quellen, beliebig viele Einzelverbraucher und ein Mushroom-artiges Erscheinungsbild. Er ist nicht im HACS-Standardspeicher und wird als benutzerdefiniertes Repository installiert. Probleme mit dem Fork gehören in den Issue-Tracker dieses Repositorys, nicht zum Original.

Die Karte mit drei PV-Quellen und zwei Batterien: zusammengefasste Solar- und Batterie-Knoten mit animierten Flüssen und darunter eine angedockte Aufstellung jeder Quelle
Schematische Darstellung des Layouts, kein Foto einer laufenden Installation.

Neben dem Original installierbar

Der Fork hat einen eigenen Kartentyp, damit er parallel zur Originalkarte laufen kann: custom:power-flow-card-plus-mushroom. Die JavaScript-Ressource heißt power-flow-card-plus-mushroom.js, im Karten-Auswahldialog erscheint die Karte als „Power Flow Card Plus (Mushroom)“. Alle Custom Elements im Bundle haben eindeutige Namen, es gibt also keine Kollision. Eine bestehende Konfiguration der Originalkarte läuft weiter, sobald man den type: umstellt. Nur sources, batteries und max_individual_in_grid sind Erweiterungen des Forks.

Mehrere PV-Quellen und Batterien

Statt einer einzelnen solar.entity lässt sich unter solar.sources eine Liste angeben. Die Leistungen werden im Solar-Knoten summiert, und jede Quelle erscheint zusätzlich in einer kompakten Aufstellung unter dem Diagramm. Wird solar.entity weggelassen, berechnet die Karte die Summe selbst.

type: custom:power-flow-card-plus-mushroom
entities:
  solar:
    sources:
      - entity: sensor.pv_roof_south
        name: Dach Süd
      - entity: sensor.pv_roof_east
        name: Dach Ost
      - entity: sensor.pv_garage
        name: Garage

Bei Batterien funktioniert es genauso mit battery.batteries. Die Leistungen werden summiert; wenn kein gemeinsamer Ladezustand angegeben ist, bildet die Karte den Durchschnitt der einzelnen Ladezustände, denn Prozentwerte zu addieren wäre falsch. Jede Batterie bekommt in der Aufstellung ihre eigene Leistung und ihren eigenen Ladezustand. Alle Untereinträge eines Knotens sollten dieselbe Einheit haben, weil der Gesamtwert die Einheit des ersten Eintrags übernimmt.

Mehr als vier Einzelverbraucher

Die Liste individual ist unbegrenzt. Die ersten vier Geräte belegen wie bisher die Ecken des Diagramms, alle weiteren landen in der Liste darunter. max_individual_in_grid (0 bis 4, Standard 4) bestimmt, wie viele in die Ecken kommen; mit 0 wandern alle in die Liste. Mit individual_position: right verlieren die Geräte ihre Kreise ganz und stehen als Liste neben dem Diagramm. Sortiert wird mit sort_individual_devices nach Wert (Standard), Name oder Name absteigend. Auf schmalen Karten rutscht die Liste unter das Diagramm.

Vier Einzelverbraucher in den Eckplätzen des Diagramms und drei weitere in der angedockten Liste darunter
Schematische Darstellung.

Externe Ladequelle

Manche laden den Speicher aus etwas, das weder Netz noch PV ist: ein Auto per V2L, ein Generator, Landstrom. Der Knoten charger macht das sichtbar. Er sitzt unter dem Netz und speist die Batterie über eine eigene Einbahn-Flusslinie. Die Leistung bleibt bewusst außerhalb der Verteilungsrechnung für Netz, Solar und Haus: Das Batterie-Entity meldet die resultierende Ladung ohnehin, sie noch einmal einzurechnen würde doppelt zählen. Der Knoten braucht eine konfigurierte Batterie.

entities:
  battery:
    entity: sensor.battery_power
  charger:
    name: V2L / Generator
    icon: mdi:ev-station
    sources:
      - entity: sensor.v2l_power
        name: V2L
      - entity: sensor.generator_power
        name: Generator

kWh-Modus

Die Karte kann statt der Leistung auch Energie zeigen. Ein Schalter im Kopf wechselt zwischen W und kWh, in den Listen stehen die Energiewerte dauerhaft. Gedacht sind kumulierte kWh-Sensoren, keine Tageszähler: Die Karte fragt bei Home Assistant die Statistik für die Differenz über den gewählten Zeitraum ab, ein Lebenszeitzähler bedient also jeden Zeitraum. Zur Wahl stehen today, yesterday, week, month, year sowie die rollierenden Fenster last_7_days, last_30_days und last_365_days. Repräsentiert ein Sensor schon genau den gewünschten Zeitraum, liest energy_from_state: true seinen Zustand unverändert. Große Summen schalten ab kwh_threshold (Standard 1000 kWh) auf MWh um.

In Version 1.5.0 kamen dafür die Felder in den visuellen Editor. Vorher ließ sich der kWh-Modus zwar unter „Erweitert“ einschalten, die kWh-Entitäten selbst gab es aber nur per YAML. Jetzt hat jede Knotenseite einen einklappbaren Abschnitt „Energie“, und auch die Listen für Batterien, PV-Quellen und Ladequellen sowie jeder Einzelverbraucher haben ihre Felder. Auch die Listen selbst (solar.sources, battery.batteries, charger.sources) lassen sich im Editor mit „Hinzufügen“ ergänzen, umsortieren und entfernen.

Der visuelle Karteneditor mit einer erweiterbaren Liste von Solarquellen
Schematische Darstellung.

Farben nach Auslastung

Mehrere Optionen färben Werte nach Auslastung ein: grün bei wenig, orange in der Mitte, rot am Ende der Skala.

  • color_individual_by_usage färbt Einzelverbraucher; individual_color_max legt fest, bei wie vielen Watt das Rot erreicht ist (Standard: max_expected_power).
  • color_battery_by_soc färbt Symbol und Balken nach Ladezustand. Seit 1.6.2 ist der Ladezustand die größte Zahl in der Zeile (1,05 rem, halbfett) und trägt die Akzentfarbe: 95 % grün, 62 % gelb, 33 % orange, 8 % rot.
  • color_battery_by_discharge färbt die Leistung nach Entladung. Jede Batterie wird an ihrem eigenen discharge_color_max gemessen, Laden zählt als keine Entladung und bleibt grün. Beide Schalter sind unabhängig – eine Batterie kann also mit grünem Balken (95 % voll) und rotem Wert (7,6 kW Entladung) erscheinen.
  • color_solar_by_output färbt PV-Quellen: rot bei nichts, orange dazwischen, grün bei Spitzenleistung. Jede Anlage wird an ihrem eigenen color_max gemessen; ein 800-Wp-Balkonmodul unter Volllast sieht damit genauso grün aus wie ein 10-kWp-Dach. Seit 1.7.0 ist 0 W grau statt rot, denn eine Anlage, die nachts nichts liefert, ist kein Fehlerzustand.

Eine Farbe, die direkt an der Batterie gesetzt ist, gewinnt immer gegen beide Einfärbungen. Die Aufstellung unter dem Diagramm zeigt zwei Einträge pro Zeile, vier Batterien bilden also einen 2×2-Block. Wo die Listen stehen, bestimmen solar_position, battery_position, charger_position und individual_position – jeweils oben, unten, links oder rechts.

Korrekturen auf dem Weg

Einige Fehler fielen beim Ausbau auf. Die Flusslinien endeten 16 px vor den Kreisen und lagen 16 px über deren Mitte; die Ursache war das padding des Linien-Containers, gemessen wurden danach 0 px Abstand und Linien genau auf der Kreismitte. Das Original in Version 0.3.7 hat dieselben Abstände, hier ist es also eine bewusste Abweichung. Die kWh-Werte fehlten in den Listen, weil die erste Abfrage in connectedCallback ausgeführt wurde, wo hass meist noch nicht gesetzt ist; kurz nach Mitternacht verschwanden alle Werte, weil ein Zeitraum ohne Statistikeintrag gar nichts statt null lieferte. Eine leere Antwort ist ein gültiges Ergebnis: dann sind es 0 kWh. Und Felder im Editor erschienen ohne Namen oder mit dem rohen Übersetzungsschlüssel, bis die Übersetzungen für alle 18 Sprachen ergänzt waren.

Drei Mal war die Ursache für überflüssige Linien derselbe CSS-Spezifitätsfehler: Eine Zonenregel mit einer einzelnen Klasse verlor gegen die allgemeine Regel .pfcp-breakdown. Seit 1.7.2 prüft ein Test alle vier Zonen auf den kombinierten Selektor, sodass ein einfaches .pfcp-zone-top { künftig die Tests durchfallen lässt.

Installation

  1. In HACS unter „Benutzerdefinierte Repositories“ https://github.com/sphings79/power-flow-card-plus-mushroom mit der Kategorie „Dashboard“ hinzufügen.
  2. Die Karte herunterladen; HACS legt die Ressource power-flow-card-plus-mushroom.js an.
  3. Auf dem Dashboard eine Karte „Power Flow Card Plus (Mushroom)“ hinzufügen oder type: custom:power-flow-card-plus-mushroom in YAML eintragen.

Die Editor-Übersetzungen umfassen 18 Sprachen, darunter Deutsch. Wer das Original nützlich findet, kann dessen Autor auf ko-fi unterstützen; der Link steht im README.

Tags

Zum Projekt

Unterstützen

Diese Tools entstehen in meiner Freizeit und bleiben kostenlos, offen und cloud-frei. Wenn dir eins davon einen Nachmittag gespart hat, freue ich mich über einen Kaffee oder ein Stück Pizza.

Kaffee oder Pizza

Weitere Beiträge