Solar: Anlage-Ansicht neu, im Stil der Energiefluss-Uebersicht

Der alte Plan (pvplan.svg) ist ersetzt durch einen Katalog der Anlage
(js/solar/anlageKatalog.js: Flaechen, Wechselrichter, echte Lage jeder
Platte) und einen Renderer (js/solar/anlage.js):

- Flaechen mit Leistung und Anteil als Balken
- Lageplan: Farbe stufenlos nach Leistung im Vergleich zu den staerksten
  Platten der Flaeche, Warnzeichen nur bei genug Licht unter 70 % des
  Medians, "ohne Daten" wenn der Wechselrichter nichts meldet;
  Auftritt, Lichtwelle bei Sonne, pulsierende Warnung; hochkant gedreht
  auf schmalen Schirmen
- Detail zu Platte, String oder Wechselrichter (Eingaenge als Balken,
  Auslastung, Temperatur), Verlauf je Platte ab Seitenaufruf
- Wechselrichterliste mit Zustand ok / hochgerechnet / keine Daten

Die Flaechen im Sonnenring der Uebersicht kommen jetzt aus demselben
Katalog.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 17:56:37 +02:00
co-authored by Claude Opus 5
parent a59277e33e
commit de2892f7a7
9 changed files with 834 additions and 230 deletions
+21 -8
View File
@@ -48,6 +48,24 @@ const ENERGIEFLUSS_KATALOG = (function () {
const kw = w => (Math.abs(w) / 1000).toFixed(1).replace(".", ",");
/** Flächen des Sonnenrings aus anlageKatalog.js - fehlt der, feste Vorgabe. */
function flaechenAusAnlage() {
if (typeof ANLAGE_KATALOG === "undefined") {
return [
{ name: "Dach", von: 0, bis: 1, farbe: "#f7c000" },
{ name: "Veranda", von: 2, bis: 13, farbe: "#f78d00" },
{ name: "Carport", von: 14, bis: 33, farbe: "#f75a1e" },
];
}
return ANLAGE_KATALOG.flaechen.map(f => {
const eingaenge = [
...ANLAGE_KATALOG.platten.filter(p => p.flaeche === f.id).map(p => p.eingang),
...ANLAGE_KATALOG.strings.filter(s => s.flaeche === f.id).map(s => s.eingang),
];
return { name: f.name, von: Math.min(...eingaenge), bis: Math.max(...eingaenge), farbe: f.farbe };
}).filter(f => isFinite(f.von));
}
const wallboxZeichen = (modus, stecker, gesperrt) => {
const z = [];
if (modus === "Eco") z.push({ art: "eco", titel: "Eco-Modus" });
@@ -65,14 +83,9 @@ const ENERGIEFLUSS_KATALOG = (function () {
eltern: "wr", x: 180, y: 130, skala: 15000,
klick: { ansicht: "anlage" },
// Welche Einträge von solarManager/P_PVn zu welcher Fläche gehören.
// Reihenfolge wie in solarManager.py.
optionen: {
flaechen: [
{ name: "Dach", von: 0, bis: 1, farbe: "#f7c000" },
{ name: "Veranda", von: 2, bis: 13, farbe: "#f78d00" },
{ name: "Carport", von: 14, bis: 33, farbe: "#f75a1e" },
],
},
// Vorgabe aus dem Anlagenkatalog, damit die Zuordnung nur einmal
// gepflegt wird; in den Einstellungen überschreibbar.
optionen: { flaechen: flaechenAusAnlage() },
lesen(m, opt) {
const pvn = m.json("solarManager/P_PVn") || [];
const pv = m.zahl("solarManager/P_PV");