بصفتي أحد المعجبين بنظام التحكم الذكي في 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 والعمل في واجهة مريحة:

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