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:
@@ -225,7 +225,7 @@ function anzeigeName($name)
|
|||||||
function raumListe()
|
function raumListe()
|
||||||
{
|
{
|
||||||
$liste = [];
|
$liste = [];
|
||||||
foreach ($GLOBALS["rooms"] as $raum) {
|
foreach (allRooms() as $raum) {
|
||||||
$liste[] = [
|
$liste[] = [
|
||||||
"key" => $raum["floor"] . "/" . $raum["mqtt"],
|
"key" => $raum["floor"] . "/" . $raum["mqtt"],
|
||||||
"label" => $raum["floor"] . " · " . $raum["mqtt"],
|
"label" => $raum["floor"] . " · " . $raum["mqtt"],
|
||||||
|
|||||||
+1
-1
@@ -199,7 +199,7 @@
|
|||||||
<script>
|
<script>
|
||||||
// Raumtabelle aus restricted/rooms.php - homeMQTT.js aktualisiert darueber
|
// Raumtabelle aus restricted/rooms.php - homeMQTT.js aktualisiert darueber
|
||||||
// die SVG-Kacheln, ohne die Raeume noch einmal aufzufuehren.
|
// die SVG-Kacheln, ohne die Raeume noch einmal aufzufuehren.
|
||||||
const homeRooms = <?= json_encode($rooms) ?>;
|
const homeRooms = <?= json_encode(roomsWithTile()) ?>;
|
||||||
<?php if ($_GET["floor"] != "OG" && in_array($_GET["floor"], $floors)): ?>
|
<?php if ($_GET["floor"] != "OG" && in_array($_GET["floor"], $floors)): ?>
|
||||||
document.addEventListener('readystatechange', function () {
|
document.addEventListener('readystatechange', function () {
|
||||||
if (event.target.readyState === 'complete') {
|
if (event.target.readyState === 'complete') {
|
||||||
|
|||||||
+33
-3
@@ -10,7 +10,14 @@
|
|||||||
* floor Etage; bestimmt zugleich den Zweig Raumtemp/<floor>/
|
* floor Etage; bestimmt zugleich den Zweig Raumtemp/<floor>/
|
||||||
* mqtt Name des Raums im MQTT-Baum: Raumtemp/<floor>/<mqtt>/...
|
* mqtt Name des Raums im MQTT-Baum: Raumtemp/<floor>/<mqtt>/...
|
||||||
* id Kürzel in den SVG-Element-IDs: <floor>_tmp_<id>, <floor>_<id>_heater
|
* 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.
|
// 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" => "Schlafen", "id" => "schlafen", "x" => 235, "y" => 80],
|
||||||
["floor" => "EG", "mqtt" => "Bad", "id" => "bad", "x" => 253, "y" => 130],
|
["floor" => "EG", "mqtt" => "Bad", "id" => "bad", "x" => 253, "y" => 130],
|
||||||
["floor" => "EG", "mqtt" => "Magdalena", "id" => "buero", "x" => 258, "y" => 180],
|
["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" => "Buero", "id" => "buero", "x" => 140, "y" => 140],
|
||||||
["floor" => "UG", "mqtt" => "Bad", "id" => "bad", "x" => 210, "y" => 80],
|
["floor" => "UG", "mqtt" => "Bad", "id" => "bad", "x" => 210, "y" => 80],
|
||||||
["floor" => "UG", "mqtt" => "Kueche", "id" => "kueche", "x" => 190, "y" => 195],
|
["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)
|
function roomsOnFloor($floor)
|
||||||
{
|
{
|
||||||
return array_values(array_filter($GLOBALS["rooms"], function ($room) use ($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