/ * mqtt Name des Raums im MQTT-Baum: Raumtemp///... * id Kürzel in den SVG-Element-IDs: _tmp_, __heater * 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. Derzeit * hat jeder Raum eine Kachel; die Unterscheidung bleibt, weil ein neuer Raum * zuerst als Zeile ohne Position entsteht und erst dann seinen Platz im * Grundriss bekommt. * * Wo eine Kachel hingehört, misst tools/kachelpositionen.php aus: Grundriss * mit Raster, Geisterkachel am Zeiger, fertige Zeile zum Abschreiben. x/y * ist die linke obere Ecke der 24 x 19 grossen Kachel, nicht ihre Mitte. */ // Reihenfolge im Menü und in der Anzeige; OG ist die Standardetage. $floors = ["OG", "EG", "UG"]; $rooms = [ ["floor" => "OG", "mqtt" => "Wohnzimmer", "id" => "wozi", "x" => 180, "y" => 140], ["floor" => "OG", "mqtt" => "KiZi", "id" => "kizi", "x" => 130, "y" => 80], ["floor" => "OG", "mqtt" => "Schlafzimmer", "id" => "schlafen", "x" => 235, "y" => 70], ["floor" => "OG", "mqtt" => "Bad", "id" => "bad", "x" => 260, "y" => 120], ["floor" => "OG", "mqtt" => "Buero", "id" => "buero", "x" => 265, "y" => 175], ["floor" => "OG", "mqtt" => "Kueche", "id" => "kueche", "x" => 122, "y" => 138], ["floor" => "OG", "mqtt" => "Technik", "id" => "technik", "x" => 173, "y" => 67], ["floor" => "EG", "mqtt" => "Wohnzimmer", "id" => "wozi", "x" => 185, "y" => 150], ["floor" => "EG", "mqtt" => "Florian", "id" => "kizi", "x" => 130, "y" => 90], ["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", "x" => 126, "y" => 146], ["floor" => "EG", "mqtt" => "Technik", "id" => "technik", "x" => 172, "y" => 78], ["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", "x" => 238, "y" => 93], ]; /** * 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 && 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"]); })); }