-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Host: 192.168.179.174:3310 -- Erstellungszeit: 30. Aug 2026 um 16:22 -- Server-Version: 11.3.2-MariaDB-1:11.3.2+maria~ubu2204 -- PHP-Version: 8.2.17 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Datenbank: `homeMesh` -- -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `actors` -- CREATE TABLE `actors` ( `id` int(11) NOT NULL, `type` varchar(50) NOT NULL COMMENT 'Gerätetyp z.B. RollerShutter', `name` varchar(70) NOT NULL COMMENT 'Name des Geräts', `url` varchar(100) NOT NULL COMMENT 'Tahoma Device URL', `room` varchar(60) DEFAULT NULL COMMENT 'Raum aus restricted/rooms.php als "Etage/Raum" (z.B. OG/Bad) oder "aussen". Wird von Hand vergeben und deshalb vom Discovery nicht angefasst - der Upsert setzt nur type und name.' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- -- Daten für Tabelle `actors` -- INSERT INTO `actors` (`id`, `type`, `name`, `url`) VALUES (1, 'LOGIC', 'Zeitpunkt', 'Logic'); -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `actor_commands` -- CREATE TABLE `actor_commands` ( `id` int(11) NOT NULL, `actor_id` int(11) NOT NULL COMMENT 'Referenz zum Aktor', `command_name` varchar(100) NOT NULL COMMENT 'Name des Commands z.B. setPosition, open, close', `command_url` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `actor_states` -- CREATE TABLE `actor_states` ( `id` int(11) NOT NULL, `actor_id` int(11) NOT NULL COMMENT 'Referenz zum Aktor', `state_name` varchar(100) NOT NULL COMMENT 'Name des State z.B. core:ClosureState', `state_type` int(11) DEFAULT NULL COMMENT 'State-Typ Code aus Tahoma API', `current_value` varchar(255) DEFAULT NULL COMMENT 'Aktueller Wert des State', `unit` varchar(20) DEFAULT NULL COMMENT 'Einheit falls vorhanden', `url` varchar(255) DEFAULT NULL COMMENT 'MQTT Topic oder URL zum State', `value_path` varchar(120) DEFAULT NULL COMMENT 'Pfad in die Nutzlast, wenn sich mehrere Messwerte ein Topic teilen: der go-eCharger schickt sechzehn Zahlen als JSON-Feld auf einem Topic. Schreibweise [3], ssid, foo[0].bar. NULL = ganze Nutzlast', `last_updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `possible_values` text NOT NULL COMMENT 'JSON array with possible enum values.' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- -- Daten für Tabelle `actor_states` -- INSERT INTO `actor_states` (`id`, `actor_id`, `state_name`, `state_type`, `current_value`, `unit`, `url`, `last_updated`, `possible_values`) VALUES (1, 1, 'Uhrzeit', 5, '13:45', NULL, 'time', '2026-03-16 18:16:44', ''), (2, 1, 'Datum', 8, '20.03.2026', NULL, 'date', '2026-03-16 18:16:44', ''), (3, 1, 'Sonnenaufgang', 7, '00:00', NULL, 'sunrise', '2026-03-16 18:16:44', ''), (4, 1, 'Sonnenuntergang', 7, '00:00', NULL, 'sunset', '2026-03-16 18:16:44', ''); -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `command_parameters` -- CREATE TABLE `command_parameters` ( `id` int(11) NOT NULL, `command_id` int(11) NOT NULL COMMENT 'Referenz zum Command', `parameter_name` varchar(100) NOT NULL COMMENT 'Name des Parameters z.B. position', `parameter_type` varchar(50) DEFAULT NULL COMMENT 'Datentyp z.B. integer, string', `min_value` decimal(10,2) DEFAULT NULL COMMENT 'Minimaler Wert (falls numerisch)', `max_value` decimal(10,2) DEFAULT NULL COMMENT 'Maximaler Wert (falls numerisch)', `possible_values` text DEFAULT NULL COMMENT 'JSON Array mit möglichen Werten (für Enums)', `url` varchar(255) DEFAULT NULL COMMENT 'MQTT Topic oder URL zum Parameter' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `sensors` -- CREATE TABLE `sensors` ( `id` int(11) NOT NULL, `type` varchar(50) NOT NULL COMMENT 'Sensortyp z.B. TemperatureSensor', `name` varchar(70) NOT NULL COMMENT 'Name des Sensors', `url` varchar(100) NOT NULL COMMENT 'Tahoma Device URL' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `sensor_states` -- CREATE TABLE `sensor_states` ( `id` int(11) NOT NULL, `sensor_id` int(11) NOT NULL COMMENT 'Referenz zum Sensor', `state_name` varchar(100) NOT NULL COMMENT 'Name des State z.B. core:TemperatureState', `state_type` int(11) DEFAULT NULL COMMENT 'State-Typ Code aus Tahoma API', `current_value` varchar(255) DEFAULT NULL COMMENT 'Aktueller Wert des State', `unit` varchar(20) DEFAULT NULL COMMENT 'Einheit z.B. °C, %, lux', `url` varchar(255) DEFAULT NULL COMMENT 'MQTT Topic oder URL zum State', `last_updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `state_types` -- CREATE TABLE `state_types` ( `id` int(11) NOT NULL, `type` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Daten für Tabelle `state_types` -- INSERT INTO `state_types` (`id`, `type`) VALUES (6, 'array'), (0, 'bool'), (8, 'date'), (9, 'datetime'), (7, 'deltatime'), (2, 'float'), (1, 'integer'), (3, 'string'), (5, 'time'), (4, 'undefined'); -- -------------------------------------------------------- -- -- Stellvertreter-Struktur des Views `view_actors_with_commands` -- (Siehe unten für die tatsächliche Ansicht) -- CREATE TABLE `view_actors_with_commands` ( `actor_id` int(11) ,`actor_name` varchar(70) ,`actor_type` varchar(50) ,`actor_url` varchar(100) ,`command_id` int(11) ,`command_name` varchar(100) ,`parameter_name` varchar(100) ,`parameter_type` varchar(50) ,`min_value` decimal(10,2) ,`max_value` decimal(10,2) ,`possible_values` text ); -- -------------------------------------------------------- -- -- Stellvertreter-Struktur des Views `view_all_devices` -- (Siehe unten für die tatsächliche Ansicht) -- CREATE TABLE `view_all_devices` ( `device_category` varchar(6) ,`id` int(11) ,`type` varchar(50) ,`name` varchar(70) ,`url` varchar(100) ); -- -------------------------------------------------------- -- -- Stellvertreter-Struktur des Views `view_sensors_with_states` -- (Siehe unten für die tatsächliche Ansicht) -- CREATE TABLE `view_sensors_with_states` ( `sensor_id` int(11) ,`sensor_name` varchar(70) ,`sensor_type` varchar(50) ,`sensor_url` varchar(100) ,`state_name` varchar(100) ,`state_type` int(11) ,`current_value` varchar(255) ,`unit` varchar(20) ,`last_updated` timestamp ); -- -------------------------------------------------------- -- -- Struktur des Views `view_actors_with_commands` -- DROP TABLE IF EXISTS `view_actors_with_commands`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_actors_with_commands` AS SELECT `a`.`id` AS `actor_id`, `a`.`name` AS `actor_name`, `a`.`type` AS `actor_type`, `a`.`url` AS `actor_url`, `ac`.`id` AS `command_id`, `ac`.`command_name` AS `command_name`, `cp`.`parameter_name` AS `parameter_name`, `cp`.`parameter_type` AS `parameter_type`, `cp`.`min_value` AS `min_value`, `cp`.`max_value` AS `max_value`, `cp`.`possible_values` AS `possible_values` FROM ((`actors` `a` left join `actor_commands` `ac` on(`a`.`id` = `ac`.`actor_id`)) left join `command_parameters` `cp` on(`ac`.`id` = `cp`.`command_id`)) ORDER BY `a`.`id` ASC, `ac`.`id` ASC, `cp`.`id` ASC ; -- -------------------------------------------------------- -- -- Struktur des Views `view_all_devices` -- DROP TABLE IF EXISTS `view_all_devices`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_all_devices` AS SELECT 'actor' AS `device_category`, `actors`.`id` AS `id`, `actors`.`type` AS `type`, `actors`.`name` AS `name`, `actors`.`url` AS `url` FROM `actors`union all select 'sensor' AS `device_category`,`sensors`.`id` AS `id`,`sensors`.`type` AS `type`,`sensors`.`name` AS `name`,`sensors`.`url` AS `url` from `sensors` order by `device_category`,`name` ; -- -------------------------------------------------------- -- -- Struktur des Views `view_sensors_with_states` -- DROP TABLE IF EXISTS `view_sensors_with_states`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_sensors_with_states` AS SELECT `s`.`id` AS `sensor_id`, `s`.`name` AS `sensor_name`, `s`.`type` AS `sensor_type`, `s`.`url` AS `sensor_url`, `ss`.`state_name` AS `state_name`, `ss`.`state_type` AS `state_type`, `ss`.`current_value` AS `current_value`, `ss`.`unit` AS `unit`, `ss`.`last_updated` AS `last_updated` FROM (`sensors` `s` left join `sensor_states` `ss` on(`s`.`id` = `ss`.`sensor_id`)) ORDER BY `s`.`id` ASC, `ss`.`id` ASC ; -- -- Indizes der exportierten Tabellen -- -- -- Indizes für die Tabelle `actors` -- ALTER TABLE `actors` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `url` (`url`), ADD KEY `idx_actors_type` (`type`); -- -- Indizes für die Tabelle `actor_commands` -- ALTER TABLE `actor_commands` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `actor_id_2` (`actor_id`,`command_name`), ADD KEY `actor_id` (`actor_id`), ADD KEY `idx_actor_commands_name` (`command_name`); -- -- Indizes für die Tabelle `actor_states` -- ALTER TABLE `actor_states` ADD PRIMARY KEY (`id`), -- Auf den Namen und nicht auf die URL, aus demselben Grund wie bei -- command_parameters: korrigiert ein Modul die URL eines Messwerts, soll -- die vorhandene Zeile geaendert werden. Am URL-Schluessel entstand -- stattdessen eine zweite Zeile, und die alte blieb ohne URL zurueck. ADD UNIQUE KEY `actor_id_2` (`actor_id`,`state_name`), ADD KEY `actor_id` (`actor_id`), ADD KEY `idx_actor_states_name` (`state_name`), ADD KEY `state_type` (`state_type`); -- -- Indizes für die Tabelle `command_parameters` -- ALTER TABLE `command_parameters` ADD PRIMARY KEY (`id`), -- Auf den Namen und nicht auf die URL: Parameter ohne URL (WLED traegt -- alles in der Kommando-Vorlage) haetten dort NULL, und eine NULL -- kollidiert in MySQL nie - ON DUPLICATE KEY UPDATE griff nicht und jeder -- Discovery-Lauf legte die Parameter erneut an. ADD UNIQUE KEY `command_id_2` (`command_id`,`parameter_name`), ADD KEY `command_id` (`command_id`); -- -- Indizes für die Tabelle `sensors` -- ALTER TABLE `sensors` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `url` (`url`), ADD KEY `idx_sensors_type` (`type`); -- -- Indizes für die Tabelle `sensor_states` -- ALTER TABLE `sensor_states` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `sensor_id_2` (`sensor_id`,`url`), ADD KEY `sensor_id` (`sensor_id`), ADD KEY `idx_sensor_states_name` (`state_name`); -- -- Indizes für die Tabelle `state_types` -- ALTER TABLE `state_types` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `type` (`type`); -- -- AUTO_INCREMENT für exportierte Tabellen -- -- -- AUTO_INCREMENT für Tabelle `actors` -- ALTER TABLE `actors` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; -- -- AUTO_INCREMENT für Tabelle `actor_commands` -- ALTER TABLE `actor_commands` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT für Tabelle `actor_states` -- ALTER TABLE `actor_states` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- AUTO_INCREMENT für Tabelle `command_parameters` -- ALTER TABLE `command_parameters` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT für Tabelle `sensors` -- ALTER TABLE `sensors` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT für Tabelle `sensor_states` -- ALTER TABLE `sensor_states` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- -- Constraints der exportierten Tabellen -- -- -- Constraints der Tabelle `actor_commands` -- ALTER TABLE `actor_commands` ADD CONSTRAINT `fk_actor_commands_actor` FOREIGN KEY (`actor_id`) REFERENCES `actors` (`id`) ON DELETE CASCADE; -- -- Constraints der Tabelle `actor_states` -- ALTER TABLE `actor_states` ADD CONSTRAINT `fk_actor_states_actor` FOREIGN KEY (`actor_id`) REFERENCES `actors` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `fk_type_states_type` FOREIGN KEY (`state_type`) REFERENCES `state_types` (`id`) ON DELETE CASCADE; -- -- Constraints der Tabelle `command_parameters` -- ALTER TABLE `command_parameters` ADD CONSTRAINT `fk_command_parameters_command` FOREIGN KEY (`command_id`) REFERENCES `actor_commands` (`id`) ON DELETE CASCADE; -- -- Constraints der Tabelle `sensor_states` -- ALTER TABLE `sensor_states` ADD CONSTRAINT `fk_sensor_states_sensor` FOREIGN KEY (`sensor_id`) REFERENCES `sensors` (`id`) ON DELETE CASCADE; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;