Умный дом: Bluetooth устройства.
Третьего дня, решил заняться заведением всяких bluetooth устройств в свой умный дом. В Home assistant для себя нашел 2 способа введений устройств:
СТИК
В качестве стика был выбран Buro BU-BT40С Bluetooth 4.0+EDR. Он пленил меня внешний антенной, а значит неплохим радиусом работы. Когда поставил он превзошел все самые смелые ожидания. Не только мониторил все мои устройства в немаленькой квартире, но некоторые соседские.
Подключение через модуль Passive BLE monitor, будут добавляться устройства для управления, для некоторых нужно подключение со стороны устройства.
Далее device_tracker позволяет отслеживать устройства поблизости полезен отслеживания наличия людей по телефонам или браслетам.
Что бы включить эту функцию надо в конфиг добавить:
далее устройства отыскиваются и сохраняться в файл known_devices.yaml
Можно устройствам назначить картинки, иконки, отслеживать или нет. Для чужих я ставлю «track: false» так как если удалить, устройство появится снова.
Шлюз
В качестве шлюза можно использовать контроллер ESP32 на борту которого есть и Wifi и Bluetooth. Тут уже надо прописывать все устройства которые будут через шлюз управляться или сниматься с них показания. Из интерфейса HA через модуль ESPHome можно создать прошивку прописать туда устройства и залить на плату, далее обновляться уже будет по воздуху.
У меня модули в загашнике оказались старого поколения купленные года 3 назад, и на отрез отказались работать. Зато в наличии оказался модуль
Heltec Lora 32 , который взял на себя функции шлюза bluetooth:
Heltec, Wi-Fi, Lora 32 V2, 433 МГц, ESP32, LoRa SX1278, esp32, OLED-дисплей 0,96 дюйма, плата для разработки Bluetooth для Arduino
Может в дальнейшем ещё пару функций добавлю и корпус сделаю.
Итого что удалось сюда воткнуть:
- Наличие моих умных часов MI Band 6
- Наличие в сети и нажатие кнопки на iTag . Так же батарейку.
Bluetooth шлюзы Xiaomi
В системе умного дома Xiaomi используются 3 протокола беспроводной связи Wi-Fi, ZigBee и Bluetooth. И если с принципом работы первого знакомы все, второй разобран в отдельной статье, то по блютус протоколу могут возникнуть вопросы. Например, из-за его небольшого радиуса действия устройства с Bluetooth видятся только в непосредственной близости со смартфоном.
Чтобы решить эту проблему, в 2017 году было введено понятие Bluetooth-шлюз.
Принцип работы аналогичен ZigBee шлюзам, датчик с модулем Bluetooth подключается к одному из устройств, которое имеет одновременно 2 беспроводных интерфейса, по блютусу держит связь с датчиком, а по Wi-Fi обменивается данными с облаком. Схематично это выглядит так:
Такая схема работы позволяет обеспечить длительную работу умных устройств от батарейки и, в отличии от устройств с ZigBee протоколом, возможность подключения к устройству напрямую.
Устройства с протоколом Bluetooth можно разделить на 2 категории: подключаемые устройства и Bluetooth шлюзы. Посмотреть полный список устройств, которые могут выполнять роль шлюза, можно в приложении Mi Home, во вкладке «Profile» > «BLE Gateway».
Если у вас уже есть устройства, которые могут выполнять роль шлюза, они отобразятся в списке. А если зайти в Bluetooth шлюз, то отобразится список устройств которые можно к нему подключить. В приложении присутствует небольшая инструкция:
А вот если подходящих устройств нету, то приложение предложит их купить:
На данный момент (январь 2020 года), 10 устройств поддерживают функцию шлюза:
1. Камера видеонаблюдения Mijia Smart Home Camera
Одно из первых устройство с функцией Bluetooth шлюза. Вполне неплохая камера с FullHD разрешением и углом обзора в 130 градусов. Сейчас уже снята с продажи и найти её затруднительно , но если вдруг вам попадется, её код продукта S XJ01ZM .
Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32
Всем привет. Если помните в обзоре на часы Mijia я упоминал, что для подключения часов к Home Assistant можно воспользоваться проектом под названием bt-mqtt-broker. Практика показала, что данный сервис весьма и весьма нестабильный. Периодически Bluetooth на сервере намертво зависал, и приходилось дёргать службу. В общем после очередного зависания, решил поискать, что можно еще сделать, и нашел решение за 300 рублей, которое предельно просто реализовать, без паяльника и прочих прелестей.
Решение это — плата разработчика на ESP32 , а также проект под названием ESPHome .
Приезжает плата в обычном антистатическом пакете, и, к слову, в мягком почтовом пакете. Для защиты на ножки был нацеплен мягкий материал. Доехала к счастью платка целая и невредимая.
На плате указан производитель – Az-Delivery.
Внешне и по размерам она очень сильно напоминает Arduino Nano. Гребенки контактов, для экспериментов с макетными платами – сразу распаяны. Микроконтроллер тут установлен — от Espressif – ESP32-WROOM-32D.
Питание и подключение к компьютеру осуществляется при помощи MircoUSB порта. Обратите внимание, что при заказе данной платы возможно 2 варианта – со встроенной антенной и без неё, но с возможностью подключения внешней. Плата работает одновременно и с WiFi и c Bluetooth.
Перейдем, собственно, к созданию шлюза из этой платы.
Потребуется компьютер с 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 (или по адресу вашего компьютера, если заходите не с него), и создаем тут новый проект.
Задаём имя будущего шлюза
Выбираем из списка нашу плату, если такой нет в списке, то можно попробовать выбрать что-то с похожим названием, или generic. В моём случае при выборе Generic esp32 всё прекрасно заработало.
На следующем шаге вводим имя WiFi сети и пароль от нее, а также пароль для обновлений по воздуху и для доступа к шлюзу со стороны Home Assistant.
Жмем 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, и как следствие может негативно влиять на разряд батареи в устройствах, но в то же время, когда режим работы пассивный – некоторые функции могут работать не корректно. Также, к сожалению для моих часов не передаются данные о заряде батареек. Остальное, как мне кажется, в комментариях не нуждается.
Вообще на сайте ESPHome можно найти великое множество примеров для разных устройств. Так что можете там поискать для вашего.
Сохраняем конфиг, закрываем и жмем validate. Если проверка пройдена, то остается только залить прошивку в микроконтроллер.
Подключаем плату к USB и переводим её в режим прошивки, для этого жмем на ней на кнопку boot и не отпуская эту клавишу однократно нажимаем на cn, или en, в общем вторую кнопку =). В правом верхнем углу появится новый порт, выбираем его и жмем upload. Дожидаемся загрузки и когда пойдут логи связанные с обнаружением Bluetooth устройств можно жать на Stop всё отключать и уносить самодельный шлюз в нужное место.
В будущем, прошитые девайсы можно обновлять по воздуху (OTA), с данной платой я пробовал – всё замечательно работает. Но на форумах часто встречал жалобы, что с той или иной платой других производителей – данная функция нормально не работает.
Остается только добавить интеграцию ESPHome в Home Assistant, дальше всё подтянется автоматически. В смысле подтянется ваш ESP32 как устройство, с объектами которые были прописаны в конфиге (в моем случае температурой и влажностью). Занимательно, что имена объектов точно такие же, как были заданы в конфиге.
Пользуюсь этим самодельным шлюзом уже несколько недель, и ни одной проблемы с ним пока не возникло. Работает как часы. Правда стоит оговориться, что у меня к нему подключено только одно устройство, не исключено, что что-то может пойти не так, если добавить на одну еспишку великую гору устройств.
Добавляем поддержку BLE (bluetooth) устройств в Home Assistant
В последней публикации из своей трилогии я расскажу, как добавить поддержку Bluetooth устройств в умный дом на Home Assistant, а также напомню способ установки кастомных компонентов.
Translation to English is here . Также основной канал в telegram .
Первая часть заключалась в том, что я описал купленный стик:
Во второй части я описал как добавить поддержку сервисов Bluetooth в Linux, если таковой у Вас еще нет:
И вот — настало время все соединить воедино. Как я уже объяснил в прошлой статье, на сайте Home Assistant есть как минимум три интеграции, но они нам не нужны. Мы будем использовать интеграцию Passive BLE Monitor integration . Она себя зарекомендовала и множество (тысячи) пользователей установили ее себе и отметили ее на GitHub звездой.
Есть 2 способа установить эту интеграцию: а) Через HACS: писал про это тут:
б) Создаем рядом с файлом конфигурации Home Assistant папку custom_components и копируем в него интеграцию прямо с GItHub из этой папки .
Для копирования файлов на сервер очень удобно использовать ftp. Как его настроить, например, на Windows — писал тут:
1. Копируем файлы в папку или ставим из HACS (↑ описано выше ↑).
2. Далее перезагружаем HA и переходим в интеграции и набираем в поиске BLE. Если пункт №1 выполнен правильно, то найдется интеграция Passive BLE monitor
3. Выберем ее и нажмем «установить»
4. Как только установка закончится, появится менюшка. Если Bluetooth адаптер настроен верно, то мы увидим его в списке ниже(hcl0). Проверим что на нем стоит галка.
4. Я дополнительно установил галку на пункте «авто рестарт», но не уверен, что это требуется — скорее перестраховался.
5. После того, как я нажал кнопку «ок», в квартире мгновенно нашлись 4 устройства. Все устройства были от Xiaomi.
6. Нажимаем «финиш». Интеграция отображается в общем списке. Также показываются устройства и сущности.
7. Давайте нажмем на «устройства»:
8. Давайте нажмем на сущности:
Устройства заведенные в HA таким образом работают точно также как и WiFi или ZigBee устройства. За 2 недели у меня не было пока никаких проблем ни с одним из них. Не требуются никакие сопряжения устройств и прочие танцы с бубном, что я нахожу очень удобным. Всем добра!
Подпишитесь , чтобы не пропускать следующий контент.
Нажмите лайк , если интересно, так я пойму какие публикации больше нужны моей публике.
Также публикации можно найти на других площадках: Instagram , telegram ( RU , EN , DE ), Medium , LiveJournal , YouTube .
Мой блог является некоммерческим, поэтому позитивный комментарий, лайк или репост поможет публикациям выходить чаще ☺.