В одной из последних статей говорилось о том, каким образом можно определять присутствие человека дома и какие методы использую я. Отслеживание блютуз устройств весьма надежный способ, а главное - нет никаких проблем с постоянно включенной геопозицией или засыпающим wi-fi модулем в телефоне. Сейчас продается множество ble-меток, которые можно повесить на ключи или что-то подобное. У меня на момент внедрения этого метода в умном доме уже было устройство с ble, которое постоянно носил с собой - это фитнес браслет xiaomi mi band 4, поэтому мы будем отслеживать именно его.
Для отслеживания нам нужно не только то устройство, которое будет отслеживаться, и сопоставлять с человеком, но и другое устройство, которое и будет непосредственно отслеживать ble метку. В качестве такого устройства нам понадобится плата с модулем esp32. Следует обратить внимание, что платы на основе контроллера esp8266 не подойдут, так как не имеют на борту bluetooth-модуля, а только wi-fi.
Для прошивки платы будем использовать ESPHome. Ниже представлена та часть кода ESPHome, которая отвечает за отслеживание Mi iband.
Я буду добавлять этот код в уже существующий проект, который не так давно перевел на ESP32, а именно - счетчик воды и интеграция аквасторожа поэтому файл на гитхаб будет достаточно объемным.
Вначале необходимо включить компонент esp32_ble_tracker, а далее создать бинарный сенсор на платформе ble_presence и вписать мак адрес своего браслета.
Узнать его можно в приложении mi fit: на вкладке “Профиль” нажмите на ваш Фитнес-браслет. В меню браслета листайте в самый низ, пока не увидите “Адрес Bluetooth. Вводить нужно точно так же с двоеточиями.
После загрузки прошивки и подключения модуля esp по api к Home Assistant нам будет доступен новый бинарный сенсор.
В принципе, на этом можно остановиться и использовать этот бинарный сенсор в автоматизациях, но если у вас созданы person и вы отслеживаете именно их - добавить в person бинарный сенсор нельзя, только device_tracker. Поэтому придется еще немного схитрить и создать автоматизацию, которая на основе этого бинарного сенсора будет делать device_tracker.
Вот как она выглядит:
Я уверен, можно было бы написать эту автоматизацию короче и компактней. Если вы знаете как - пишите в комментарии!
После первого срабатывания автоматизации в файле /config/known_devices.yaml (если его не было, он будет создан) появится приблизительно следующий текст:
Тут главное проследить, что в параметре track: было true, если это не так - исправьте и сохраните файл.
Но и это еще не все, по умолчанию device_tracker создается с source_type: gps, это меня не устраивает, объединяя несколько таких трекеров в person можно получить не тот результат что нужен, так как изменение device_tracer с gps в источнике обладает наивысшим приоритетом при решении какое состояние присвоить person. Поэтому необходимо изменить этот источник. Сделаем это с помощью внесения изменений в файл customize.yaml, в него были заранее вынесены из configuration.yaml изменения других сущностей. Добавляем следующий тест.
device_tracker.bath_mi_band_4:
source_type: router
Все, теперь наш трекер можно добавлять в person и настраивать автоматизации. Автоматизации и конфиг ESPHome доступны на github.
Подписывайтесь на мой канал и страницу в инстаграм @smart.home53 , чтобы не пропустить обновления.
#умный дом #home assistant #smart home #esp #wifi #mi band #технологии #интернет вещей #iot #автоматизации