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
+24 -12
View File
@@ -316,22 +316,29 @@ function kachelQuelle(wert) {
* und aus drei Kuerzeln wuerden drei Zeilen.
*/
function kachelWertKurz(wert, kachel) {
if (wert.wechselrichter) {
const n = wert.wechselrichter.length;
return "Wechselrichter (" + n + ")";
}
const treffer = katalogTreffer(wert);
const einheit = wert.format === "leistung" ? "W/kW" : (wert.einheit || "");
if (treffer) {
const treffer = wert.wechselrichter ? null : katalogTreffer(wert);
let text;
if (wert.wechselrichter) {
text = "Wechselrichter (" + wert.wechselrichter.length + ")";
} else if (treffer) {
// Das Geraet steht nur dabei, wenn es ein fremdes ist - im eigenen Raum
// waere es auf jeder Zeile dasselbe Wort.
const fremd = !kachel || treffer.geraet.raum !== kachel.name;
return (fremd ? treffer.geraet.label + " · " : "") + treffer.wert.name
text = (fremd ? treffer.geraet.label + " · " : "") + treffer.wert.name
+ (einheit ? " " + einheit : "");
} else {
const topic = wert.topic || "";
const teile = topic.split("/");
text = teile[teile.length - 1] || topic;
if (wert.pfad) text += " · " + wert.pfad;
if (einheit) text += " " + einheit;
}
const topic = wert.topic || "";
const teile = topic.split("/");
let text = teile[teile.length - 1] || topic;
if (wert.pfad) text += " · " + wert.pfad;
return einheit ? text + " " + einheit : text;
// Das Minus steht vorne, wie es auf der Kachel auch stuende - und zwar bei
// jeder Herkunft, deshalb erst hier und nicht in den drei Zweigen.
return wert.negativ ? "" + text : text;
}
/** Eine Kachel im Modell finden. */
@@ -575,6 +582,10 @@ function kachelWertZeile(wert, i, kachel) {
+ '<label title="Leistung: skaliert selbst zwischen W und kW">'
+ '<input type="checkbox" class="form-check-input" data-feld="format"'
+ (wert.format === "leistung" ? " checked" : "") + "> kW</label>"
+ '<label title="Vorzeichen umdrehen - für Zähler, die verkehrt herum'
+ ' eingebaut sind">'
+ '<input type="checkbox" class="form-check-input" data-feld="negativ"'
+ (wert.negativ ? " checked" : "") + "> negativ</label>"
+ '<label title="Die Zahl steht gross auf der Kachel">'
+ '<input type="checkbox" class="form-check-input" data-feld="gross"'
+ (wert.gross ? " checked" : "") + "> groß</label>"
@@ -638,6 +649,7 @@ function kachelWertLesen(feldZeile) {
}
const icon = (hol("icon") || "").trim();
if (icon) wert.icon = icon;
if (hol("negativ")) wert.negativ = true;
if (hol("gross")) wert.gross = true;
return wert;
}