-- IoT Control System Database Setup -- Created: 2025-11-21 -- Tables: iot_devices, iot_commands USE ecommerce; -- Table: iot_devices -- Stores information about registered IoT devices (ESP8266, ESP32, etc.) CREATE TABLE IF NOT EXISTS `iot_devices` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `device_id` VARCHAR(50) UNIQUE NOT NULL COMMENT 'معرف الجهاز الفريد', `device_name` VARCHAR(255) NOT NULL COMMENT 'اسم الجهاز', `device_type` ENUM('esp8266', 'esp32', 'arduino', 'other') DEFAULT 'esp8266' COMMENT 'نوع الجهاز', `description` TEXT COMMENT 'وصف الجهاز', `location` VARCHAR(255) COMMENT 'موقع الجهاز', `pin_config` JSON COMMENT 'تكوين المنافذ', `is_online` BOOLEAN DEFAULT FALSE COMMENT 'حالة الاتصال', `last_seen` TIMESTAMP NULL COMMENT 'آخر اتصال', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX `idx_device_id` (`device_id`), INDEX `idx_online` (`is_online`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='أجهزة IoT المسجلة'; -- Table: iot_commands -- Tracks commands sent to IoT devices CREATE TABLE IF NOT EXISTS `iot_commands` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `device_id` VARCHAR(50) NOT NULL COMMENT 'معرف الجهاز', `action` VARCHAR(100) NOT NULL COMMENT 'الأمر المطلوب تنفيذه', `payload` JSON COMMENT 'بيانات إضافية للأمر', `status` ENUM('pending', 'sent', 'executed', 'failed') DEFAULT 'pending' COMMENT 'حالة الأمر', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'وقت الإنشاء', `executed_at` TIMESTAMP NULL COMMENT 'وقت التنفيذ', `error_message` TEXT COMMENT 'رسالة الخطأ إن وجدت', INDEX `idx_device_id` (`device_id`), INDEX `idx_status` (`status`), INDEX `idx_created_at` (`created_at`), FOREIGN KEY (`device_id`) REFERENCES `iot_devices`(`device_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='أوامر أجهزة IoT'; -- Insert sample device for testing INSERT INTO `iot_devices` (`device_id`, `device_name`, `device_type`, `description`, `location`, `pin_config`) VALUES ( 'ESP01', 'Lamp Controller', 'esp8266', 'Controls living room lamp', 'Living Room', '{"relay_pin": 5, "led_pin": 2}' ) ON DUPLICATE KEY UPDATE device_name = device_name;