Raeume ohne Kachel: Kueche EG und die beiden Technikraeume

Die Zuordnung der restlichen Geraete lief gegen eine Luecke im Raummodell:
rooms.php kannte nur Raeume, die eine Kachel im Grundriss haben - also
Raeume mit Thermostat. Die Kueche im EG hat keines, und die Stromzaehler
und der Wasserzaehler sitzen in Technikraeumen, die dort ebenfalls fehlten.

Ein Raum ohne x/y ist jetzt trotzdem ein Raum: Geraete lassen sich ihm
zuordnen, er erscheint nur nicht im Grundriss. roomsOnFloor() liefert
weiterhin nur Raeume mit Kachel - alles, was zeichnet oder aktualisiert,
geht darueber -, allRooms() liefert fuer die Zuordnung alle. Die
Aktualisierungsschleife im Browser bekommt ausdruecklich nur die
Kachel-Raeume; ein Raum ohne Position haette dort keine Elemente zu fuellen.

Neu eingetragen: EG/Kueche, EG/Technik, UG/Technik.

Damit sind 49 der 54 Geraete einem Raum zugeordnet. Offen bleiben mit
Absicht: Alarm (hausweit), Zeitpunkt (gerechnet), Thermostat EG
Unkonfiguriert (laut eigenem Namen) und die beiden Dachfenster, deren Raum
noch niemand genannt hat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-31 16:33:34 +02:00
co-authored by Claude Opus 5
parent 4b47372015
commit bed1884b04
3 changed files with 35 additions and 5 deletions
+33 -3
View File
@@ -10,7 +10,14 @@
* floor Etage; bestimmt zugleich den Zweig Raumtemp/<floor>/
* mqtt Name des Raums im MQTT-Baum: Raumtemp/<floor>/<mqtt>/...
* id Kürzel in den SVG-Element-IDs: <floor>_tmp_<id>, <floor>_<id>_heater
* x, y Position der Kachel im SVG (viewBox 400x300)
* x, y Position der Kachel im SVG (viewBox 400x300) - fehlt bei Räumen
* ohne Kachel
*
* Ein Raum ohne x/y ist trotzdem ein Raum: Geräte lassen sich ihm zuordnen
* (siehe die Spalte actors.room und den Zuordnungsdialog in der Karte
* "Automatismen"), er erscheint nur nicht als Kachel im Grundriss. Das
* betrifft Räume ohne Thermostat - die Küche im EG, die Technikräume -,
* deren Kachel eine Temperatur anzeigen würde, die niemand misst.
*/
// Reihenfolge im Menü und in der Anzeige; OG ist die Standardetage.
@@ -27,15 +34,38 @@ $rooms = [
["floor" => "EG", "mqtt" => "Schlafen", "id" => "schlafen", "x" => 235, "y" => 80],
["floor" => "EG", "mqtt" => "Bad", "id" => "bad", "x" => 253, "y" => 130],
["floor" => "EG", "mqtt" => "Magdalena", "id" => "buero", "x" => 258, "y" => 180],
["floor" => "EG", "mqtt" => "Kueche", "id" => "kueche"],
["floor" => "EG", "mqtt" => "Technik", "id" => "technik"],
["floor" => "UG", "mqtt" => "Buero", "id" => "buero", "x" => 140, "y" => 140],
["floor" => "UG", "mqtt" => "Bad", "id" => "bad", "x" => 210, "y" => 80],
["floor" => "UG", "mqtt" => "Kueche", "id" => "kueche", "x" => 190, "y" => 195],
["floor" => "UG", "mqtt" => "Technik", "id" => "technik"],
];
/** Räume einer Etage, in der Reihenfolge der Tabelle. */
/**
* Räume einer Etage, die eine Kachel im Grundriss haben.
*
* Alles, was zeichnet oder aktualisiert, geht hierüber - ein Raum ohne
* Position hätte keine Stelle im SVG und keine Elemente, die sich füllen
* liessen.
*/
function roomsOnFloor($floor)
{
return array_values(array_filter($GLOBALS["rooms"], function ($room) use ($floor) {
return $room["floor"] == $floor;
return $room["floor"] == $floor && isset($room["x"]);
}));
}
/** Alle Räume, auch die ohne Kachel - für die Geräte-Zuordnung. */
function allRooms()
{
return $GLOBALS["rooms"];
}
/** Nur die Räume mit Kachel, für die Aktualisierungsschleife im Browser. */
function roomsWithTile()
{
return array_values(array_filter($GLOBALS["rooms"], function ($room) {
return isset($room["x"]);
}));
}