-- --------------------------------------------------------------------------- -- 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: _w0_. 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;