Files
Smart-Dashboard/homeMesh_grundriss.sql
T
adminandClaude Opus 5 3636a134d6 Grundriss aus der Datenbank: Etagen und Raeume in homeMesh
Etagen, Raeume, Kachelpositionen und Kachelwerte standen als Tabelle in
restricted/rooms.php, die Werte zusaetzlich ueberschreibbar in
solarLog.kachelWerte. Fuer ein anderes Haus haette man den Quelltext
umschreiben muessen.

Jetzt liegen sie in homeMesh.floors und homeMesh.rooms
(homeMesh_grundriss.sql). rooms.php liest sie und gibt sie in der
bisherigen Form weiter; Startseite, Menue, Editor und Einstellungen sind
unveraendert - vorher und nachher als HTML verglichen, gleich bis auf
Livewerte und die zwei neuen Felder nr und thermostat in homeRooms.

- Vorgabe einer Kachel ist jetzt allein das Thermostat (rooms.thermostat):
  Soll, Ist, Feuchte - sonst nichts. Was bisher im Code als Vorgabe stand,
  gilt damit als selbst gesetzt.
- Grundrissbild je Etage (floors.bild) statt assets/img/<code>.png.
- Standard-Etage (floors.standard) statt "OG" an vier Stellen.
- meshDb() in eigener Datei, sonst Ring zwischen rooms.php und
  automations.php.
- solarLog_kacheln.sql entfaellt; die Tabelle kachelWerte liest niemand mehr.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 10:29:58 +02:00

66 lines
3.9 KiB
SQL

-- ---------------------------------------------------------------------------
-- Grundriss der Home-Ansicht: Etagen, Raeume, Kacheln - Datenbank `homeMesh`
-- ---------------------------------------------------------------------------
-- Vorher stand das alles fest in restricted/rooms.php, und die Werte auf den
-- Kacheln ließen sich getrennt davon in solarLog.kachelWerte ueberschreiben.
-- Fuer ein anderes Haus haette man den Quelltext umschreiben muessen. Jetzt
-- ist es Inhalt: eingestellt unter Einstellungen -> Grundriss, gelesen von
-- rooms.php.
--
-- In homeMesh und nicht in solarLog: actors.room und automations.floor zeigen
-- auf Raeume und Etagen, und Fremdschluessel greifen nur innerhalb einer
-- Datenbank.
--
-- Die Tabellen duerfen leer sein. Dann zeigt die Startseite einen Hinweis auf
-- die Einstellungen statt eines Hauses - das ist der Anfang jeder neuen
-- Installation.
-- ---------------------------------------------------------------------------
SET NAMES utf8mb4;
-- ---------------------------------------------------------------------------
-- Etagen. `code` ist der Schluessel und bleibt es: er steht in URLs
-- (?floor=EG), in SVG-Element-Ids (EG_Info), in automations.floor und im
-- MQTT-Baum. Umbenennen heisst deshalb `label` aendern, nicht `code`.
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `floors` (
`code` varchar(4) NOT NULL COMMENT 'Kuerzel: URL, SVG-Ids, automations.floor. Nach dem Anlegen fest',
`label` varchar(40) NOT NULL COMMENT 'Ausgeschriebener Name, z.B. Erdgeschoss',
`position` int(11) NOT NULL DEFAULT 0 COMMENT 'Reihenfolge in Menue, Reitern und Etagenschaltern',
`bild` varchar(255) DEFAULT NULL COMMENT 'Grundriss relativ zum Web-Root, z.B. tiles/grundriss/EG-1a2b.png. NULL = noch keins',
`standard` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Diese Etage oeffnet, wenn keine gewaehlt ist. Hoechstens eine',
PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
-- ---------------------------------------------------------------------------
-- Raeume. `id` ist die feste Nummer, auf die Geraete zeigen sollen; Name und
-- Kuerzel duerfen sich aendern.
--
-- kuerzel Teil der SVG-Element-Ids: <floor>_w0_<kuerzel>. Je Etage
-- eindeutig, sonst schriebe ein Wert in zwei Kacheln.
-- x, y linke obere Ecke der 24 x 19 grossen Kachel in der 400 x 300
-- grossen Zeichenflaeche. NULL = Raum ohne Kachel.
-- thermostat Zweig der Thermostatwerte, z.B. Raumtemp/EG/Bad. Traegt das
-- Heizsymbol und die Vorgabewerte der Kachel (Soll, Ist,
-- Feuchte). NULL = kein Thermostat.
-- werte JSON-Liste der Kachelwerte (Form siehe restricted/kacheln.php).
-- NULL = die Vorgabe aus dem Thermostat; [] = bewusst kein
-- Messwert, die Kachel traegt nur ihren Namen.
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `rooms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`floor` varchar(4) NOT NULL,
`name` varchar(40) NOT NULL COMMENT 'Anzeigename, z.B. Wohnzimmer',
`kuerzel` varchar(40) NOT NULL COMMENT 'Teil der SVG-Ids, je Etage eindeutig',
`position` int(11) NOT NULL DEFAULT 0 COMMENT 'Reihenfolge innerhalb der Etage',
`x` smallint(6) DEFAULT NULL COMMENT 'Kachel: linke obere Ecke, NULL = keine Kachel',
`y` smallint(6) DEFAULT NULL,
`thermostat` varchar(120) DEFAULT NULL COMMENT 'MQTT-Zweig des Thermostats, NULL = keins',
`werte` text DEFAULT NULL COMMENT 'JSON der Kachelwerte, NULL = Vorgabe',
PRIMARY KEY (`id`),
UNIQUE KEY `uq_rooms_kuerzel` (`floor`, `kuerzel`),
UNIQUE KEY `uq_rooms_name` (`floor`, `name`),
CONSTRAINT `fk_rooms_floor` FOREIGN KEY (`floor`) REFERENCES `floors` (`code`)
ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;