Блог

Автоматизация по местоположению в Home Assistant

Писатель из меня так-себе. Потому, прошу сильно не пинать, а если что-то не понятно - спрашивайте! Помогу чем смогу ;) 

Как известно, в home assistant реализовано большое количество компонентов для обнаружения присутствия (52 модуля) среди которых есть модули мониторящие устройства подключенные по WiFi к роутеру (TP-Link, Huawei, Asus, Ubiquity, OpenWRT), следящие за устройствами имеющими включенный Bluetooth модуль, а также компоненты получающие данные о местоположении пользователя из систем мониторинга (OwnTracks, Traccar, Google Maps Location Sharing). Благодаря им можно не просто наблюдать за теми кто находится дома, но и мониторить местоположение устройств и их владельцев вне дома. Я не буду пересказывать документацию этих компонентов - это скучно и можно найти на официальном сайте. 

Вместо этого я рассмотрю подключение Home Assistant к MQTT брокеру flespi

flespi

На самом деле flespi это не простой mqtt брокер - это система позволяющая подключать и перенаправлять данные от различных GPS трекеров (на данный момент поддерживается 273 типа устройств) и систем мониторинга. При этом данные парсятся в удобный унифицированный JSON формат. Кроме того, это не публичный mqtt брокер к которому все имеют неограниченный доступ. Тут присутствует авторизация по токену, гарантирующая, что в топиках будут только ваши данные и их никто не сможет получить. 

Теперь немного о том, как это работает:

Вы создаёте flespi канал в панели управления.
Направляете своё (*поддерживаемое) устройство или приложение (например WiaTag Android или iOS) на flespi (указав в настройках ip и порт).
Все поступающие в flespi сообщения от устройств парсятся в соответствии с выбранным протоколом попадают в MQTT брокер в виде JSON объекта. 

Регистрация по email или с использованием соцсетей. Для личного дома должно быть вполне достаточно бесплатного пакета. Залогинился гуглом/фейсбуком/гитхабом/мелкомягкими и в путь.

В flespi есть несколько вариантов получения данных о местоположении:

Для первого варианта вам достаточно:

подключить устройство к каналу flespi соответствующего протоколу устройства

подписаться на топик flespi/message/gw/channels// с подставленным id канала и ident устройства

   Во втором случае вам надо:

так-же подключить устройство к каналу

после чего, необходимо будет создать виртуальное устройство flespi (с указанным типом как созданный канал) и прописать туда ident

а уже затем, можно будет подписаться на топик flespi/message/gw/devices/ с соответствующим id устройства.

Отличие в том, что устройство flespi спроектировано для хранения истории сообщений (до 10 лет), а канал flespi является трубой, конвертирующей сообщения от устройств из определённого протокола в json формат и долгое хранение данных в каналах не предусмотрено.

Для примера использования и простоты настройки я решил показать настройку на основе Telegram бота, который отправляет сообщения в канал flespi. Однако, вы можете использовать любой программный или железный трекер, который поддерживается в flespi.

Для начала создадим канал работающий через Телеграм бота.

Вам необходимо в настройках канала указать токен телеграм бота которого вы создали в телеграме через botfather.
Если вы все правильно сделали - можете отправить сообщение с позицией в чат телеграм бота и в канале увидите принятое сообщение. Теперь, если вы выбрали второй путь и вам необходимо хранить историю посещений - настроим виртуальное устройство flespi.
Главное, что нужно понимать на этом этапе - вы должны выбрать подходящий device_type и ident.  В нашем случае это будет Telegram и Dexif.
Если все настроено правильно и вы пришлете еще одно позиционное сообщение - сможете увидеть текущую позицию устройства на карте.
Кроме того, сообщения уже конвертированные в json, уже можно увидеть подключившись к mqtt брокеру используя mqtt board - web mqtt клиент (поддерживается mqtt 5.0, 3.11, 3.1)
С настройкой на стороне flespi - всё... Теперь время добавить ваши устройства в Home Assistant.

Home Assistant

К сожалению, в Home Assistant нет компонента, который бы подошёл для получения данных от flespi.  Потому пришлось накидать на коленке свой вариант device_tracker компонента (за основу взят MQTT_device_tracker)

mqtt_flespi_message.py

Этот компонент необходимо положить в папку config/custom_components/device_tracker

device_tracker: — platform: mqtt_flespi_message devices: # flespi channel dexif: 'flespi/message/gw/channels/7730/Dexif' another: 'flespi/message/gw/channels/7730/another' # flespi device dexif2: 'flespi/message/gw/devices/173073'

Кроме того, можно добавить известные устройства в файл known_devices.yaml

dexif: hide_if_away: false icon: mac: name: dexif picture: track: true gravatar: blah@blah.blah

Вот и все наши подключенные трекеры на карте в home assistant

Если вы решили выбрать вариант получения сообщений из устройства flespi - для вас у меня есть небольшой бонус.

Home Assistant позволяет добавлять любые ресурсы в панель управления по ссылке.

Таким образом мы добавим TrackIt (простенькая система мониторинга для устройств подключенных к flespi) в Home Assistant и сможем просматривать треки устройств на карте:

panel_iframe: trackit: title: TrackIt icon: mdi:map-search url: https://trackit.flespi.io/#/login/

А вот так это выглядит:

Теперь осталось придумать, что вы хотите сделать в тот момент, когда вы приехали домой или на работу. ;)

Мысли о прекрасном об автоматизации

Как пример - почему бы не разогревать чайник, когда ты подъезжаешь к дому. Если электрочайник довольно глупый можно его подключить например через Xiaomi розетку и нажать кнопку, а в автоматизации активировать розетку в тот момент, когда вы приблизились к дому (только не забудьте заранее налить воды ;) )

Ну, а ещё можно завязать на это дело мультиварку и когда выходишь с работы, чтобы она автоматически включалась. Тогда, приехав домой, у вас будет свежеприготовленный ужин. (Правда и тут главное не забыть закинуть чего в мультиварку). 

А в TrаckIt вы всегда увидите где припарковали машину или куда ездила жена (а может и муж ;) ) Или на какой парковке она стоит ;)

А если вы живёте в частном доме и у вас есть гараж с автоматическими воротами - можно их открывать когда вы подъезжаете.


Вернуться назад
Вернуться назад