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:
+33
-3
@@ -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"]);
|
||||
}));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user