انتقل إلى المحتوى الرئيسي

أول إقلاع وWiFi

كيف يبدو أول إقلاع سليم

  1. تظهر شاشة البداية ومعها شعار صافي ورقم إصدار البرنامج الثابت.
  2. تحتها، يعرض تقرير الإقلاع أي ملحق فشل في التهيئة. على بناء كامل تكون القائمة فارغة؛ أما على بناء جزئي فسترى مدخلات مثل SD (ESP_ERR_TIMEOUT). يواصل الجهاز العمل من دون الملحق الفاشل.
  3. تنتقل الشاشة إلى ساعة الخمول وتبقى عليها أثناء محاولة بيانات الاعتماد أو التزويد. لا تظهر شاشة حالة WiFi إلا بعد أن يتصل WiFi فعلاً، وتعود وحدها إلى ساعة الخمول بعد 10 ثوانٍ. يعرض الوقت --:-- حتى يتصل WiFi وتتزامن الساعة.
  4. ما إن يتصل WiFi، يظهر رمز WiFi في شريط الحالة وتعرض شاشة الخمول عنوان IP الخاص بالجهاز.

كل ما قرره الإقلاع يظهر لاحقاً أيضاً في لوحة التحكم تحت الإعدادات، وعلى المنفذ التسلسلي إذا كان الجهاز موصولاً عبر USB.

مسارات التزويد الثلاثة

يجرب صافي بيانات الاعتماد بترتيب ثابت عند كل إقلاع:

المسار 1: بيانات الاعتماد المحفوظة

يُخزن ما نجح سابقاً في فلاش إعدادات الجهاز المشفر ويُجرب أولاً. تحصل على هذا تلقائياً بعد أي اتصال ناجح؛ لا شيء يتطلب ضبطاً.

المسار 2: بيانات اعتماد البرنامج الثابت (للمطورين)

إذا كنت تبني من المصدر، ففي idf.py menuconfig تحت Safi Configuration خياران: SAFI_WIFI_SSID وSAFI_WIFI_PASSWORD. يُترجمان إلى ثوابت في البناء كمسار احتياطي. يقرؤهما نظام البناء من ملف sdkconfig.local غير المتتبع في git حتى لا تصل بيانات الاعتماد إلى المستودع أبداً؛ انظر بداية العمل.

المسار 3: التزويد عبر SoftAP (من دون حاسوب)

عندما لا ينجح شيء آخر، يفتح الجهاز نقطة وصول للتزويد باسم Safi-XXXXXX، حيث يأتي الجزء اللاحق من عنوان MAC الخاص بالجهاز نفسه (مثلاً Safi-3C7A1B). يستغرق الاقتران نحو دقيقة:

  1. ثبّت تطبيق ESP SoftAP Provisioning (التطبيق الرسمي من Espressif، لنظامي iOS وAndroid). تطبيق ESPTouch القديم لن يعمل: أُزيلت تقنية SmartConfig في ESP-IDF v6 ولم يعد صافي يتحدثها.
  2. افتح التطبيق واضغط زر التحديث؛ يسرد هاتفك الشبكات القريبة ويرى Safi-XXXXXX كنقطة وصول.
  3. المسها، ثم أدخل اسم مستخدم التزويد safi ورمز إثبات الحيازة (PoP): الرمز المكون من 16 محرفاً المطبوع على ملصق الجهاز (في أجهزة الإنتاج يُشتق في المصنع من هوية الشريحة، ولا يُخزن في أي مكان؛ وفي جهاز التطوير عند أول إقلاع يُطبع مرة واحدة على المنفذ التسلسلي).
  4. يعرض التطبيق الآن قائمة شبكات WiFi المعتادة؛ اختر شبكتك المنزلية وأدخل كلمة مرورها.
  5. تنتقل بيانات الاعتماد إلى الجهاز عبر جلسة تزويد مشفرة (SRP6a إضافة إلى AES-GCM). بعد ثوانٍ يحفظها صافي ويتصل؛ ويؤكد التطبيق ذلك.
من دون PoP لا جلسة

PoP ليس كلمة مرور WiFi؛ بل هو الرمز الخاص بالجهاز الذي يثبت أنك تحمل هذا الجهاز بعينه. من دونه لا يستطيع تطبيق التزويد بدء جلسة أصلاً، فلا يوجد شيء يمكن تخمينه بالقوة الغاشمة.

تردد 2.4 غيغاهرتز فقط

لا يدعم راديو ESP32-S3 شبكات 5 غيغاهرتز. تعمل نقطة وصول التزويد على 2.4 غيغاهرتز؛ ويجب أن تكون الشبكة التي تختارها في التطبيق على 2.4 غيغاهرتز أيضاً. إذا كان موجّهك يبث اسماً واحداً للنطاقين فعادة ما يعمل الأمر مباشرة، لكن شبكة 5 غيغاهرتز فقط لن يراها الجهاز أبداً. تتخلف نقاط اتصال الهاتف إلى 5 غيغاهرتز في كثير من الطرازات؛ حوّل نقطة الاتصال إلى 2.4 غيغاهرتز ("توافق أقصى" على iPhone).

بديل NFC: إذا كان الجهاز قد زُوّد ببطاقة NFC مربوطة بإعداد WiFi، فلمسة واحدة من تلك البطاقة على القارئ تضبط بيانات الاعتماد وتتصل، من دون أي تطبيق هاتف. انظر بطاقات NFC لمعرفة كيفية ضبط الربط.

اختيار وسيلة النقل: SoftAP أو BLE

وسيلة النقل خيار في زمن الترجمة، SAFI_PROVISIONING_TRANSPORT تحت Safi Configuration في menuconfig، والافتراضي هو SoftAP. تُشحن البرامج الثابتة الجاهزة مع SoftAP. بناء BLE يتصرف بالطريقة نفسها تماماً إلا أن المسار 3 يقترن عبر البلوتوث بدلاً من نقطة الوصول:

  1. عندما تفتح نافذة التزويد، يُعلن الجهاز عبر BLE باسم PROV_SafiXXXXXX (الأرقام الست السداسية من لاحقة MAC، مثلاً PROV_Safi3C7A1B). البادئة PROV_ مقصودة: يفلتر تطبيق التزويد مسح BLE ببادئة اسم الجهاز، PROV_ افتراضياً، فيظهر الجهاز من دون المساس بأي إعداد في التطبيق.
  2. افتح تطبيق ESP SoftAP Provisioning واختر وسيلة النقل BLE؛ تعرض قائمة الأجهزة الممسوحة PROV_SafiXXXXXX.
  3. المسه. ينطبق اسم المستخدم نفسه safi ورمز PoP نفسه المكون من 16 محرفاً من ملصق الجهاز؛ الجلسة هي إعداد الأمان 2 نفسه (SRP6a إضافة إلى AES-GCM)، لكنه محمول عبر BLE.
  4. اختر شبكة WiFi وأدخل كلمة مرورها. تنتقل بيانات الاعتماد عبر BLE؛ بعد ثوانٍ يحفظها صافي ويتصل، ويؤكد التطبيق ذلك.

ملاحظتان عمليتان: تزويد BLE لا يحتاج نقطة وصول على الجهاز، وهو ما يفيد عندما يجب أن يبقى الهاتف على شبكة توفر الإنترنت (مثلاً نقطة اتصال ببوابة أسيرة). كما تظل نافذة التزويد تتناوب مع إعادة محاولة بيانات الاعتماد المخزنة تماماً كما هو الحال مع SoftAP، وتنطبق ملاحظة 2.4 غيغاهرتز أعلاه من دون تغيير على الشبكة التي تختارها.

سلوك إعادة المحاولة

إذا انقطع الاتصال بالشبكة، يعيد صافي المحاولة تلقائياً كل 30 ثانية. كما تنزل محاولات الاتصال الفاشلة قدرة إرسال الراديو عبر سلم احتياطي، وهو ما ينقذ مصادر التغذية الضعيفة؛ يروي فصل WiFi للمطورين تلك القصة.

إذا انتهى المطاف بصافي في وضع التزويد (مثلاً كان موجّهك مغلقاً أثناء الإقلاع)، فلا يعلق فيه: يتناوب الجهاز بين الإعلان عن نقطة الوصول Safi-XXXXXX (10 دقائق افتراضياً) وإعادة محاولة بيانات الاعتماد المحفوظة بهدوء، إلى الأبد، حتى ينجح أحدهما. الموجّه الذي يعود بعد ساعة يُعاد الانضمام إليه من دون أن يلمس الجهاز أحد.

قراءة التشخيصات

عند الاتصال عبر USB، يروي المنفذ التسلسلي (بسرعة 115200 باود) كل محاولة، بما في ذلك مسح الشبكات المرئية بعد كل فشل:

WIFI_MANAGER: Trying built-in WiFi credentials
WIFI_MANAGER: Retry connecting to WiFi... (1/5, reason=201)
WIFI_MANAGER: AP 'HomeNet': ch=6 rssi=-58 auth=WPA2
WIFI_MANAGER: Target SSID 'MyNet' not visible on 2.4 GHz (5 GHz-only network?)

رموز الأسباب وما يجب فعله إزاء كل منها في استكشاف الأخطاء وإصلاحها.