Darstellung Sonnenbatterie

Begonnen von dennis_n, 11 März 2021, 10:33:34

Vorheriges Thema - Nächstes Thema

docolli

#195
Vielen Dank für die rasche und umfassende Umsetzung der Ideen in deinen Zweig!

Ich muss damit auch Tester der ersten Stunde sein. 8) Sieht prima aus, gerade die Idee mit dem roten Strich und Pfeil zur Darstellung des exakten Ladezustands ist super!

Leider schaffe ich es nicht die Summenwerte und car-temp und car-soc darstellen zu lassen. Die kommen bei mir nicht.

<ftui-pvvis
  [charge-discharge]="E3DC_S10E:Batterieleistung"
  [soc]="E3DC_S10E:Batterieladezustand"
  [produce]="E3DC_S10E:Solarleistung"
  [wb-feed]="E3DC_S10E:Wallboxleistung"
  [pv-forecast]="E3DC_S10E:Ertragsprognose | fix(1)"
  [pv-prod-tdy]="E3DC_S10E:Solarleistung_today | multiply(0.001) | round(1) | fix(1)"
  [home-consume-tdy]="E3DC_S10E:Hausleistung_today | multiply (0.001) | round(1) | fix(1)"
  [grid-feed-tdy]="Stromzaehler:Einspeisung_today | fix(3)"
  [grid-consume-tdy]="Stromzaehler:Netzbezug_today | fix(3)"
  pvmax="10000"
  battmax="13000"
  calc-bat-remain-time="1"
  [feed-receive]="Stromzaehler:Itron_Power_cur | multiply(-1)"
  [car-soc]="NissanZE1:BatterySOC | part(1)"
  [car-temp]="NissanZE1:CabinTemp | fix(1)"
  unit-car-soc="%"
  no-wb-in-home="1"
  sun-icon="sun"
  grid-icon="pylon2"
  flow-threshold="10"
  unit-soc="%"
  unit-sum="kWh"
  unit-value="W"
  width="290px"
  margin="3px 0 0 0"
  class="size-3">
</ftui-pvvis>


Edit: definiere ich z.B. pv-forecast="10.5", so wird ein Wert angezeigt.

Unterhalb des Akkus schaffe ich es auch nicht, die Restladung in kWh anzeigen zu lassen, wenn ich soc in % übergebe. Vielleicht sollten wir calc-bat-remain-soc-not-percent umbenennen in soc-not-percent. Somit könnte man die Info, dass der soc in % übergeben wurde nicht nur für die bat-remain Berechnung benutzen, sondern auch für die Anzeige unterhalb der Batterie. Ist unit-soc="kWh" (also die Einheit, die unterhalb der Batterie angezeigt werden soll) und soc-not-percent=false, so wird der angezeigte Wert aus battmax und soc errechnet (in kWh). Oder wir definieren noch einen Parameter unit-bat und der wird dann als Kriterium zur evetuell notwendigen soc Umrechung herangezogen.

yersinia

Zitat von: docolli am 18 November 2022, 15:57:09Leider schaffe ich es nicht die Summenwerte darstellen zu lassen. Die kommen bei mir nicht.
Kommentiere mal testhalber Zeile 391 diese Prüfung aus:
//    if(!isNaN(val)) { val = parseFloat(val); }
Ich denke, dass die hier nicht (mehr) benötigt wird.

Zitat von: docolli am 18 November 2022, 15:57:09Unterhalb des Akkus schaffe ich es auch nicht, die Restladung in kWh anzeigen zu lassen, wenn ich soc in % übergebe.
Das ist so auch nicht vorgesehen. soc nimmt jeden Wert an; kann also % (0-100) oder irgendein (k)Wh Wert sein (>= 0). Setzt du soc auf was anderes als %, musst du battstep entsprechend anpassen, da die Schwellwerte alle < 100 sind.

Zitat von: docolli am 18 November 2022, 15:57:09Vielleicht sollten wir calc-bat-remain-soc-not-percent umbenennen in soc-not-percent. Somit könnte man die Info, dass der soc in % übergeben wurde nicht nur für die bat-remain Berechnung benutzen, sondern auch für die Anzeige unterhalb der Batterie. Ist unit-soc="kWh" (also die Einheit, die unterhalb der Batterie angezeigt werden soll) und soc-not-percent=false, so wird der angezeigte Wert aus battmax und soc errechnet (in kWh). Oder wir definieren noch einen Parameter unit-bat und der wird dann als Kriterium zur evetuell notwendigen soc Umrechung herangezogen.
Bin ich noch nicht überzeugt. Wenn man den Ladestand in zB Wh darstellen möchte, dann sollte dies auch so an soc aus FHEM heraus übergeben werden.calc-bat-remain-soc-not-percent brauche ich nur, weil ich auf component-seite nicht sicher zwischen % und zB kWh unterscheiden kann und dann die Berechnung für calc-bat-remain-time unschlüssig wird.
Also entweder beispielsweise
[soc]="E3DC_S10E:Batterieladezustand" <!-- zB 12% -->
unit-soc="%"
calc-bat-remain-time

oder
[soc]="E3DC_S10E:Batterieladezustand" <!-- zB 7823Wh -->
unit-soc="Wh"
battstep="21,35,51,75,95"
calc-bat-remain-time
calc-bat-remain-soc-not-percent

oder
[soc]="E3DC_S10E:Batterieladezustand" <!-- zB 7.8kWh -->
unit-soc="kWh"
battstep="0.5,2,5,8,12"
calc-bat-remain-time
calc-bat-remain-soc-not-percent


Oder möchtest du einen prozentualen Wert übergeben und pvvis soll dann selbstständig den Ladestand ausrechnen? Das sollte imho aus dem FHEM-Device kommen....



Btw, du kannst dir die ="1" Zuweisungen bei den Parametern sparen - die sind wahr wenn gesetzt:
<ftui-pvvis
  [charge-discharge]="E3DC_S10E:Batterieleistung"
  [soc]="E3DC_S10E:Batterieladezustand"
  [produce]="E3DC_S10E:Solarleistung"
  [wb-feed]="E3DC_S10E:Wallboxleistung"
  [pv-forecast]="E3DC_S10E:Ertragsprognose | fix(1)"
  [pv-prod-tdy]="E3DC_S10E:Solarleistung_today | multiply(0.001) | round(1) | fix(1)"
  [home-consume-tdy]="E3DC_S10E:Hausleistung_today | multiply (0.001) | round(1) | fix(1)"
  [grid-feed-tdy]="Stromzaehler:Einspeisung_today | fix(3)"
  [grid-consume-tdy]="Stromzaehler:Netzbezug_today | fix(3)"
  pvmax="10000"
  battmax="13000"
  calc-bat-remain-time
  [feed-receive]="Stromzaehler:Itron_Power_cur | multiply(-1)"
  [car-soc]="NissanZE1:BatterySOC | part(1)"
  [car-temp]="NissanZE1:CabinTemp | fix(1)"
  unit-car-soc="%"
  no-wb-in-home
  sun-icon="sun"
  grid-icon="pylon2"
  flow-threshold="10"
  unit-soc="%"
  unit-sum="kWh"
  unit-value="W"
  width="290px"
  margin="3px 0 0 0"
  class="size-3">
</ftui-pvvis>
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

docolli

Zitat von: yersinia am 18 November 2022, 16:23:20
Kommentiere mal testhalber Zeile 391 diese Prüfung aus:
//    if(!isNaN(val)) { val = parseFloat(val); }
Ich denke, dass die hier nicht (mehr) benötigt wird.

Hilft leider auch nicht...

Zitat von: yersinia am 18 November 2022, 16:23:20
Oder möchtest du einen prozentualen Wert übergeben und pvvis soll dann selbstständig den Ladestand ausrechnen? Das sollte imho aus dem FHEM-Device kommen....

Okay, ich packs als user-reading ins FHEM-Device.

Zitat von: yersinia am 18 November 2022, 16:23:20
Btw, du kannst dir die ="1" Zuweisungen bei den Parametern sparen - die sind wahr wenn gesetzt:

Ahh, wieder was gelernt!

yersinia

Zitat von: docolli am 18 November 2022, 16:31:28Hilft leider auch nicht...
Dann liegt es vermutlich an der späten Werte-Verfügbarkeit. Setz in der js unter get properties() die Werte auf 0:
      gridConsumeTdy: -1,
      gridFeedTdy: -1,
      homeConsumeTdy: -1,
      pvForecast: -1,
      pvProdTdy: -1,

Möglicherweise werden die Texte bereits frühzeitig ausgeblendet bevor überhaupt überschrieben werden können.

Weiterhin kannst du in Zeile 391 folgendes anfügen:
    this.shadowRoot.getElementById(obj).style.display = "unset";

Wenn das nicht hilft brauch ich die Werte nach den pipes und einen Auszug der Web-Developer-Analyze Funktion.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

docolli

#199
Zitat von: yersinia am 18 November 2022, 16:37:29
Dann liegt es vermutlich an der späten Werte-Verfügbarkeit. Setz in der js unter get properties() die Werte auf 0:
      gridConsumeTdy: -1,
      gridFeedTdy: -1,
      homeConsumeTdy: -1,
      pvForecast: -1,
      pvProdTdy: -1,

Möglicherweise werden die Texte bereits frühzeitig ausgeblendet bevor überhaupt überschrieben werden können.

Auf 0 setzen hat geholfen!

carTemp kann ich aber nicht auf 0 setzen, das kann im Winter ein gültiger Wert sein.

yersinia

Zitat von: docolli am 18 November 2022, 16:48:10Auf 0 setzen hat geholfen!
Gut zu wissen. Danke fürs testen.

Kannst du noch testen, wenn du diese Werte wieder auf -1 setzt und dafür
Zitat von: yersinia am 18 November 2022, 16:37:29Weiterhin kannst du in Zeile 391 folgendes anfügen:
    this.shadowRoot.getElementById(obj).style.display = "unset";
setzt?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

docolli

Zitat von: yersinia am 18 November 2022, 16:49:37
Gut zu wissen. Danke fürs testen.

Kannst du noch testen, wenn du diese Werte wieder auf -1 setzt und dafürsetzt?

  powerVals(val, obj, preHtml) {
    // if(!isNaN(val)) { val = parseFloat(val); }
this.shadowRoot.getElementById(obj).style.display = "unset";
    this.shadowRoot.getElementById(obj).innerHTML = preHtml + val;
    if(this.unitSum) { this.shadowRoot.getElementById(obj).innerHTML += '<tspan class="pvvis-txt-unit-power">' + this.unitSum + '</tspan>'; }
  }


Setze ich carSoc zurück auf "-1", ist die Anzeige wieder weg.

yersinia

Das ist interessant. ich schau es mir mal an. Danke für die Rückmeldung.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

docolli

#203
Übergebe ich den soc jetzt als kWh und definiere ich battstep, so stimmt die rote Linie und remain time noch nicht!
Ich habe in meinem Code den kleinsten und größten Wert aus dem battstep Array ermittelt und normiere darauf.


const batStepRange = Math.max.apply(null, arrStep) - Math.min.apply(null, arrStep);
const batFillPercent = (this.soc - Math.min.apply(null, arrStep))/batStepRange;


Andere Unschönheiten siehe Bild  ;)
Beim Entladen blinkt kein Segment der Batterie, wenn ich soc in Wh übergebe.
Edit: -> Ursache battstep definiert in kWh, nun übergebe ich aber Wh (!), muss also battstep="500,2000,5000,8000,12000" sein.

Edit: Problem ist vermutlich, dass battmax in "Wh" übergeben wird. Ich aber die Batteriekapazität mittels unit-soc="kWh" in kWh haben will. Da passt dann die Berechnung nicht.
-> Getestet mit soc in Wh -> Stimmt! Dann ist die Anzeige in Ordnung. Ich kann mit Wh unterhalb der Batterie leben.

Hmm, wie lösen wir das nun wieder? Die Einheiten von batmax und soc müssen aktuell übereinstimmen. Da die anderen Flusswerte auch in W sind, sollten wir hier auch Wh als Übergabewert fordern. Oder unit-value muss gesetzt sein, sowie unit-soc und wenn einer "W" und der andere "kWh" ist, muss letzterer intern in Wh umgerechnet werden, aber in "kWh" angezeigt.

Edit2: Ja, das Problem habe ich verursacht als ich angefangen habe mit den Werten zu rechnen. Vorher war die Einheit von soc und den anderen Werten egal, die wurden nur an passender Stelle mit oder ohne Einheit dargestellt. Sobald man rechnet, wird aber die Einheit der übergebenen Werte wichtig. Ist wie früher im Physikunterricht: Die korrekten Einheiten sind wichtiger als die Zahlen...


  • Wir definieren interne Standardeinheiten für die Werte (z.B. W, Wh oder %).
  • Für die Wertegruppen muss man die Einheit des übergebenen Wertes definieren (gerade bei der Übergabe des soc als relativer Wert in % oder Wh/kWh wichtig)
  • Es gibt eine Funktion, welche die übergebenen Werte in die internen Standardeinheiten umrechnet.
  • Man kann noch definieren, welche Ausgabeeinheit man haben will. Dann wird wieder passend umgerechnet. Hier sollte für den soc (wenn battmax definiert) auch von % in Wh/kWh bzw. von Wh/kWh in % möglich sein.

Man kann die ganze Rechnerei aber auch ganz pragmatisch ins FHEM-Device verweisen und pvvis stellt nur die Ergebnisse grafisch passend dar. ;)

docolli

Wenn ich die Parameter fix definiere, so passt die Darstellung (links). Kommen die Werte jedoch aus einem FHEM-Device, so funktioniert einiges nicht mehr wie gewünscht. Hier z.B. das "Hochschubsen" des Hausverbrauchs.

Ich habe zusätzlich in der CSS kleine Änderungen vorgenommen, mir waren die Summenwerte einfach zu groß in Relation zu den aktuellen Werten.

.pvvis-text2 {
  text-anchor: start;
  font-size: clamp(14px, 100%, 0.8rem);
  fill: var(--pvvis-color-grey, grey);
}


Auch der Batteriewert des Autos sollte gleich groß sein, wie der Batteriewert vom Haus

#bat-val-txt,
#pvvis-car-bat-val-txt {
  text-anchor: middle;
  font-size: clamp(12px, 100%, 1rem);
  fill: var(--pvvis-color-grey, #ccc) !important;

#pvvis-car-temp-val-txt {
  text-anchor: middle;
  font-size: clamp(12px, 100%, 0.8rem);
  fill: var(--pvvis-color-grey, #ccc) !important;
}

docolli

Meine letzte Anregung für heute  ::)

Den Füllstand des Autos farbig innerhalb des Autos anzuzeigen finde ich super cool. Nur die Farben gefallen mir noch nicht.
Könnte man den farbigen Gradienten, wie bei der Hausbatterie auch, auf den gefüllten Teil des Autos übertragen?

Wenn geladen wird, dann könnte der obere (noch nicht geladene) Teil des Autos blinken, wie bei der Hausbatterie auch.

.pvvis-batbar-blink,
.pvvis-batcar-blink {
  -webkit-animation: pvvis-blink 2s infinite both;
  animation: pvvis-blink 2s infinite both;
}


  colorCar() {
    if(this.carSoc > -1) { //add wbFeed
        this.shadowRoot.getElementById("pvvis-car-bat-val-txt").innerHTML = this.carSoc.toFixed();
        if(this.unitCarSoc) { this.shadowRoot.getElementById("pvvis-car-bat-val-txt").innerHTML += '<tspan class="pvvis-txt-unit-car">' + this.unitCarSoc + '</tspan>'; }
    this.shadowRoot.getElementById("pvvis-car-fill-bottom").style.display = 'unset';
    this.shadowRoot.getElementById("pvvis-car-fill-bottom").setAttribute("y", ("" + (100 - this.carSoc) + "%"));
this.shadowRoot.getElementById("pvvis-car-fill-top").classList.add("pvvis-batcar-blink");
    }
    if((this.carSoc > -1) && (this.wbFeed <= 0)) {
this.shadowRoot.getElementById("pvvis-car-fill-bottom").style.fill = 'var(--pvvis-color-yellow, #436c3a)';
this.shadowRoot.getElementById("pvvis-car-fill-top").classList.remove("pvvis-batcar-blink");
}
    if((this.carSoc < 0) && (this.wbFeed > 0)) {
this.shadowRoot.getElementById("pvvis-car-fill-top").style.fill = 'var(--pvvis-color-green, #090)';
    }
  }

yersinia

#206
Zitat von: docolli am 18 November 2022, 17:09:49Edit2: Ja, das Problem habe ich verursacht als ich angefangen habe mit den Werten zu rechnen. Vorher war die Einheit von soc und den anderen Werten egal, die wurden nur an passender Stelle mit oder ohne Einheit dargestellt. Sobald man rechnet, wird aber die Einheit der übergebenen Werte wichtig. Ist wie früher im Physikunterricht: Die korrekten Einheiten sind wichtiger als die Zahlen...


  • Wir definieren interne Standardeinheiten für die Werte (z.B. W, Wh oder %).
  • Für die Wertegruppen muss man die Einheit des übergebenen Wertes definieren (gerade bei der Übergabe des soc als relativer Wert in % oder Wh/kWh wichtig)
  • Es gibt eine Funktion, welche die übergebenen Werte in die internen Standardeinheiten umrechnet.
  • Man kann noch definieren, welche Ausgabeeinheit man haben will. Dann wird wieder passend umgerechnet. Hier sollte für den soc (wenn battmax definiert) auch von % in Wh/kWh bzw. von Wh/kWh in % möglich sein.

Man kann die ganze Rechnerei aber auch ganz pragmatisch ins FHEM-Device verweisen und pvvis stellt nur die Ergebnisse grafisch passend dar. ;)
Ich möchte eigentlich nicht auf pvvis-Seite noch großartig umrechnen - ich weiss nicht, welche Anlagen die User haben. Von daher sollte es, wenn pvvis rechnet, einheitliche Einheiten sein: soc, battstep und battmax müssen gleich sein wenn alle Wh nutzen; egal ob mWh, kWh oder GWh. soc und battstep haben eine direkte Beziehung zur Anzeige des Füllstands - beide brauche gleiche Einheiten, egal ob % oder xWh oder nüsse oder broteinheiten. battmax bezieht sich auf die Rechnung - also auch des ladeparameters [charge-discharge]: wenn du in Wh lädst, muss battmax auch in Wh angegeben werden.
Die loadfloaws und alle Anzeige dazu müssen mit pvmax harmonieren. Bisher ging ich von Wh aus (oder sowas ähnliches), demnach muss auch dies alles in einer Einheit geführt werden.
Die Summenwerte werden nur angezeigt, also weitergereicht.
car-soc ist ebenso nur ein Prozentwert.
pvvis zeigt ja nur an, also ja, die Werte entsprechend in FHEM oder via pipe vorbereiten.

Zitat von: docolli am 19 November 2022, 09:32:31Wenn ich die Parameter fix definiere, so passt die Darstellung (links). Kommen die Werte jedoch aus einem FHEM-Device, so funktioniert einiges nicht mehr wie gewünscht. Hier z.B. das "Hochschubsen" des Hausverbrauchs.
Ich denke, ich hab es etwas zu kompliziert versucht. Ich wollte auch alle nicht benötigten Texte ausblenden, dies ist aber wohlmöglich nicht nötig.

Zitat von: docolli am 19 November 2022, 09:32:31Ich habe zusätzlich in der CSS kleine Änderungen vorgenommen, mir waren die Summenwerte einfach zu groß in Relation zu den aktuellen Werten.

Auch der Batteriewert des Autos sollte gleich groß sein, wie der Batteriewert vom Haus
Danke, an vernünftige Textgrößen müssen wir uns erst noch rantesten, insbesondere weiss ich nicht, was für Werte zu erwarten sind.

Zitat von: docolli am 19 November 2022, 10:04:50Meine letzte Anregung für heute  ::)
Sicher?  ;D

Zitat von: docolli am 19 November 2022, 10:04:50Den Füllstand des Autos farbig innerhalb des Autos anzuzeigen finde ich super cool. Nur die Farben gefallen mir noch nicht.
Könnte man den farbigen Gradienten, wie bei der Hausbatterie auch, auf den gefüllten Teil des Autos übertragen?
Keine schlechte Idee - aber den Teil dann grau blinken lassen? ich weiss nicht, dann doch lieber grün?
Insgesamt war das eine Spielerei mit dem Auto und dem Füllstand. Mir ist das aber noch nicht genau genug. Bei 75% ist das Auto fast ausgefüllt, das ist visuell irgendwie komisch. Das liegt aber an der Art und Weise, wie die rechtecke drübergelegt werden.

Mal schauen, vielleicht fällt mir noch was dazu ein. Oder dir. ;D

Anbei ein neuer Wurf mit deinen Änderungen (nochmals VIELEN DANK fürs Testen und das konstruktive Feedback!).
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

docolli

#207
Nachdem wir wirklich nicht wissen können, welche Einheiten die user anliefern, wird das mit dem Umrechnen in pvvis nichts. Das sehe ich ein. Sowas muss dann ins FHEM-Device / pipe ausgelagert werden. Wichtig für die Doku von pvvis ist, das diese Zusammenhänge klar kommuniziert werden, also welche Werte in identischen Einheiten übergeben werden müssen.

Ich werde deine neue Version nachher noch testen. Mir ist auch aufgefallen, dass der Füllstand des Autos sich komisch verhält. Ich hätte da einen Vorschlag  ::)

Das Auto im SVG Code besser auf x=0/y=0 positionieren.

      <defs>
    <clipPath id="pvvis-car-template">
                <path d="m501.4 112h-60l-17-42c-17-43-58-70-104-70h-127c-46 0-87 28-104 70l-17 42h-60c-7.8 0-14 7.3-12 15l6 24c1.3 5.3 6.1 9.1 12 9.1h20c-13 12-22 29-22 48v48c0 16 6.2 31 16 42v54c0 18 14 32 32 32h32c18 0 32-14 32-32v-32h256v32c0 18 14 32 32 32h32c18 0 32-14 32-32v-54c9.8-11 16-26 16-42v-48c0-19-8.6-36-22-48h20c5.5 0 10-3.8 12-9.1l6-24c1.9-7.6-3.8-15-12-15zm-352-18c7.3-18 25-30 45-30h127c20 0 37 12 45 30l20 50h-256zm-52 162c-19 0-32-13-32-32s13-32 32-32c19 0 48 29 48 48s-29 16-48 16zm320 0c-19 0-48 3.2-48-16s29-48 48-48 32 13 32 32-13 32-32 32z"/>
    </clipPath>
      </defs>


Es muss dadurch etwas anders positioniert werden

.pvvis-car {
  transform: translate(6px, 316px) scale(0.16);
}


Trotzdem sind es von unten bis ganz oben gefüllt nur 95% und nicht 100%. Somit muss der Code, der den Füllstand aus carSoc berechnet etwas angepasst werden. Zusätzlich habe ich eine etwas andere Füllfarbe gewählt, das ist aber Geschmackssache.

  colorCar() {
    if(this.carSoc > -1) { //add wbFeed
        this.shadowRoot.getElementById("pvvis-car-bat-val-txt").innerHTML = this.carSoc.toFixed();
        if(this.unitCarSoc) { this.shadowRoot.getElementById("pvvis-car-bat-val-txt").innerHTML += '<tspan class="pvvis-txt-unit-car">' + this.unitCarSoc + '</tspan>'; }
    this.shadowRoot.getElementById("pvvis-car-fill-bottom").style.display = 'unset';
    this.shadowRoot.getElementById("pvvis-car-fill-bottom").setAttribute("y", ("" + (95 - this.carSoc*0.95) + "%"));
this.shadowRoot.getElementById("pvvis-car-fill-top").classList.add("pvvis-batcar-blink");
    }
    if((this.carSoc > -1) && (this.wbFeed <= 0)) {
this.shadowRoot.getElementById("pvvis-car-fill-bottom").style.fill = 'var(--pvvis-color-yellow, #436c3a)';
this.shadowRoot.getElementById("pvvis-car-fill-top").classList.remove("pvvis-batcar-blink");
}
    if((this.carSoc < 0) && (this.wbFeed > 0)) {
this.shadowRoot.getElementById("pvvis-car-fill-top").style.fill = 'var(--pvvis-color-green, #090)';
    }
  }


So, jetzt hoffe ich ich habe Dir alle relevanten Änderungen mitgeteilt.  Du siehst im Bild, das bei 2% grad so die Reifen grün werden und bei 98% nur noch ein bisschen Dach grau bleibt.
Aber du hast Recht, das sollte dann auch hell/dunkegrün blinken. Konsequenterweise müsste man sich an der anderen Batterie orientieren. Eigentlich müsste ums Auto auch ein Rahmen, der grau oder grün wird, aber ich bin ja schon still.... :-X ;D

docolli

Hi @yersinia,

hier für Dich mal realistische Werte für die einzelnen PV Parameter.

Hausanlage

ich habe 12,5kWp auf dem Dach, verteilt in SO und NW Ausrichtung, somit erzeuge ich Mittags nicht so brutal viel Überschusstrom, sondern die Erzeugung verteilt sich breiter über den Tag. Zusätzlich steht ein guter 10kWh Speicher im Keller, der auch ordentlich Leistung aufnehmen und abgeben kann.
Hier mal typische Werte für einen Sonnentag:

produce = max. 9000W, kurze Spitzen bis 12000W möglich (also bis zu 5stellig)
charge/discharge = max. 4500W (der Akku hat ordentlich Leistung) (max. 4stellig)
soc = 0-100% bzw. 0 bis 13000Wh (Vollausbau Akkuspeicher) (bis zu 5 stellig)
wb-feed = max. 11000W (Standard 3phasige Wallbox), es gibt aber auch welche mit 22000W für Zuhause  (bis zu 5 stellig)
feed-receive = [Hausverbrauch] (4-5 stellig) + [wb-feed] (bis zu 5 stellig)
pv-prod-tdy = bis zu 80 kWh an einem sehr sonnigen, langen Tag (1 Nachkommastelle reicht)
pv-forecast = bis zu 80 kWh an einem sehr sonnigen, langen Tag (1 Nachkommastelle reicht)
home-consume-tdy = typ. 10-15kWh, aber wenn E-Auto lädt (und jemach noch eine WP hat), dann kann es durchaus ~100kWh sein
grid-consume-tdy = kann bis zu max. home-consume-tdy sein, also 100kWh (3 Nachkommastellen, da es sein kann, man bezieht nur wenig [z.B. 20W] pro Tag)
grid-feed-tdy = kann bis zu max. pv-prod-tdy, also 80kWh (3 Nachkommastellen, da es sein kann, man speist nur wenig [z.B. 20W] pro Tag ein)

Industrieanlage
Unsere Firma hat das komplette Hallendach voll PV, da geht schon was anderes, zusätzlich verbrauchen die Maschinen viel.

produce = bis zu 5stellig
charge/discharge = max. 7500W (3x Akku á 2500W) (max. 4stellig)
soc = 0-100% bzw. 0 bis 30000Wh (bis zu 5 stellig)
feed-receive = [Hausverbrauch] (4-5 stellig)
pv-prod-tdy = bis zu 500 kWh an einem sehr sonnigen, langen Tag (1 Nachkommastelle reicht)
pv-forecast = bis zu 500 kWh an einem sehr sonnigen, langen Tag (1 Nachkommastelle reicht)
home-consume-tdy = typ. 300-600kWh,
grid-consume-tdy =kann bis zu max. home-consume-tdy sein, also 600kWh (3 Nachkommastellen, da es sein kann, man bezieht nur wenig [z.B. 20W] pro Tag)
grid-feed-tdy = kann bis zu max. pv-prod-tdy sein, also 5stellig (3 Nachkommastellen, da es sein kann, man speist nur wenig [z.B. 20W] pro Tag ein)

docolli

Ich habe noch einen  Fehler gefunden. Der geht vermutlich auf meine Kappe, das hatte ich meinem Code auch schon mal verwechselt und vermutlich hier so veröffentlicht.  ::)
Die Werte für gridFeedTdy und gridConsumeTdy sind vertauscht und passen nicht zur Logik der Pfeile. Bitte abändern:


        case 'grid-feed-tdy':
                this.powerVals(this.gridFeedTdy.toFixed(3), "pvvis-grid-out-today-txt", "&DoubleLongLeftArrow;&nbsp;&sum;&nbsp;");
        break;
    case 'grid-consume-tdy':
                this.powerVals(this.gridConsumeTdy.toFixed(3), "pvvis-grid-in-today-txt", "&DoubleLongRightArrow;&nbsp;&sum;&nbsp;");
    break;