# 🎛️ دليل نظام IoT المتكامل ## 📋 نظرة عامة نظام IoT متكامل لإدارة والتحكم في أجهزة ESP8266/ESP32 والبينات (Pins) بشكل ديناميكي وسهل. --- ## 📁 هيكل الملفات ``` backend/admin/iot/ ├── index.php # لوحة التحكم الرئيسية ├── devices.php # إدارة الأجهزة (إضافة/تعديل/حذف) ├── pins.php # إدارة البينات (إضافة/تعديل/حذف) ├── control.php # التحكم المباشر بالبينات └── settings.php # إعدادات النظام backend/api/iot/ ├── devices.php # API إدارة الأجهزة ├── pin_control.php # API إدارة البينات ├── pin_status.php # API حالة البينات └── settings.php # API الإعدادات ``` --- ## ✨ المميزات ### 1️⃣ إدارة الأجهزة - ✅ إضافة أجهزة ESP جديدة - ✅ تعديل معلومات الأجهزة - ✅ حذف الأجهزة - ✅ تتبع حالة الاتصال (Online/Offline) - ✅ إدارة IP و Port لكل جهاز ### 2️⃣ إدارة البينات (Pins) - ✅ إضافة بينات ديناميكية لكل جهاز - ✅ اختيار GPIO Pin من القائمة المتاحة - ✅ تحديد نوع Pin (Relay, Sensor, LED, Button, PWM) - ✅ اختيار أيقونة مناسبة - ✅ تحديد الموقع والاسم - ✅ تعديل وحذف البينات ### 3️⃣ التحكم المباشر - ✅ تشغيل/إيقاف البينات بضغطة زر - ✅ واجهة مستخدم سهلة وجميلة - ✅ تحديث تلقائي لحالة البينات كل 5 ثواني - ✅ إرسال أوامر مباشرة لأجهزة ESP ### 4️⃣ الإعدادات - ✅ مفتاح API للأمان - ✅ الاكتشاف التلقائي للأجهزة - ✅ مستويات السجلات (Debug, Info, Warning, Error) - ✅ الحد الأقصى للأجهزة --- ## 🚀 كيفية الاستخدام ### الخطوة 1: الوصول للنظام 1. افتح لوحة التحكم 2. من القائمة الجانبية اختر: **الإدارة والإعدادات** → **نظام IoT المتكامل** ### الخطوة 2: إضافة جهاز 1. اذهب إلى **إدارة الأجهزة** 2. اضغط **إضافة جهاز** 3. أدخل: - معرف الجهاز (مثال: ESP01) - اسم الجهاز (مثال: جهاز غرفة النوم) - عنوان IP (مثال: 192.168.1.100) - المنفذ (Port) - افتراضي: 80 4. اضغط **حفظ الجهاز** ### الخطوة 3: إضافة بينات 1. اذهب إلى **إدارة البينات** 2. اختر الجهاز 3. اضغط **إضافة Pin** 4. أدخل: - GPIO Pin (مثال: GPIO5) - اسم Pin (مثال: إضاءة غرفة النوم) - نوع Pin (Relay, Sensor, إلخ) - الموقع (اختياري) - اختر أيقونة مناسبة 5. اضغط **حفظ Pin** ### الخطوة 4: التحكم 1. اذهب إلى **التحكم المباشر** 2. اختر الجهاز 3. اضغط على زر التشغيل/الإيقاف لأي Pin --- ## 🔧 GPIO Pins المتاحة لـ ESP8266 | GPIO | D Pin | الاستخدام الشائع | |------|-------|------------------| | GPIO16 | D0 | Wake up من Deep Sleep | | GPIO5 | D1 | I2C SCL | | GPIO4 | D2 | I2C SDA | | GPIO0 | D3 | Flash Mode (استخدم بحذر) | | GPIO2 | D4 | Built-in LED | | GPIO14 | D5 | SPI SCLK | | GPIO12 | D6 | SPI MISO | | GPIO13 | D7 | SPI MOSI | | GPIO15 | D8 | SPI CS (استخدم بحذر) | --- ## 📊 قاعدة البيانات ### جدول `iot_devices` ```sql - device_id (VARCHAR) - معرف الجهاز - device_name (VARCHAR) - اسم الجهاز - ip_address (VARCHAR) - عنوان IP - port (INT) - المنفذ - status (ENUM) - online/offline ``` ### جدول `device_pins` ```sql - id (INT) - المعرف - device_id (VARCHAR) - معرف الجهاز - pin_number (INT) - رقم Pin - pin_gpio (INT) - رقم GPIO - pin_type (VARCHAR) - نوع Pin - pin_name (VARCHAR) - اسم Pin - pin_location (VARCHAR) - الموقع - pin_icon (VARCHAR) - الأيقونة ``` ### جدول `iot_settings` ```sql - api_key (VARCHAR) - مفتاح API - auto_discovery (BOOLEAN) - الاكتشاف التلقائي - log_level (VARCHAR) - مستوى السجلات - max_devices (INT) - الحد الأقصى للأجهزة ``` --- ## 🔌 API Endpoints ### إدارة الأجهزة ``` GET /api/iot/devices.php # قائمة الأجهزة POST /api/iot/devices.php # إضافة جهاز PUT /api/iot/devices.php # تعديل جهاز DELETE /api/iot/devices.php # حذف جهاز ``` ### إدارة البينات ``` GET /api/iot/pin_control.php?device_id=ESP01 # قائمة البينات POST /api/iot/pin_control.php # إضافة Pin PUT /api/iot/pin_control.php # تعديل Pin DELETE /api/iot/pin_control.php # حذف Pin ``` ### حالة البينات ``` GET /api/iot/pin_status.php?device_id=ESP01 # حالة البينات ``` ### الإعدادات ``` GET /api/iot/settings.php # قراءة الإعدادات POST /api/iot/settings.php # تحديث الإعدادات ``` --- ## 🎨 الأيقونات المتاحة - 💡 `fa-lightbulb` - لمبة - 🌀 `fa-fan` - مروحة - 🚪 `fa-door-open` - باب - 🌡️ `fa-thermometer-half` - حرارة - 🚶 `fa-walking` - حركة - 🌳 `fa-tree` - حديقة - 🔒 `fa-lock` - قفل - 🔔 `fa-bell` - جرس - 📺 `fa-tv` - تلفاز - ❄️ `fa-wind` - مكيف - 🔥 `fa-fire` - سخان - 💧 `fa-water` - مضخة --- ## 🛠️ استكشاف الأخطاء ### المشكلة: أزرار التحكم لا تعمل **الحل:** 1. تأكد من أن جهاز ESP متصل بالشبكة 2. تحقق من عنوان IP صحيح 3. تأكد من رفع كود Arduino على ESP 4. افحص Console في المتصفح للأخطاء ### المشكلة: لا يمكن إضافة Pin **الحل:** 1. تأكد من اختيار GPIO متاح 2. تحقق من عدم استخدام نفس GPIO مرتين 3. تأكد من ملء جميع الحقول المطلوبة ### المشكلة: الجهاز يظهر Offline **الحل:** 1. تحقق من اتصال ESP بالشبكة 2. تأكد من عنوان IP صحيح 3. جرب ping للجهاز من CMD 4. أعد تشغيل ESP --- ## 🔐 الأمان - ✅ استخدم مفتاح API قوي - ✅ غيّر Port الافتراضي إذا أمكن - ✅ استخدم شبكة محلية آمنة - ✅ فعّل HTTPS في الإنتاج - ✅ راقب السجلات بانتظام --- ## 📝 ملاحظات مهمة 1. **GPIO0 و GPIO15**: استخدمهما بحذر - يؤثران على وضع التشغيل 2. **GPIO2**: يحتوي على LED مدمج في معظم لوحات ESP 3. **GPIO16**: لا يدعم PWM أو I2C 4. **التحديث التلقائي**: يتم تحديث حالة البينات كل 5 ثواني 5. **الحد الأقصى**: يمكن إضافة حتى 9 بينات لكل جهاز ESP8266 --- ## 🎯 الميزات القادمة - [ ] جدولة تشغيل/إيقاف تلقائي - [ ] إشعارات عند تغيير الحالة - [ ] رسوم بيانية للاستخدام - [ ] دعم ESP32 (32 Pin) - [ ] التحكم الصوتي - [ ] تطبيق موبايل --- ## 📞 الدعم إذا واجهت أي مشكلة: 1. راجع هذا الدليل 2. افحص السجلات في `/api/iot/logs.php` 3. تحقق من اتصال قاعدة البيانات 4. راجع كود Arduino على ESP --- **تم التطوير بواسطة:** Kiro AI Assistant **التاريخ:** 2025 **الإصدار:** 1.0.0