Kachelwerte koennen das Vorzeichen umdrehen

Ein Zaehler zaehlt in der Richtung, in der er eingebaut ist - einer der
beiden Shelly-Zaehler meldet deshalb mit umgekehrtem Vorzeichen, und auf der
Kachel stand der Verbrauch als Minusleistung.

Neu gibt es dafuer den Schalter "negativ" an jedem Kachelwert. Er sitzt in
der Anzeige und nicht am Zaehler: Automatiken und Statistik lesen dieselbe
Nachricht und rechnen mit dem Vorzeichen, das dort steht - wer es an der
Quelle drehte, verschoebe die Rechnung an einer Stelle, an der niemand
danach sucht.

Gedreht wird vor dem Formatieren, also auch vor der Skalierung zwischen W
und kW und vor den Nachkommastellen. Aus -0 wird wieder 0. Was keine Zahl
ist, bleibt unangetastet und die Kachel zeigt weiter ihren Strich.

In der eingeklappten Kurzfassung steht das Minus vor dem Namen, damit man
ohne Aufklappen sieht, welcher Wert gedreht ist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-08 23:41:18 +02:00
co-authored by Claude Opus 5
parent cd398bc800
commit 060336c891
3 changed files with 42 additions and 12 deletions
+13
View File
@@ -122,6 +122,12 @@ const homeSVG = {
* Wie er dasteht, sagt entweder "format" oder das Paar aus "einheit" und
* "stellen": "stellen" schneidet Nachkommastellen ab, ohne Angabe bleibt
* der Text so, wie das Geraet ihn meldet.
*
* "negativ" dreht das Vorzeichen. Ein Zaehler zaehlt in der Richtung, in
* der er eingebaut ist - einer der beiden meldet den Bezug deshalb mit
* Minus. Das gehoert an die Anzeige und nicht an den Zaehler: die
* Automatiken und die Statistik lesen dieselbe Nachricht und rechnen mit
* dem Vorzeichen, das dort steht.
*/
kachelWert: function (mqttData, wert) {
const roh = wert.wechselrichter
@@ -138,6 +144,13 @@ const homeSVG = {
return null; // noch keine vollstaendige Nachricht
}
}
if (wert.negativ) {
const zahl = Number(text);
if (text === "" || isNaN(zahl)) return null;
// "+ 0" macht aus -0 wieder 0: "-0 W" hat noch niemanden erfreut.
text = String(-zahl + 0);
}
// Leistungen skalieren mit: unter tausend Watt in W, darueber in kW.
// powerToString() aus common.js macht genau das und wird auf der
// Solarseite fuer dieselben Zahlen benutzt - eine eigene Regel hier