В этом примере используются:
Raspberry pi: http://ali.pub/58qrm4
esp8266: http://ali.pub/3dpoub
ds18b20: http://alli.pub/5pka1o
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
ESPHome – это система для управления вашим ESP8266 / ESP32 с помощью простых, но мощных файлов конфигурации и удаленного управления ими через системы домашней автоматизации.
Основное преимущество ESPHome от просто написания кода. Это то, что ESPHome заточен работать как умный дом и у него существует интеграция с Home Assistant. По этому разработка очень сильно упрощается. И очень просто добавить любой датчик с помощью ESPHome и контроллера esp в Home Assistant.
В этой статье покажу Вариант установки ESPHome непосредственно на сервер Home Assistant. И с него прошивать будем микроконтроллер ESP.
Чтоб установить ESPHome в Home Assistant необходимо зайти в Supervisor далее Add-ONs и там найти ESPHome и установить его.
После установки, включим ползунок “Показывать на боковой панели”
Теперь зайдем в ESPHome и там увидим пустое поле. И только значек “+” в правом нижнем углу.
Нажав его мы начнем создавать устройство. Создание устройства состоит из 5 пунктов:
Первый пункт – это приветствие
Второй пункт – это имя нашей ноды которую мы создаем выполняя 5 этих пунктов.
Третий пункт – это выбор устройства которое мы будем прошивать.
Четвертый пункт – тут указываются SSID и Пароль от wifi сети. И также устанавливается пароль на прошивку по воздуху OTA. ESPHome сразу поддерживает прошивку по воздуху. После того как установим первый раз его.
Ну и пятый пункт – где мы просто соглашаемся и нажимаем готово.
Итак устройство создано. И если мы нажмем теперь edit на нем. То попадем в окно где можно писать конфиг.
А писать для примера мы будем код, для работы с датчиком температуры от компании dallas. Это ds18b20.
Для этого открываем вкладку edit и видим следующее:
Эти параметры создались автоматически на основе тех данных которые мы ввели при создании данной ноды.
Чтоб настроить датчик ds18b20. Ниже нужно дописать следующее:
dallas:
pin: D4
update_interval: 360s
где D4 это пин к которому подключается датчик. И загружаем получившийся код подключив контроллер к серверу Home Assistant. Выбрав в верхнем углу ком порт к которому подключен микроконтроллер. И нажать кнопку UPLOAD.
После этого откроется окно консоли и начнет загружаться программа с помощью PlatformIO.
После окончания загрузки у нас в консоли произойдет подключение к WI-fi сети которую мы указали. В случае успешного подключения к сети. Начнется опрос датчика ds18b20 и покажется в консоли его адрес. Этот адрес нужно скопировать и сохранить пока.
Ну а теперь дописываем код следующим образом:
===========================================================
esphome:
name: temperature_test
platform: ESP8266
board: nodemcuv2
wifi:
ssid: "test"
password: "test"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Temperature Test"
password: "nTCpBwKGatQw"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
password: "test"
ota:
password: "test"
#D4 - это пин к которому подключен датчик. update_interval: задается в секундах. Время через которое будет опрашиваться датчик.
dallas:
pin: D4
update_interval: 10s
# address: это адрес который получается при сканировании датчика. Его нужно копировать из консоли.
sensor:
- platform: dallas
name: "temperature_test"
address: "0xA104166427CCFF28"
==================================================================
А так будет выглядеть код с Выводом значений температуры на дисплей m5stack:
spi:
clk_pin: 18
mosi_pin: 23
miso_pin: 19
#D4 - это пин к которому подключен датчик. update_interval: задается в секундах. Время через которое будет опрашиваться датчик.
dallas:
pin: 26
update_interval: 10s
# address: это адрес который получается при сканировании датчика. Его нужно копировать из консоли.
sensor:
- platform: dallas
name: "temperature_ds18b20"
id: temperature_ds18b20
address: "0xA104166427CCFF28"
font:
- file: "fonts/Roboto-Medium.ttf"
id: font_roboto_medium22
size: 22
color:
- id: RED
red: 100%
green: 0%
blue: 0%
- id: BLUE
red: 0%
green: 0%
blue: 100%
- id: WHITE
red: 100%
green: 100%
blue: 100%
display:
- platform: ili9341
id: m5stack_display
model: M5Stack
cs_pin: 14
dc_pin: 27
led_pin: 32
reset_pin: 33
rotation: 0
lambda: |-
it.rectangle(0, 0, it.get_width(), it.get_height(), WHITE);
it.rectangle(0, 22, it.get_width(), it.get_height(), WHITE); // header bar
it.print(it.get_width() / 2, 11, id(font_roboto_medium22), WHITE, TextAlign::CENTER, "DS18b20");
it.print(11, 33, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Temperature");
it.printf(it.get_width() - 11, 33, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f ", id(temperature_ds18b20).state);
Все. После этого сохраняем конфиг и загружаем в контроллер. Теперь можно выбрать даже метод OTA. ESPHome сам поймет какой адрес у устройства и прошьет его по воздуху.
На этом настройка устройства закончена. Теперь давайте его добавим в Home Assistant.
Для этого перейдем в Настройки -> Интеграции -> найдем интеграцию ESPHome.
Здесь у нас запросит пароль. Пароль нужно вводить тот который вы указали в конфиге созданной ноды в блоке Api
После этого создастся новый сенсор с именем sensor.”имя которое указали в блоке sensor при создании ноды”
На этом все. Интеграция в Home Assistant закончена.
Все данные шаги я проделал в видео ниже. Если что-то непонятно в статье, то советую посмотреть его: