برمجة ميكروكنترولر ESP8266 / ESP32 عن طريق كتابة ملفات التكوين YAML

بصفتي أحد المعجبين بنظام التحكم الذكي في Home Home ، اكتشفت مؤخرًا أداة مثيرة للاهتمام تم دمجها بشكل وثيق مع HA ولم تكن مضاءة مسبقًا في Habré - ESP Home (ESPhomeYAML سابقًا).


ESP Home هي مجموعة من المكتبات والأدوات التي تنشئ برامج ثابتة للميكروكنترول ESP8266 و ESP32 من ملف التكوين الذي أنشأه المستخدم بتنسيق YAML. هذا يبسط إلى حد كبير كتابة البرامج الثابتة ذات التعقيدات الصغيرة والمتوسطة ، خاصة بالنسبة لأولئك الذين لا يجيدون البرمجة في Arduino ويقلل إلى حد كبير عدد أسطر الكود / التكوين لأولئك الأقوياء.


لسهولة الإعداد ، يتم دعم تحديث البرامج الثابتة عبر الإنترنت.


يدعم ESP Home الأجهزة القائمة على ESP8266 و ESP32 ، والتي تحظى بشعبية كبيرة بين الأتمتة المنزلية والمراوح الأخرى المصنوعة في المنزل ، فضلاً عن عشرات أجهزة الاستشعار والعديد من الأجهزة الطرفية المختلفة - شاشات العرض ، بطاقات الشبكة ، إلخ. لتبادل البيانات مع الجهاز المبرمج ، يتم دمج MQTT و UART و I2C و SPI و API مع برنامج Home Assistant.


يوجد أدناه مثال قصير على تثبيت ESP Home وإعداد الجهاز البسيط على سبيل المثال من التبديل Sonoff T1 ، وهو ESP8266 مع تتابع واحد ، زر واحد ومصباح واحد تسيطر عليها. على سبيل المثال ، ستحتوي خطوات التثبيت على Python و Docker الخالص في نفس الوقت.


التثبيت


Python 2.7 (بسبب تبعيات Platformio )


pip2 install esphome 

عامل ميناء من الصورة النهائية


 docker pull esphome/esphome 

إنشاء ملف التكوين


يتضمن ESP Home معالجًا يساعدك في إنشاء ملف التكوين الأولي.
يمكن القيام بنفس الخطوات في واجهة ESP Home WEB ، والتي تتم كتابتها في نهاية المقالة.


تحتاج أولاً إلى تحديد:


  • اسم الجهاز (دعنا نسميها التبديل)
  • ESP8266 (في المثال) أو ESP32
  • نوع اللوحة (لدينا esp01_1m)
  • نقاط وصول WiFi مسمى
  • كلمة مرور WiFi
  • كلمة مرور من API Home Assistant ، سيتم استخدامها افتراضيًا لتحديث البرامج الثابتة عبر الأثير.

ستكون نتيجة عمل المعالج هي الملف switch.yaml في المجلد الحالي من هذا النوع تقريبًا:


 esphome: name: switch platform: ESP8266 board: esp01_1m wifi: ssid: 'wifi_ap' password: 'wifi_password' # Enable logging logger: # Enable Home Assistant API api: password: 'api_password' ota: password: 'api_password' 

هذا يكفي لتجميع البرامج الثابتة وإجراء مزيد من التغييرات عن طريق الجو.


البرامج الثابتة الأولى


الآن ، إذا قمت بتوصيل وحدة التحكم بالكمبيوتر عبر USB (NodeMCU) أو من خلال المبرمج ، يمكنك تحميل البرنامج الثابت.


بيثون :


 esphome switch.yaml run 

سوف يتحقق ESP Home من عدم وجود أخطاء في ملف التكوين ، وتجميع البرامج الثابتة وتنزيلها. بالإضافة إلى ذلك ، سيظهر مجلد جديد في المجلد الحالي مع اسم جهازك ومشروع platformio بداخله.


إذا كان المبرمج / الجهاز غير متصل بالكمبيوتر ، فيمكنك تشغيل الأمر:


 esphome switch.yaml compile 

وسيظهر ملف البرنامج الثابت المترجم في المجلد switch / .pioenvs / switch / firmware.bin


عامل الميناء
على نظام Linux أو MacOS ، يمكنك إضافة --device = / dev / ttyUSB0 Docker - عنوان جهاز المبرمج أو المنفذ التسلسلي.


 docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile 

على غرار الأمر esphome ، نتيجة لبدء تشغيل الحاوية ، سيظهر مجلد switch / .pioenvs / switch / firmware.bin


يمكن تنزيل ملف البرنامج الثابت الثنائي إلى وحدة التحكم عن طريق Arduino IDE.


بعد ذلك ، يمكن فصل الجهاز عن USB وسيتم إجراء المزيد من تحديثات البرامج الثابتة تلقائيًا عبر الهواء.


تبديل الإعداد


ثم يمكنك إضافة المكونات الضرورية:


مجسات
 #   binary_sensor: #    - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # ,       on_press: - switch.toggle: relay_1 # ,     - platform: status name: "Switch Status" 

ترحيل
 switch: #   - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1 

المصابيح
 output: #   ,    - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: #    "",    - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID  ,        

للحصول في النهاية:


التكوين النهائي
 esphome: name: switch platform: ESP8266 board: esp01_1m #  ,      . on_boot: #   priority: -10 then: - light.turn_on: blue_led_light wifi: ssid: 'wifi_ap' password: 'wifi_password' #   logger: #  Home Assistant API api: password: 'api_password' #     ota: password: 'api_password' #  web  #            web_server: port: 80 #  MQTT mqtt: broker: 10.0.0.2 username: mqt_user password: mqtt_password #   binary_sensor: #    - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # ,       on_press: - switch.toggle: relay_1 # ,     - platform: status name: "Switch Status" switch: #   - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1 output: #   ,    - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: #    "",    - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID  ,        

واجهة الويب


يمكن القيام بنفس الإجراءات من خلال واجهة WEB ، التي تعمل على نظامي Linux و MacOS.


بيثون


تحتاج إلى تثبيت تبعيات إضافية:


 pip2 install tornado esptool 

وقم بتشغيل ESP Home باستخدام هذا الأمر:


 esphome config/ dashboard 

عامل الميناء


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


 docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome 

لم تعمل من أجلي واستخدمت:


 docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome 

بعد ذلك ، يمكنك الذهاب إلى 127.0.0.1:6052 والعمل في واجهة مريحة:



هل لديك عمل جميل

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


All Articles