Статья

Использование ESPHome в связке с Home Assistant

ESPHome. Вникаем. Пользуемся.

Часть  I. Вводная.

Небольшое вступление

Полная и достаточно внятная поддержка ESPHome в Home Assistant пришла к нам с обновлением 0.85.

Что же такое ESPHome? 

Если коротко, то это инструмент, который позволяет интегрировать в Home Assistant устройства, созданные на базе ESP8266 / ESP32.

Конечно, есть масса других проектов для подобных задач, таких как Tasmota, ESPEasy, WifiIot, ESPUrna, но основное их отличие от  ESPHome заключается в том, что все они, для интеграции с любыми системами, используют MQTT, а вот ESPHome разрабатывался специально для Home Assistant и для интеграции используется Native API.

Я ни в коем случае не призываю отказываться от MQTT, но в связке ESPHome  Home Assistant он просто не нужен.

Так же, нужно добавить, что еще одним преимуществом является то, что здесь мы имеем для всех задач, в том числе и создании внутренних автоматизаций,  всего лишь один конфиг-файл, который использует YAML.

P.S. И в завершение краткого описания хочу сказать, если честно, проникся я этой системой, зацепила она меня. Вот уж действительно, в ней всё по-настоящему "Easy".

P.P.S. Статья будет большая, дабы не упустить важные моменты и показать максимум возможностей на старте.

Итак, в данной статье мы рассмотрим следующее:

  1. Установка ESPHome
  2. Создание файла конфигурации
  3. Прошивка платы
  4. Запуск
  5. Добавление датчиков

Приступим.

1. Установка ESPHome

Что использовал я?

У меня после переезда Home Assistant на Raspberry 3B остался не у дел Orange Pi LIte с 512 Мб и установленной DietPi на борту.

На этой плате и будем работать с ESPHome.

Следует заметить, что ESPHome может быть установлена на одном устройстве с Home Assistant. Но в моем случае обе системы находятся на разных устройствах. 

Так же есть возможность  работы системы в случае использования Hass.io . 

Для работы системы понадобится предустановленный Python 2.7 ибо система использует platformio.

Итак, установка:

pip install esphome

Надеюсь во время установки ошибок не возникло. Переходим к следующему этапу.

2. Создание файла конфигурации

В ESPHome есть 2 варианта создания основного файла конфигурации:

Создание файла в консолиСоздание файла в Dashboard

Я расскажу про оба эти варианта. 

Вариант первый. Создаем файл в консоли командой:

esphome test.yaml wizard

Где, test.yaml, это имя файла вашего проекта

Далее отвечаем на вопросы дружественного мастера установки:

Придумываем и указываем имя нашего проекта.Например, Test. Пишем с маленькой буквы. 
Теперь нужно выбрать и ввести тип нашей платформы. Я буду использовать ESP-01 с объемом памяти 1 Мб, по этому выбираю ESP8266.
Далее выбираем тип платы. У меня esp01_1m.
Теперь вводим имя нашей точки доступа, к которой будет подключаться наша плата. Обратите внимание: и плата которую мы конфигурируем и сервер на котором сейчас создаем файл конфигурации должны находиться в одной сети.
Вводим пароль для указанной выше точки доступа.
Вводим пароль для последующего обновления прошивки по воздуху.
Итак, мы создали файл основной конфигурации.Теперь нужно его залить в плату.Сделаем это.

3. ПРОШИВКА ПЛАТЫ

Перед прошивкой подключаем TTL-конвертер к серверу, а плату к конвертеру. 

Не забываем перевести плату в режим прошивки - замыкаем GPIO-0 на землю и подаем питание.

Прошивка устройства осуществляется командой:

esphome test.yaml run

После запуска скачиваются недостающие библиотеки и компилируется проект. Это займет какое-то время.

Потом система пытается залить скомпилированный файл в нашу плату.

Далее нам нужно выбрать, через что мы будем шить нашу плату: через TTL-конвертер или через ОТА.Первая прошивка должна заливаться только через TTL-конвертер.

Вот так выглядит заливка конфигурационного файла.

Далее, перезагружаем плату и по идее мы должны увидеть лог старта нашей платы.

На этом месте я прервусь, дабы перейти ко второму варианту создания конфигурационного файла.

Вариант второй. Создаем файл в Dashboard.

Для работы в Dashboard нам сначала нужно ее установить.

Сделаем это командой:

pip2 install tornado esptool

И запустим командой:

esphome config/ dashboard

После этого в браузере перейдем по адресу:

localhost:6052

Где, "localhost", это адрес сервера, на котором мы работаем с ESPHome

В браузере нас встречает вот такая форма:

Нажимаем на " " что бы создать конфиг-файл.

Вводим имя проекта
Выбираем тип нашей платы
Вводим логин и пароль WiFi
В завершение видим сообщение, что у нас всё хорошо и мы готовы к прошивке устройства.
В выпадающем списке справа выбираем, через что будем шиться. Для первого раза выбираем TTL-конвертер

Итак, мы готовы шиться.

Но перед этим пару слов о кнопочках проекта:

UPLOAD - запускает процесс прошивки по выбранному интерфейсуEDIT - позволяет редактировать конфиг-файлSHOW LOGS - показывает лог работающего устройстваVALIDATE - проверяет на ошибки конфиг-файл после изменения.

Переводим плату в режим прошивки - замыкаем GPIO-0 на землю и подаем питание.

Жмем VALIDATE и если ошибок нет, жмем UPLOAD.

Все, что происходит далее, ничем не отличается от прошивки через консоль.

4. Запуск

После прошивки видим, что наш проект онлайн - это значит, что дальше мы можем прошивать устройство по ОТА. 

Можем нажать SHOW LOGS и посмотреть, что там пишет наше устройство

После успешного старта проекта, пусть даже с пустой конфигурацией предлагаю заглянуть в Home Assistant.

Заходим в Настройки/Интеграции/Создать новую интеграцию и напротив строки ESPHome нажимаем НАСТРОИТЬ.

Вводим адрес платы. Можно посмотреть в логе
Вводим пароль, который мы указывали при создании конфиг-файла
Видим пока что, вот такую картину. А чего мы хотели, мы же еще не добавили ни одного датчика...

5. Добавление датчиков

Теперь откроем конфиг-файл и добавим веб-сервер и какие-нибудь внутренние датчики.

В Dashboard нажмем на EDIT.

Добавляем веб-сервер:

web_server: port: 80

Добавляем датчик, который будет нам показывать статус подключения нашего устройства к сети

binary_sensor: - platform: status name: "Test"

Добавляем датчик, который будет нам показывать время работы устройства в сети. 

sensor: - platform: uptime name: Test Uptime Sensor

Целиком конфиг-файл выглядит следующим образом:

esphome: name: test platform: ESP8266 board: esp01_1m wifi: ssid: '**********' password: '********' # Enable logging logger: # Enable Home Assistant API api: password: '*******' ota: password: '*******' web_server: port: 80 binary_sensor: - platform: status name: "Test" sensor: - platform: uptime name: Test Uptime Sensor

Сохраняем и нажимаем VALIDATE

Если ошибок нет, жмем UPLOAD для загрузки проекта в устройство.

После загрузки, система пытается подключиться к устройству и если подключение есть, то сразу же выводится в лог всевозможная информация, в том числе и статус подключения к Home Assistant.

Проверим, что там у нас в Home Assistant.

Ага. Отлично.

Теперь посмотрим на веб-сервер.

Для этого в браузере перейдем по адресу, который получило наше устройство.

Ну, неплохо же!

Теперь можно добавлять в конфиг-файл различные сенсоры, бинарные сенсоры, Light-компоненты, свитчи, автоматизации и прочие фишечки...

Вот собственно и всё, что я хотел рассказать в первой части. Этого пожалуй достаточно для старта.

Во второй части я планирую рассказать уже о более конкретной задаче, которую я хочу реализовать на устройстве Sonoff Basic.

Ну и в завершение.

Хочу добавить. 

Если вдруг вы хотите перейти с уже существующего устройства в котором залита Tasmota

или ESPEasy или ESPurna, то создаете конфиг-файл, как описано выше, только не жмете UPLOAD, а нажимаете на три точки, справа от имени проекта. Затем на кнопку COMPILE

После того, как скомпилируется ваш конфиг-файл вы можете скачать его и подсунуть для обновления прошивки вашего устройства в настройках той системы, которая сейчас установлена.

Ну и в завершение 2.

Если у вас возникли проблемы еще на первом этапе заливки основного конфиг-файла в устройство и проблемы эти связаны с Linux-системами, то можно скомпилировать файл и залить его из Windows программой esphomeflasher

В программе выбираете com-порт, к которому подключен TTL-конвертер, выбираете скомпилированный файл и жмете кнопку FLASH ESP

После удачной прошивки, устройство видится в Dashboard и с ним можно уже работать по ОТА.

Ну и в завершение 3. Бонус

Для автоматического запуска Dashboard, можно создать сервис в SystemD, например:

[Unit] Description=Dashboard After=network-online.target [Service] Type=simple User=%i ExecStart=/root/config esphome dashboard [Install] WantedBy=multi-user.target

Или добавить строку в rc.local

/usr/local/bin/esphome /root/config/ dashboard

Важный момент - обращайте внимание на пути, указанные в коде. Вы должны указать свои пути расположения ESPHome.

Вот теперь точно - всё!

Всем спасибо, кто осилил текст и дочитал до конца!

P.S. Статья обновлена 8.04.19 по причине критичных изменений в самом проекте ESPHome.

Изменения коснулись смены имени проекта. Раньше было ESPHomeLib, а теперь просто ESPHome.

Соответственно изменились основные команды и пути расположения файлов. 


Спасибо за ваш труд, очень интересная статья. Продолжайте в том же духе.

Спасибо. Буду стараться в том же духе)

Будет интересно почитать еще ваших трудов, подробно расписали и по полочкам. Как говориться для дураком. Если что это не оскорбление ни для кого. Просто очень подробно.

Как раз для меня статья) Спасибо добрый человек!)

Плюсую, хорошая статья, на хороший продукт. 

Но. Если ставить на sonoff - то переодически отваливается как и тасмота, и еспизи, на свежих ядрах (2.4 и 2.5) по тому что использует тоже самое ядро. По этому именно для соноф, я продолжают использовать тасмоту на ядре 2.3. 

А вот для ноды я конечно по эксперементирую. Планировал вообще отказаться от MySensors в пользу esphomelib но они еще так и не завезли поддержку датчиков MQ-2

Спорить не буду)

Продукт, хоть и хороший, но еще далёк от идеального... Ну и чего скрывать, сыроват конечно. Про отвалы пока ничего сказать не могу, а вот про некоторые заявленные, но не работающие функции есть что сказать... Но об этом наверное уже более подробно в следующей статье...

Обновление по ОТА стабильно работает?

Да, с этим проблем не было.

Правда я сразу пошел на хитрость и прописал статик IP.

Может это сказалось...

А на каком шаге и как прописать статик ip? 

После первой прошивки через USB плата стартанёт и в логе вы увидите IP, который она получила (или в статистике роутера можно посмотреть).


После этого снова редактируем конфиг-файл и правим там раздел WIFI. 


Выглядеть он будет примерно так (само собой с Вашими адресами и масками):


wifi:
ssid: MyHomeNetwork
password: VerySafePassword

# Optional manual IP
manual_ip:
static_ip: 10.0.0.42
gateway: 10.0.0.1
subnet: 255.255.255.0

было интересно в этом все разобраться и написать статью, но ты меня опередил, отличная статья!!! продолжай в том же духе 

Дополню для малины:


NOTE: Installation on RPis running in 64-bit mode is currently not possible. Please use the 32-bit variant of HassOS instead.

Насколько я понял проблема в отсутствии 64-битного paltformio.

Спасибо, как раз планировал протестировать эту прошивку

На сайте API еще указан https://esphomelib.com/esphomeyaml/changelog/v1.10.0.html?highlight=python#python-3-compatibility">вариант запуска на Python 3.5+ - 

pip3 install -U https://github.com/platformio/platformio-core/archive/develop.zip

На Python 3.7.3 смог запустить Dashboard только с помощью этой команды:
python2 -m esphome config/ dashboard
но при этом Dashboard не может скомпилировать или загрузить прошивку. Как быть?
 

Даже с Python 2.7 Dashboard не может скомпилировать прошивку. пришлось на вторую флешку ставить Hass.io


Спасибо огромное все получилось!

Завел две ESP все интуитивно . 

Но есть пару вопросов:

1 Как прокинуть в НК

2 Не кто не реализовывал термостат на данных прошивках . 

Здравствуйте! 

Скомпилировал прошивку, установил. но не могу завести еспешку в ХА.

При попытке настроить ESPHome (указать адрес и порт) пишет:

"

Не удается подключиться к ESP. Пожалуйста, убедитесь, что Ваш YAML-файл содержит строку 'api:'."

При этом еспешка в сети, на веб сервер еспешки захожу. По воздуху прошивки обновляю....

А ХА ее в упор не видит. Помогите, куда копать?


Спасибо!

Приветствую!


Есть ли в Вашем коде строка:


# Enable Home Assistant API 


api:
password: 'xxxxxx'

где хххххх Ваш api пароль в ХА


да, есть. и апи и ота. пробовал пустым отсавлять - результат тот же :-(

Нашел в чем была проблема (спасибо Vanya Pryanik!) - почему-то установленный питон и платформио, на моем рабочем ноуте, что-то не так компилировали и в итоге, при возможности обновлять прошивку по воздуху, заходить на веб-сервер, еспешка не регистрировалась в ХА. Но, после того, как мою конфигурацию Иван скомпилировал у себя (по моей просьбе) и прислал мне, а я ее залил на ЕСП, то все взлетело! 

В итоге, я поставил esphome на Orange Pi Zero и все завелось как надо, включая дашборд, который на ноуте выдавал ошибки.

Спасибо.

Друзья, помогите пожалуйста с написанием сенсора в конфиге для ESP-01 подключенного в ESPHome, который подойдет для этих задач: https://community.home-assistant.io/t/xiaomi-sherlock-smartlock/49396/86">https://community.home-assista...

, если я правильно понял - нужно одновременно подать сигнал с GPIO0  и GPIO2. Не судите строго, набиваю шишки как могу)

Я главного не понял, что, новый конфиг нужно постоянно в прошивку компилить и в устройство прошивать?

Да. Первый раз по проводам. Потом по воздуху.

PackageManager: Installing tool-esptool @ <2
Warning! Package Mirror: The 'sha1' sum 'e15fba5accf70d9c1574c47055ee9aedc0c3fe1c' of downloaded file 'tool-esptool-linux_armv6l-1.413.0.tar.gz' is not equal to remote 'bdfd4890e232df1876df63c8e676b12119e89c9f'
Looking for another mirror...
Error: Could not install 'tool-esptool' with version requirements '<2' for your system 'linux_aarch64'.

Please try this solution -> http://bit.ly/faq-package-manager

Вот такая ошибка возникает при попытке прошить устройство.
EspHome версия https://www.esphome.io/">v1.15.3
Подскажите что делать? А то я совсем новичок...

Да, я тоже столкнулся с этой проблемой.

Причем, она касается проектов только для 8266. Проекты для ESP32 заливаются без проблем...

Установил EspHome на другом сервере. Там все нормально...

К сожалению, как решить эту проблему, я не знаю... Может быть сообщество поможет?


Вроде получилось. Нужно в командной строке запустить:


platformio platform update


а потом


platformio upgrade

Добрый день! Статья полезная, спасибо!


Кто-нибудь может помочь мне?


Как на ESPHome прописать конфиг, чтобы на цифровые пины подавать 1 или 0 ?


В идеале мне нужно мигать светодиодом (например каждые 10 секунд).


В TASMOTA такая возможность реализована с помощью "Buzzer". Там можно к цифровому пину подключить пьезоизлучатель или светодиод, выбрать частоту мигания, а также длительность мигания. В ESPHome есть что-то подобное?

Спросите здесь 

https://t.me/esphome">https://t.me/esphome


Вернуться назад

Устройства


Raspberry Pi

Raspberry Pi 3 Model B+

(22 отзыва)
Заказать на:

Espressif Systems

ESP8266 NodeMcu v3

(15 отзывов)

Вернуться назад