Приветствую, вас, строители немного умных домов.
Решил я научить свой пока еще не очень умный дом определять есть ли кто из постоянных жильцов в квартире. Здесь хочу описать свой личный опыт на эту тему.
Исследование интернета на наличие информации, о вариантах обнаружения присутствия:
1. GPS координаты телефона, не очень стабильное решение. Не хочется ставить, что-то специальное на телефон. Разные модели телефона имеют свои особенности. Много личной информации остается в интернете.
2. Определение присутствие телефона по выделенному IP домашней сети WIFI. Не понравилась зависимости от роутера и особенностей настройки dhcp. Иногда забываю включить WIFI на своем древнем телефоне с умирающим аккумулятором.
3. Определение телефона по BLE. Не взлетело, мой древний телефон на андроиде определялся почти всегда, а вот айфон как-то не очень. Принято решено отказаться от отслеживания телефонов. Как говорится " Ну не шмогла я, не шмогла".
4. Жена носит miband3, я miband2, почему бы их не использовать как ibeacon маяки.
4.1. У raspberry pi3 есть на борту BLE, именно на ней у меня сейчас крутится HA, но в сети нахожу множество сообщений о появлении тормозов HA на малинке при использовании ее BLE как сканер. Возможно все завесит от режима сканирования. Решил не трогать эту малинку.
4.2. Почему бы не использовать ESP32. Попробовал сделать сам. Но видимо навыков программирования не хватило, так и не смог разобраться как разделить сканирование BLE и подключение WIFI, на этом микроконтроллере. А вместе они дают не очень стабильный результат.
4.2.1 Позже наткнулся на готовые проекты, например: ESP32-mqtt-room, но уже построил себе другой велосипед. Кроме того, судя по комментарию автора, решение не блещет стабильностью.
4.3. Есть еще проект happy-bubbles. Собирают устройства на esp8266+BLE трансмиттер, автор утверждает, что заменить эту парочку на одну ESP32, без потери качества невозможно.
4.4. Если вы заходили на приведенные пруфы выше, то там уже видели упоминание проекта monitor в бета версии автор отладил обнаружение ibeacon. Именно этот проект мне помог решить поставленную задачу в п.4.
Подробности о работе monitor:
Решение тоже не идеальное, если почитать тему , то там обнаружатся сообщения о возникновении помех в сети wifi при работе в режиме отправки запросов на имя устройств (см. в описании сканирование ARRIVAL и DEPART) у некоторых пользователей. Для избежание таких проблем автор предлагает запускать сканирование не периодически, а только по определенным событиям, например, при срабатывании датчика открытие входной двери.
Тем не менее сканирование в режиме обнаружения ibeacon, помех не создает, т.к. идет только слежка за эфиром.
Автор использует несколько сканеров по одному на каждом этаже. Мне хватает одного устройства на квартиру 75 кв.м.
Вернемся непосредственно к miband. Вообще в общем случае носимые устройства не являются ibeacon маяками, т.к. по протоколу BLE они должны иметь анонимный случайный мак адрес и приватный. В эфир должны рекламировать в открытом виде только анонимный случайный мак адрес (адрес меняется, поэтому не годен для отслеживания).
Мои действия:
1. Покупка raspberry zero W и корпуса (микросд на 8 gb уже была в запасах).
2. Инсталляция ПО, с настройкой клиента MQTT. Файл known_static_addresses не заполнял.
3. Обновление до бета версии.
4. Тюнинг с ключом -b. Увидел, что браслеты обнаруживаются и передаются в MQTT.
5. Настройка сенсоров в HA. Взаимодействие с монитором осуществляется через сообщения MQTT. Смотрите подробности настроек на github.
6. Добавление параметра PREF_BEACON_MODE = true в behavior_preferences. После этого монитор будет работать в фоновом режиме в режиме сканирования ibeacon.
Решение тестирую уже дней 5 (квартира около 75 кв. м.). На текущий момент замечены редкие исчезновения отслеживаемых устройств (на несколько секунд, скорее всего в это время идет синхронизация браслета с телефоном):
Это нужно учитывать при настройке автоматизаций.
Побочный эффект, в сканере видны устройства соседей:
Резюме.
Надеюсь эта краткая информация будет для кого то стимулом к изучению и использованию описанного ПО.
P.S.
В процессе более длительной эксплуатации этого решения, замечены редкие (1 случай за 8-9 дней) "пропадания" браслетов на 10-15 минут. Т.о. браслеты miband не очень подходят для 100% отслеживания присутствия по ним. Эксперимент еще не закончен, установил параметр PREF_RSSI_IGNORE_BELOW=-85, наблюдаю.
Автор обновил основную ветку проекта, поэтому сейчас сканирование маяков работает не только в бета версии.
На ESP32 можно установить esphome, там есть BLE трекер. Заказал с Али ble брелки для ключей (посчитал что это будет самым достоверным способом определения) потом в блог напишу как попробую. ESP32 с этой прошивкой сейчас использую для снятия показаний с xiaomi mi plant датчика, две недели полет нормальный.
Да, интересно будет узнать ваш опыт, не зависимо от результата.
Такой вариант (esphome +
esp32) я тоже пробовал, трекер находил браслеты, но не всегда или с большой задержкой, после того как браслеты становятся не доступными не сообщал об этом в HA. Последний баг наверное можно победить на стороне HA, но первый все перечеркивает. Кроме того список обнаруживаемых устройств соседей у raspberry побольше, т.е. она как минимум более чувствительная и охватывает мою квартиру полностью.
Но все эксперименты с esp32 я проводил на одном и том же экземпляре, возможно это персональная проблема моего экземпляра микроконтроллера.
Сужу только по сообщениям на форумах брелки с али бывают разные, некоторые шлют рекламу один раз в час. Тут как повезет.
Какие маяки заказывал?
https://s.click.aliexpress.com/e/kMdF0Wq">https://s.click.aliexpress.com...
еще не пришли, пока не могу про них ничего сказать
как дела у маяков спустя 2 года? цена уж очень хорошая, в 10-20 раз меньше всяких Самсунгов-Apple-etc.
В процессе эксплуатации этого решения, замечены "пропадания" браслетов на 10-15 минут (пока 1 случай). Т.о. браслеты miband не очень подходят для 100% отслеживания присутствия по ним.
Добрый день, спасибо за вашу статью. Очень актуально. Напишите пожалуйста подробно о настройках monitor для обнаружения маяков и передачи данных в Home Assistant. На githubе не разобрался. Установить установил, а что дальше...? Спасибо.
Добрый день, к сожалению, сейчас вся система отключена, идет капитальный ремонт в квартире. Месяца через два только смогу вернуться и написать по делу.
Очень жду продолжения статьи. Наверное одно из не многих рабочих решений.
Скажите пожалуйста, будет ли продолжение статьи?
Поставил официальное HA положение. С тренингом зоны по gps. Ранее использовал трекинг gps через ifttt.
очень надежное и стабильное решение. Батарею потребляет мало благодаря оптимизациям