MQTT ، المنزل الذكي ، ESP-8266 والتوصيل والتشغيل

يتضمن إنشاء منزل ذكي العديد من أجهزة الاستشعار المختلفة التي تراقب الموقف في المنزل - الحركة والإضاءة ودرجة الحرارة وأجهزة استشعار أخرى. إذا كان "المنزل الذكي" صغيرًا ، فسيبدو كل شيء بسيطًا حتى مع وجود أنظمة منزلية الصنع تعتمد على حلول مفتوحة (MQTT أو OpenHAB أو ما إلى ذلك) - قاموا بتوصيل المستشعر وتسجيله في برنامج OpenHAB أو HomeAssistant وبدأوا العمل. ولكن إذا كان هناك الكثير من المستشعرات ، فسيظهر الكثير من العمل الروتيني والامتنان على وصف كل منها في نظام التحكم.

يتيح لك الحل المقترح ("عكاز") القيام بالحد الأدنى من العمليات اليدوية في هذه المرحلة. تتصل وحدة التحكم في المستشعر بوسيط MQTT ويتحدث عن أجهزة الاستشعار الخاصة به وأجهزة بتنسيق معين في موضوعات خاصة ، ثم يقوم برنامج نصي صغير على خادم المنزل الذكي بإنشاء ملفات تكوين متوافقة مع هذه المستشعرات ، وبعد ذلك تحتاج فقط إلى التعرف عليها يدويًا في المجموعات الخاصة بالمنزل ويمكنك بعد ذلك البدء في إنشاء البرامج النصية الإدارة.

على وجه التحديد ، تعمل هذه البرامج الثابتة على الوحدات النمطية مع ESP-8266 (بما في ذلك Sonoff Basic Switch و Sonoff Touch Wallswitch) مع البرامج النصية P&P لـ OpenHAB و HomeAssistant ، ولكن يمكن استخدام طريقة إخراج معلومات التوصيل والتشغيل نفسها في مشاريع أخرى.

عند توصيل الجهاز بالوسيط MQTT ، يتم إنشاء المواضيع التالية (في هذه الحالة ، لزر FLASH في ESP-8266 بالرقم التسلسلي 0023CB541):

  • / myhome / PNP / ESPX-0023CB541 / BUTTON / name - الاسم / الوصف ("زر FLASH" - سيتم عرض ذلك في واجهة الويب)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / type - نوع المتغير واتجاه تدفق البيانات لذلك ، يشير "O: Switch" إلى المستشعر الذي يوفر المعلومات ، وعلى سبيل المثال ، "I: Dimmer" - القناة الواردة من باهتة
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / groups - المجموعات التي سيظهر فيها هذا المتغير افتراضيًا ("Switches Builtin Buttons")
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / min - القيمة الدنيا (للمتغيرات الرقمية ، للزر ستكون فارغة)
  • / myhome / PNP / ESPX-0023CB541 / BUTTON / max - القيمة القصوى (مماثلة)

يقوم البرنامج النصي الذي يعمل على الخادم (حسب التاج أو يدويًا ، بعد توصيل الجهاز) - بتنزيل قائمة بالمواضيع من / myhome / PNP ، ويبحث عن الأجهزة غير الموجودة في OpenHAB ويقوم بإنشاء ملفات تهيئة لها. إذا كان ملف التكوين لهذا الجهاز موجودًا بالفعل ، فسيتم تجاهل معلومات P&P تمامًا ، لكن يمكنك حذف هذا الملف ، إذا لزم الأمر ، إعادة إنشاء الملف للجهاز باستخدام مجموعة من المستشعرات المتغيرة.

بهذه الطريقة البسيطة والشفافة - نتخلص من الصداع الكبير إلى حد ما إذا كنت بحاجة إلى توصيل عدد كبير من الأجهزة التي تسيطر عليها الشبكة في منزلنا الذكي الصنع.

سوف أخبركم قليلاً عن البرامج الثابتة الفعلية لـ ESP-8266. يمكن العثور على أكواد المصدر (والبرامج النصية للدعم لـ OpenHAB و HomeAssistant) على Github (على وجه التحديد ، نصوص الدعم موجودة هنا ).

إنه يعمل على وحدات ESP-8266 القياسية (وكذلك على Sonoff Basic Switch و Sonoff Touch Wallswitch) ، ويدعم ترقية البرامج الثابتة أثناء الطيران (ArduinoOTA) ، ولديه أيضًا خادم ويب بسيط للتهيئة الأولية لمعلمات شبكة WiFi وإعداد عنوان IP MQTT سمسار

هيكل البرنامج الثابت هو وحدات ويمكنك بسهولة إضافة أجهزة الاستشعار / الأجهزة الخاصة بك. القائمة الحالية تشمل:

  • مجسات الحركة بالأشعة تحت الحمراء وكاشف الحركة X-band من Parallax (حتى 3 وحدات لكل وحدة)
  • درجة الحرارة / الرطوبة الاستشعار DHT22 أو ما يعادلها
  • بلدي 4 قناة Modbus / RS-485 تسيطر باهتة
  • HC-SR04 Sonars و MaxBotix Series Sonars
  • المرحلات على Sonoff Basic Switch و Sonoff Touch (يمكن تحويل الأخير إلى كل من وضع التحكم في الترحيل بواسطة زر ، وفقط من خلال OpenHAB / HomeAssistant)
  • المدمج في ADC ، زر LED وفلاش (ل Sonoff Touch - هذا هو زر اللمس)
  • ترموستات بسيط مع مرحلتين للتحكم في مروحة (وحدة داخلية) وضاغط (وحدة خارجية)

تجدر الإشارة إلى أنه بسبب نقص المسامير في ESP-8266 ، يمكن أن تتعارض الوحدات مع بعضها البعض (على سبيل المثال ، لا يمكن توصيل باهتة مع سونار في نفس الوقت إذا لم تقم بإعادة توزيع المسامير بنفسك).

بعد اختيار الأجهزة اللازمة في esp-sensors.h ، التحويل البرمجي والبرامج الثابتة - تتحول الوحدة إلى وضع التكوين - ترفع شبكة WiFi الخاصة بها باسم "espx-0023cb541" ، والتي تحتاج إلى الاتصال بها (يمكنك استخدام أي هاتف ذكي) بكلمة مرور من نفس الملف ، انتقل إلى 192.168.4.1 وقم بتعيين تسجيل الدخول وكلمة المرور على الشبكة ، بالإضافة إلى عنوان IP الخاص بالوسيط. سيتم حفظ هذه المعلمات في ومضة ، لذلك في المرة الثانية لا تحتاج إلى القيام بذلك. إذا تعذر الاتصال بشبكة معينة خلال دقيقة واحدة ، فستتحول مرة أخرى إلى وضع التكوين لمدة ثلاث دقائق ، ثم ستكرر هذه الدورة حتى يتم توصيلها بنجاح.

بالنسبة لأولئك الذين سيقومون بتحرير هذه البرامج الثابتة ، سوف أذكر أن كل وحدة استشعار / وحدة مقسمة إلى ست وظائف:

  • الإعداد _ * () - تكوين دبابيس
  • حلقة _ * () - استقصاء المستشعر في كل دورة برنامج
  • تحديث _ * (forceSend) - تحديث معلومات حالة المستشعر على MQTT (200 مللي افتراضيًا ، وكل تحديث ثانوي - التحديث القسري)
  • pnp _ * () - إرسال معلومات P & P
  • الاشتراك _ * () - الاشتراك في الموضوعات الواردة اللازمة
  • mqtt _ * () - معالجة رسائل mqtt الواردة

يجب تحديد هذه الوظائف في ملف الوحدة النمطية الخاصة بك ، ثم إضافة دعوتهم إلى الأماكن المناسبة esp-sensors.ino.

Source: https://habr.com/ru/post/ar432730/


All Articles