Raum-Modal fuer Raeume mit Leerzeichen, Messwerte im Aussengelaende
Das Raum-Modal fand die Geraete von "Carport EG" und den fuenf anderen AG-Raeumen mit Leerzeichen nicht - es meldete stattdessen, dem Raum sei nichts zugeordnet. ajax/room.php bereinigte den Schluessel mit [^A-Za-z0-9_] und warf dabei das Leerzeichen weg: aus "AG_Carport EG" wurde "AG_CarportEG", der Vergleich gegen die gespeicherte Zuordnung "AG/Carport EG" ging ins Leere. Aufgefallen ist es erst jetzt, weil sechs von neun AG-Raeumen ein Leerzeichen im Namen haben und keiner der achtzehn auf den anderen Etagen. Durchgespielt: vorher 6 von 27 Raeumen kaputt, danach 0. Messwerte auf den AG-Kacheln, wo es etwas zu messen gibt: Garage solarManager/evPower - die Wattpilot der EG-Partei Carport OG solarManager/evPowerOG - der go-e Charger Garten Wetter/Regen [tage1] - Regen des laufenden Tages Veranda, Terrasse und Pergola behalten ihren Namen: dort haengen Licht und Rollladen, und die zeigt das Raum-Modal. Carport EG bleibt vorerst ohne - die Hoymiles liegen auf solarManager/invertersN, positionsnummeriert, und welcher Strang der Carport ist, steht nirgends im Code. Geraten wird das nicht. tileTopics() zieht Wetter/# von selbst nach, das Abonnement folgt aus dem Topic. Ausserdem der weisse Saum am freigestellten Rendering. Die feste Schwelle liess den ein bis zwei Punkte breiten Uebergang stehen - gemessen 247, 250, 241, 204, 145, und die 241 blieb knapp haengen und leuchtete vor dem schwarzen Grund. Die Flutfuellung frisst jetzt entlang der Kante in immer dunklere Punkte nach und legt zuletzt einen Punkt mit halber Deckung an, damit die Kante nicht treppig wird. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,6 +54,9 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
if (($_GET["action"] ?? "") === "temp") {
|
||||
// Bewusst derselbe Weg wie im alten Thermostat-Modal: das Topic
|
||||
// Raumtemp/<Etage>/<Raum>/changeSetTemp.
|
||||
// Das Leerzeichen muss durch: Raumnamen wie "Carport EG" haben
|
||||
// eines, und ohne es findet der Vergleich weiter unten den Raum
|
||||
// nicht mehr.
|
||||
$raum = preg_replace('/[^A-Za-z0-9_ ]/', '', strval($body["room"] ?? ""));
|
||||
$temp = intval($body["temp"] ?? 0);
|
||||
if ($temp < 10 || $temp > 30) {
|
||||
@@ -78,6 +81,12 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
|
||||
|
||||
// --- Inhalt des Modals ----------------------------------------------------
|
||||
// Das Leerzeichen gehoert zu den erlaubten Zeichen. Ohne es wurde aus
|
||||
// "AG_Carport EG" ein "AG_CarportEG", und der Vergleich gegen die
|
||||
// gespeicherte Zuordnung "AG/Carport EG" ging ins Leere - das Modal meldete
|
||||
// dann "Diesem Raum ist noch nichts zugeordnet". Aufgefallen ist es erst mit
|
||||
// dem Aussengelaende: dort haben sechs von neun Raeumen ein Leerzeichen im
|
||||
// Namen, auf den anderen Etagen keiner von achtzehn.
|
||||
$schluessel = preg_replace('/[^A-Za-z0-9_ ]/', '', strval($_GET["room"] ?? ""));
|
||||
$teile = explode("_", $schluessel, 2);
|
||||
$etage = $teile[0] ?? "";
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 871 KiB After Width: | Height: | Size: 867 KiB |
+31
-7
@@ -85,10 +85,13 @@ $rooms = [
|
||||
"einheit" => "W", "stellen" => 0, "gross" => true],
|
||||
["topic" => "wasser/main/value", "einheit" => "m³", "stellen" => 1],
|
||||
]],
|
||||
// Außengelände: noch ohne x/y, es gibt ja keinen Lageplan, auf den eine
|
||||
// Kachel zeigen könnte. Zuordnen und Automatiken anlegen geht trotzdem -
|
||||
// dafür zählt allein, dass der Raum hier steht. Kommt der Lageplan, sind
|
||||
// es zwei Zahlen je Zeile, gemessen mit tools/kachelpositionen.php.
|
||||
// Außengelände: der Grundriss ist ein freigestelltes Rendering des
|
||||
// Grundstücks (assets/img/AG.png). Die Kachelpositionen sind darauf
|
||||
// eingemessen; nachklicken geht mit tools/kachelpositionen.php.
|
||||
//
|
||||
// Messwerte nur, wo es etwas zu messen gibt: die beiden Wallboxen und
|
||||
// der Regen. Veranda, Terrasse und Pergola tragen ihren Namen - dort
|
||||
// haengen Licht und Rollladen, und die zeigt das Raum-Modal.
|
||||
//
|
||||
// Die Namen stammen von den Geräten selbst: die Hoymiles heißen seit jeher
|
||||
// "Carport 1-6" und "Veranda OG2-4", das Sonnensegel sitzt an der Pergola.
|
||||
@@ -96,7 +99,14 @@ $rooms = [
|
||||
// Etagen. Die Wattpilot der EG-Partei steht dagegen in der Garage, siehe
|
||||
// restricted/config.php; am Carport OG haengt der go-e Charger.
|
||||
["floor" => "AG", "mqtt" => "Carport EG", "id" => "carport_eg", "x" => 156, "y" => 214, "werte" => []],
|
||||
["floor" => "AG", "mqtt" => "Carport OG", "id" => "carport_og", "x" => 38, "y" => 155, "werte" => []],
|
||||
// Am Carport OG haengt der go-e Charger. Die Ladeleistung ist das
|
||||
// Einzige, was sich hier messen laesst - und sie beantwortet die Frage,
|
||||
// die man sich vor dem Carport stellt: laedt gerade jemand?
|
||||
["floor" => "AG", "mqtt" => "Carport OG", "id" => "carport_og", "x" => 38, "y" => 155,
|
||||
"werte" => [
|
||||
["topic" => "solarManager/evPowerOG", "einheit" => "W", "stellen" => 0,
|
||||
"gross" => true],
|
||||
]],
|
||||
// Veranda und Terrasse gibt es zweimal, je Wohnpartei eine. In der
|
||||
// Draufsicht laege das obere Paar genau auf dem unteren - deshalb die
|
||||
// Schraegsicht, siehe restricted/aussenplan.php.
|
||||
@@ -105,10 +115,24 @@ $rooms = [
|
||||
["floor" => "AG", "mqtt" => "Terrasse EG", "id" => "terrasse_eg", "x" => 212, "y" => 160, "werte" => []],
|
||||
["floor" => "AG", "mqtt" => "Terrasse OG", "id" => "terrasse_og", "x" => 205, "y" => 122, "werte" => []],
|
||||
["floor" => "AG", "mqtt" => "Pergola", "id" => "pergola", "x" => 339, "y" => 108, "werte" => []],
|
||||
["floor" => "AG", "mqtt" => "Garage", "id" => "garage", "x" => 103, "y" => 134, "werte" => []],
|
||||
// In der Garage steht die Wattpilot der EG-Partei, siehe fahrzeuge() in
|
||||
// restricted/config.php. Ohne Kuerzel im Topic ist das die EG-Wallbox.
|
||||
["floor" => "AG", "mqtt" => "Garage", "id" => "garage", "x" => 103, "y" => 134,
|
||||
"werte" => [
|
||||
["topic" => "solarManager/evPower", "einheit" => "W", "stellen" => 0,
|
||||
"gross" => true],
|
||||
]],
|
||||
// Der Garten ist kein Bauteil wie die anderen, aber ein Ort: hier haengen
|
||||
// der Regensensor und die beiden Ventilsteuerungen.
|
||||
["floor" => "AG", "mqtt" => "Garten", "id" => "garten", "x" => 288, "y" => 180, "werte" => []],
|
||||
["floor" => "AG", "mqtt" => "Garten", "id" => "garten", "x" => 288, "y" => 180,
|
||||
"werte" => [
|
||||
// gatherRainData.py im SolarManager legt auf Wetter/Regen ein JSON
|
||||
// mit tage1 bis tage7 und dem Stand des Sammlers. "tage1" ist der
|
||||
// laufende Tag - die Zahl, die man im Garten wissen will. Ein
|
||||
// laengeres Fenster ist ein geaenderter Pfad und sonst nichts.
|
||||
["topic" => "Wetter/Regen", "pfad" => "tage1", "einheit" => "mm",
|
||||
"stellen" => 1, "gross" => true],
|
||||
]],
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user