Вы здесь

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32


Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32

Всем привет. Если помните в обзоре на часы Mijia я упоминал, что для подключения часов к Home Assistant можно воспользоваться проектом под названием bt-mqtt-broker. Практика показала, что данный сервис весьма и весьма нестабильный. Периодически Bluetooth на сервере намертво зависал, и приходилось дёргать службу. В общем после очередного зависания, решил поискать, что можно еще сделать, и нашел решение за 300 рублей, которое предельно просто реализовать, без паяльника и прочих прелестей.

Решение это - ]]>плата разработчика на ESP32]]>, а также проект под названием ]]>ESPHome]]>.

Не забывайте ]]>про кэшбэк]]>.

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

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - плата призжает в антистатическом пакете

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - ножки защищены мягким материалом

На плате указан производитель – Az-Delivery.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - производитель AzDelivery

Внешне и по размерам она очень сильно напоминает Arduino Nano. Гребенки контактов, для экспериментов с макетными платами – сразу распаяны. Микроконтроллер тут установлен - от Espressif – ESP32-WROOM-32D.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - микроконтроллер тут  - espressif ESP32-WROOM-32D

Питание и подключение к компьютеру осуществляется при помощи MircoUSB порта. Обратите внимание, что при заказе данной платы возможно 2 варианта – со встроенной антенной и без неё, но с возможностью подключения внешней. Плата работает одновременно и с WiFi и c Bluetooth.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - подключение осуществляется посредством MicroUSB

Перейдем, собственно, к созданию шлюза из этой платы.

Потребуется компьютер с Linux, в моём случае – Ubuntu 20.04.

Как всегда сперва лучше обновиться:

sudo apt update
sudo apt upgrade

 

Если вдруг у вас не стоит Python или pip3 – установите их:

sudo apt install python3 python3-pip

 

Дальше ставим esphome при помощи pip:

sudo pip3 install esphome

 

А также пакеты для работы веб интерфейса (но можно и без него обойтись, используя только команды, подробности описаны на сайте esptool), скорее всего они установятся во время установки esphome, но на всякий случай

sudo pip3 install tornado esptool

 

Запускаем веб интерфейс:

sudo esphome config/ dashboard

 

config/ - это папка, относительно вашего текущего местоположения в терминале, куда будут складываться ваши конфиги.

Далее переходим по адресу – 127.0.0.1:6052 (или по адресу вашего компьютера, если заходите не с него), и создаем тут новый проект.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - веб интерфейс ESPHome

Задаём имя будущего шлюза

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - задаем имя шлюза

Выбираем из списка нашу плату, если такой нет в списке, то можно попробовать выбрать что-то с похожим названием, или generic. В моём случае при выборе Generic esp32 всё прекрасно заработало.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - указываем тип платы

На следующем шаге вводим имя WiFi сети и пароль от нее, а также пароль для обновлений по воздуху и для доступа к шлюзу со стороны Home Assistant.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - вбиваем параметры WiFi

Жмем submit, и возвращаемся на главный экран.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - жмем submit

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

esp32_ble_tracker:

  scan_parameters:

    active: false

sensor:

  - platform: xiaomi_lywsd02

    mac_address: e7:2e:00:f1:4c:95

    temperature:

      name: "Xiaomi Clock Temperature"

    humidity:

      name: "Xiaomi Clock Humidity"

Обратите внимание на параметр active:false – есть подозрение, что если его не указывать, то он по умолчанию в состоянии true, и как следствие может негативно влиять на разряд батареи в устройствах, но в то же время, когда режим работы пассивный – некоторые функции могут работать не корректно. Также, к сожалению для моих часов не передаются данные о заряде батареек. Остальное, как мне кажется, в комментариях не нуждается.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - пример конфига

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

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

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - проверка пройдена

Подключаем плату к USB и переводим её в режим прошивки, для этого жмем на ней на кнопку boot и не отпуская эту клавишу однократно нажимаем на cn, или en, в общем вторую кнопку =). В правом верхнем углу появится новый порт, выбираем его и жмем upload. Дожидаемся загрузки и когда пойдут логи связанные с обнаружением Bluetooth устройств можно жать на Stop всё отключать и уносить самодельный шлюз в нужное место.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - прошивка загружена

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

Остается только добавить интеграцию ESPHome в Home Assistant, дальше всё подтянется автоматически. В смысле подтянется ваш ESP32 как устройство, с объектами которые были прописаны в конфиге (в моем случае температурой и влажностью).  Занимательно, что имена объектов точно такие же, как были заданы в конфиге.

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - интеграция esphome в Home Assistant

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32 - появились объекты

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

Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32

66 65

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


Если вам помогла статья, вы можете >>отблагодарить автора<<