Блог

Автоматизация по местоположению в 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 вы всегда увидите где припарковали машину или куда ездила жена (а может и муж ;) ) Или на какой парковке она стоит ;)

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


Да это целая статья !!!!!! огонь ))) красавец )))) подписался жду продолжения ))

Спасибо ;) Подумаю над продолжением ;)

Статья интересная, для себя открыл кое что новое.. Но по мне реализация избыточна, считай что из пушки по воробьям) 

В случае с ios, я решил это более простым методом. Создал в ha переключатель, прокинул его в homekit, в нем же настроил по приходу и уходу его переключение. Так же для нативных приложений у ios несколько другая политика к использованию gps. То есть (субъективно) экономим батарейку, и получаем более точные данные. К слову - 2 телефона, одновременно покидая дом одновременно меняют свое состояние. 

Думал может воспользоваться этим, что бы трекать машину, но не увидел поддержки globalsat. Что странно. 

Главное, что нужно понимать на этом этапе - вы должны выбрать подходящий device_type и ident.  В нашем случае это будет Telegram и Dexif.

немного не понял что за Dexif , нет такого в списке ???

Ident для device_type=telegram это ник в телеграме ;) Dexif это мой ник ;)

Попробовал вашим способом - работает, спасибо!
Правда переделал всё, что касается интеграции с HA через Node-Red.

А можете выслать 

https://github.com/dexif/hassio-flespi-component/blob/master/component/mqtt_flespi_message.py">mqtt_flespi_message.py ? Стал не доступен.

Пользуюсь интеграцией уже полгода, всё работает как часы, спасибо большое.

Думали над продолжением интеграции? Добавлением в HACS, упрощение настройки, расширение передаваемых данных. 

Например, передачу всех параметров в HA. У меня в машине стоит трекер и там есть такие параметры как: пробег, зажигание, уровень топлива...

Спасибо, приятно слышать. 

Да, надо бы заняться. :) 

Может в ближайшее время постараюсь допилить. Только немного разгребусь с рутинными задачами :)

LuckyTNT подправил репозиторий и теперь его можно использовать как кастомный репозиторий HACS

https://github.com/dexif/hassio-flespi-component">https://github.com/dexif/hassi...

Добрый день! HA стоит в докере. куда положить файлы с гитхаба? выдает ошибку:


Platform error device_tracker.mqtt_flespi_message - Integration 'mqtt_flespi_message' not found.

на уровне конфига создал custom_components/device_tracker/

так?

Извиняюсь что долго не отвечал немного было не до того :( Я поправил код немного чтобы заработало в последнем HA. Попробуйте сейчас.

Здравствуйте. Подскажите каким образом создать MQTT интеграцию в home assistant.  Добавил интеграцию через HACS (пользовательский репозиторий).

Захожу в "Настройки-Интеграции-Добавить интеграцию" нет "mqtt flespi message", а добавить интеграцию MQTT ещё раз с другими параметрами не дает.

Не совсем понял вопрос. Вы должны добавить кастомный репозиторий указав https://github.com/dexif/hassio-flespi-component">https://github.com/dexif/hassi...

После этого вам необходимо в интеграциях найти mqtt flespi message и установить.

После установки вам необходимо перезагрузить home assistant и в configuration.yaml в раздел device_tracker: добавить что-то вроде (только со своими id и названиями): 

- platform: mqtt_flespi_message 

    devices:

        test: 'flespi/message/gw/devices/12345'

И опять перезагрузить home assistant чтобы применить настройки этой интеграции.

Если у вас свой mqtt брокер - вам необходимо настроить в нём bridge чтобы получать сообщения из flespi брокера.
Пример настройки можно найти вот тут: https://forum.flespi.com/d/188-configure-your-mosquitto-mqtt-bridge-to-send-data-to-flespi">https://forum.flespi.com/d/188... И/или вот тут: https://forum.flespi.com/d/403-lack-of-bridge-documentation/4">https://forum.flespi.com/d/403...

а если mqtt брокер установлен как add-ons в HA, примеры настроек подойдут ?
вот этот например https://forum.flespi.com/d/403-lack-of-bridge-documentation/3">https://forum.flespi.com/d/403...    ?

Уже давно разворачиваю всё отдельно потому точно сказать не могу как там работают аддоны. Может гляну позже. Но вообще проблем не должно быть.

Вот тут описано как конфигурировать москитто когда он аддон:

https://community.home-assistant.io/t/mosquitto-add-on-and-bridge-need-some-help/216097">https://community.home-assista...


спасибо, буду изучать

Здравствуйте,
сконфигурировал аддон по вашему примеру, скачал сертификат с https://flespi.io положил в нужную папку /etc/mosquitto 


но при запуске 

Mosquitto broker

всё равно выдает ошибку:


1634759182: Warning: Mosquitto should not be run as root/administrator.
1634759182: Connecting bridge FlespiBroker (mqtt.flespi.io:8883)
1634759182: Error: Unable to load CA certificates, check bridge_cafile "/etc/mosquitto/flespi-io-chain.pem".
1634759182: OpenSSL Error[0]: error:02001002:system library:fopen:No such file or directory
[22:46:23] INFO: Successfully send discovery information to Home Assistant.
[22:46:23] INFO: Successfully send service information to the Supervisor.
1634759182: OpenSSL Error[1]: error:2006D080:BIO routines:BIO_new_file:no such file
1634759182: OpenSSL Error[2]: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
1634759182: Warning: Unable to connect to bridge FlespiBroker.

перечитал много форумов, но нигде не нашел решение проблемы, может вы подскажите ?

Было бы проще предложить если бы вы рассказали что вы уже сделали и как настраивали.
В конфигурации аддона mosquitto есть параметр customize_folder есть подозрение что если указать путь не к файлу конфигурации а к папке в которой лежит и конфиг и сертификат - то всё должно заработать. Если конечно всё сконфигурировано правильно. Пути все правильные и т.д. 

Но я же говорю проще было бы если бы вы рассказали каким образом вы конфигурировали. Только не публикуйте ваши токены и остальные кинфиденциальные данные из конфигурации :)

установил на телефон Wiatag, настроил связь с flespi.io, данные приходят, на карте отображается и местоположение и маршрут.



установил через HACS интеграцию "Mqtt flespi message"


добавил в 

configuration.yaml  параметры как в этой статье, со своими flespi-channels и flespi-device

Mosquitto broker стоит как add-on в HA. настройки стандартные, изменил только параметр active:
customize:

active: true
 folder: mosquitto 

создал каталог 

/usr/share/hassio/share/mosquitto  и там разместил файл 

mosquitto.conf , в который добавил параметры настройки по вашей ссылке https://forum.flespi.com/d/403-lack-of-bridge-documentation/3">https://forum.flespi.com/d/403... . Заменил параметр 


bridge_protocol_version mqttv311 , т.к.  со значением mqttv50 сразу при запуске появлялась ошибка. и добавил свой 

remote_username XXXFLESPITOKENXXX

создал каталог /etc/mosquitto куда положил файл сертификатов flespi-io-chain.pem, скачанный как вы и писали с flrspi.io

на шлюзе сделал проброс портов  1883, 1884,8883, 8884 и 443

До передачи данных из flespi.io в HA видимо дело не доходит, т.к. при загрузке  

Mosquitto broker в логах появляются ошибки ,как в предыдущем сообщении

Ок. Теперь попробуйте ничего не меняя в конфигурации положить файл сертификата в папку /usr/share/hassio/share/mosquitto

скопировал 

flespi-io-chain.pem в указанную папку, ошибка та же самая:

1634828491: Error: Unable to load CA certificates, check bridge_cafile "/etc/mosquitto/flespi-io-chain.pem".
1634828491: OpenSSL Error[0]: error:02001002:system library:fopen:No such file or directory
[18:01:32] INFO: Successfully send discovery information to Home Assistant.
[18:01:33] INFO: Successfully send service information to the Supervisor.
1634828491: OpenSSL Error[1]: error:2006D080:BIO routines:BIO_new_file:no such file
1634828491: OpenSSL Error[2]: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
1634828491: Warning: Unable to connect to bridge FlespiBroker.

Надо посмотреть куда мапится папка конфигурации и указать в конфиге правильный путь. Пока нет возможности поколупать. Чуть позже попробую посмотреть

@eug314 удалось победить?
к сожалению нет, так и не удалось подключится из HA к flespi.io. Две недели бился потом бросил
Эффект "вау" от увиденного на сервисе Flespi. Знаю, что моего образования и знаний недостаточно, чтобы в "полную" использовать сервис. Инструкция, конечно, изложена для тех кто в теме или близко к ней, или таким как я, которые, не хотят быть просто клиентом Ruhavik-а Тем не менее, на второй вечер увидел свой тестовый ID В Mqtt Sessions. А это уже 98% успеха. Trackit я успел до этого внедрить (не без помощи) себе в НА. Просто о сложном.. Mosquitto ломиться или в папку share или etc. Получилось, когда я создал папку mosquitto в папке share. с mosquitto.conf+flespi-io-chain.pem ( даже не понял есть ли разница , если бы взял flespi-io.pem, а не chain)+flespi.cert. Файл mosquitto.conf выглядел так, когда я подключил свой HA к Flespi:
connection FlespiBroker
bridge_protocol_version mqttv50
bridge_cafile /share/mosquitto/flespi/flespi-io-chain.pem
bridge_certfile /share/mosquitto/flespi/flespi.cert
bridge_tls_version tlsv1.3
bridge_insecure false
protocol mqtt
address mqtt.flespi.io:8883
remote_username ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ
bridge_attempt_unsubscribe true
cleansession true
topic message/# out 0
try_private true
allow_anonymous true
notifications true
notification_topic admin/bridge
keepalive_interval 60
start_type automatic
restart_timeout 10 180
remote_clientid pi_home76
Не забываем про active: true в настройках своего mosquitto на НА и перегрузить его, когда закините файлики.
И....Да, и меня mosquitto broker - установлен как дополнение в НА..
Был бы признателен Евгению, если бы он расписал и здесь, и в Hacs значения , выделив обязательные параметры конфига.
С другой стороны, все эти параметры относятся к mosquitto.conf и найти их описание можно задав в поиске "Краткое руководство по файлу Mosquitto.conf с примерами"., что я и сделал сейчас.
А не встречалась ли вам реализация каких-либо автоматизации, в которых триггером является приближение к произвольной координате на произвольное расстояние? А в идеале - контроль въезда в геозону произвольной формы?

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