Отслеживание местоположения в Home Assistant

Отслеживание местоположения в Home Assistant

Зачем нужно, чтобы умный дом знал, где вы находитесь? Вот несколько идей, которые можно реализовать:

  1. Автоматическое выключение света, когда все ушли из дома;
  2. Включение кондиционера или обогревателя, когда вы выехали с работы. Так чтобы дом охлаждался/прогревался пока вы едете;
  3. Оповещение близких, где вы находитесь;
  4. Автоматическое включение сигнализации, когда дома никого.
⚠️
Я больше не использую описанный здесь способ. Про более простой вариант трекера можно почитать тут.
Отслеживание местоположения телефона — обзор разных способов в Home Assistant
Отслеживание местоположения и присутствия в Home Assistant: трекинг телефона по Wi-Fi, определение дома/не дома, Home Assistant device_tracker, геолокация.Вк…

А о других способах отслеживания можно узнать из этого видео.

Разных способов отслеживания местоположения достаточно много. Например, можно через Android/iOS приложение OwnTracks. OwnTracks очень легко настраивается, но я попользовался приложением пару недель и в итоге решил отказаться от OwnTracks и настроить все с помощью Tasker. OwnTracks работает не очень точно и иногда может пройти минут 20 до того момента как умный дом поймет, что дома никого. Расход батарейки тоже не радует.

Идея

У меня на смартфоне уже и так было установлено приложение Tasker, которое я использовал для всякой другой автоматизации и у меня уже был настроен MQTT сервер. Поэтому замена OwnTracks придумалась очень быстро ?

Идея проста — когда смартфон отключается от домашней Wi-Fi сети и переключается на мобильный интернет, то Tasker оповещает об этом Home Assistant через MQTT. И тоже самое, когда смартфон подключается к Wi-Fi обратно.

Что понадобится

  1. Tasker на телефоне;
  2. MQTT Client;
  3. MQTT сервер (Mosquitto, встроенный в Home Assistant, облачный flespi или любой другой). На самом деле можно было бы обойтись и без MQTT, HTTP вполне достаточно, но MQTT сервер в любом случае полезная в умном доме штука.

Реализация

Реализация состоит из двух частей: настройка трекера в Home Assistant и интеграция Tasker.

Home Assistant

Для начала нужно добавить MQTT трекер (MQTT Device Tracker) в configuration.yaml:

device_tracker:
  - platform: mqtt
    devices:
      roland_bbf100_wifi: 'devices/phones/bbf100/wifi-ssid' # название девайса, которое будет использоваться в Home Assistant и соответствующий MQTT-топик
    payload_home: 'Home WiFi' # название домашней Wi-Fi сети
    payload_not_home: 'mobile_data' # название, которое будет использоваться для обозначения мобильного интернета
    source_type: 'gps'

И перезапустить Home Assistant. После этого в Developer Tools появится новый трекер:

device_tracker в Home Assistant

Принцип работы трекера очень прост. Если отправить в топик devices/phones/bbf100/wifi-ssid название домашней Wi-Fi сети, то трекер изменит состояние на home, а если отправить mobile_data, то соответственно на not_home. В случае если отправить любое другое название, например Office, то трекер так и покажет Office.

Осталось только привязать трекер к определенному человеку:

0:00
/0:10

Tasker

Для начала нужно настроить MQTT Client — добавьте брокера, укажите хост, имя пользователя и прочие требуемые параметры. MQTT Client умеет интегрироваться с Tasker и через него телефон будет "общаться" с Home Assistant.

Дальше переходим непосредственно к Tasker. Нужно добавить новую таску, которая будет передавать в Home Assistant информацию о текущей Wi-Fi сети каждый раз, когда телефон переподключается к интернету. Проще всего это сделать импортировав уже готовую таску, которую я заботливо подготовил ? Просто откройте эту ссылку с телефона.

Как все это безобразие работает? В Tasker есть встроенная переменная %WIFII, которая позволяет получить информацию о доступных Wi-Fi сетях. В таске на 2-ой строке проверяется содержит ли эта переменная слово >>> SCAN <<< и если да, то в MQTT топик отправляется сообщение mobile_data. Если нет, то парсится название сети и отправляется по MQTT.

Tasker с автоматизацией для отслеживания состояния Wi-Fi

А запускается эта таска по событию переподключения к MQTT серверу (настраивается на вкладке Profiles). То есть таска запускается каждый раз, когда меняется текущая активная сеть, через которую телефон подключен к интернету.

Альтернативные способы

Мне хотелось организовать какой-то простой, но достаточно точный способ отслеживания местоположения и Tasker + MQTT очень хорошо подошли. Но помимо этого на странице Home Assistant есть еще несколько десятков различных интеграций. Даже описанный метод можно модифицировать, например, заменив MQTT на HTTP или Tasker на любое другое приложение.

Мне было бы очень интересно узнать использует ли кто-то другие способы отслеживания — пишите в комменты.

Была ли статья полезна?

Хотите сказать спасибо? Кофе автору — ваша благодарность.

На кофе
Подписка на новые статьи

Уведомления, как только в блоге появится что-нибудь интересненькое.

Подписываясь, вы даете согласие на обработку персональных данных.