- PVSM.RU - https://www.pvsm.ru -
Для меня "умный дом" - это когда автоматика за тебя делает всяческую "рутину" и делает это без моего участия.
В загородной жизни аспектов, подлежащих автоматизации, гораздо больше, чем при городской. Один из таких объектов автоматизации - ворота для въезда на участок.
Понятно, что любой уважающий себя домовладелец поставит на них автоматику, чтобы возвращаясь домой не надо было выходить из машины, чтобы их открыть, а потом закрыть. Радиоуправление - все супер.
Но это же скучно.
Гики (типа меня) к этой автоматике начинают прикручивать всяческую автоматику управления: начиная от GSM-модулей (чтобы на номер ворот можно было позвонить и "своему" ворота откроются) до всяческих систем, позволяющих голосом попросить Siri, Алису или Google (часы, телефоны, автомагнитолы и т.п.).
Но и это тоже как-то "неаккуратненько". Сильно хочется, чтобы "оно само".
Первоначально мысль была выдергивать изображения с камеры, которая контролирует подъезд к участку, дальше распознавание образов (что это машина) и гос.номера авто. Но как-то времени не было заняться этим, да и выглядело, что будут определенные сложности (грязные номера и т.п.).
И, наверное, хорошо что руки до этого варианта так и не дошли, а было сделано устройство GNSS для автомобиля [1].
"Бонусная функция" этого устройства - автомобильный трекер (реализована поддержка протокола Wialon IPS). Координаты можно отдавать во внешний мир куда угодно. Девайс пушит данные раз в 10 секунд.
Сначала я использовал эту функцию с бесплатным аккаунтом на сервисе Ruhavik - для проверки сервис подходит отлично. Функциональности обычного трекера - вполне достаточно.
Но тут мне на глаза попались несколько статей @tananaev [2] про различные протоколы GPS-трекеров и во всех статьях была ссылка на его Open Source проект traccar [3].
После этого уже в голове оформился следующий порядок действий:
На имеющемся proxmox поднять контейнер с traccar.
Выставить наружу необходимый порт для работы трекера (внешний айпишник у меня есть).
Настроить GPS-трекер на передачу геолокации на свой сервер.
Настроить систему оповещений о событиях (особенно интересовал "вход в геозону") для начала в телеграм.
"Научить" traccar отдавать свои события в mqtt.
С помощью имеющегося node-red получать событие "Monjaro вошел в геозону "Дом"" и по этому событию отправить в умный дом команду "открыть ворота".
Дальше все оказалось достаточно просто.
Первые три пункта описывать не буду - там очевидные вещи (установка traccar описана [4] на сайте проекта, а как настраивать роутер для проброса портов - уже все знают и/или найдут с помощью любимого поисковика, инструкция по настройке трекера есть, например, тут [5]).
А вот пункты, начиная с четвертого - опишу:
Конфигурация traccar находится в файле /opt/traccar/conf/traccar.xml (буду приводить для варианта установки на ubuntu).
Для установки системы оповещений в telegram в этот файл надо добавить следующие строки:
<entry key='notificator.types'>telegram</entry>
<entry key='notificator.telegram.key'>YourChatBotAPIkey</entry>
<entry key='notificator.telegram.chatId'>YourChatID</entry>
<entry key='notificator.telegram.sendLocation'>true</entry>
Если все сделано правильно, то в телеграм уже начнут приходить сообщения (не забудьте поставить свой ключ для телеграм-бота и свой идентификатор чата. Предварительно в веб-интерфейсе сервиса еще надо настроить типы событий, о которых надо оповещать. В моем случае наиболее интересен "вход в геозону".
Чтобы события транслировались в MQTT в тот же конфиг-файл надо добавить следующее:
<entry key='forward.enable'>true</entry>
<entry key='forward.type'>mqtt</entry>
<entry key='event.forward.type'>mqtt</entry>
<entry key='event.forward.url'>mqtt://IP-server:1883</entry>
<entry key='event.forward.topic'>traccar/events</entry>
Параметры тут очевидные: предпоследняя строчка задает адрес mqtt-сервера, а последняя - топик, где будут публиковаться сообщения.
{"event":{"id":139,"attributes":{},"deviceId":1,"type":"geofenceEnter","eventTime":"2024-10-08T14:28:13.000+00:00","positionId":155,"geofenceId":1,"maintenanceId":0},"position":{"id":155,"attributes":{"batteryLevel":38.0,"distance":302.7380494307562,"totalDistance":944.8448214274459,"motion":false},"deviceId":1,"protocol":"osmand","serverTime":"2024-10-08T14:28:13.302+00:00","deviceTime":"2024-10-08T14:28:13.000+00:00","fixTime":"2024-10-08T14:28:13.000+00:00","outdated":false,"valid":true,"latitude":хх.хххххх,"longitude":yy.yyyyyy,"altitude":216.8000030517578,"speed":0.0,"course":0.0,"address":null,"accuracy":45.599998474121094,"network":null,"geofenceIds":[1]},"device":{"id":1,"attributes":{},"groupId":0,"calendarId":0,"name":"Monjaro","uniqueId":"zzzzzzzzzzzzzzz","status":"online","lastUpdate":"2024-10-08T14:28:13.302+00:00","positionId":119,"phone":null,"model":null,"contact":null,"category":null,"disabled":false,"expirationTime":null},"geofence":{"id":1,"attributes":{},"calendarId":0,"name":"Дом","description":null,"area":"LINESTRING (координаты-полигона-описывающего-геозону)"}}
Собственно, дальше уже дело техники - накидать кубиков в nodered:
Стоит еще рассказать про формирование геозоны "Дом":
Подъезд к участку у меня возможен с двух сторон. Хотелось сделать так, чтобы ворота начинали открываться заранее (чтобы не ждать, стоя перед ними, когда они еще в движении), но и не слишком рано, чтобы видеть начало их движения.
Для того, чтобы эти "хотелки" сработали - геозону нарисовал следующим образом:
Поскольку по подъездной дороге едешь не слишком быстро (20 км/ч максимум), то периодичности отправки данных трекером (напомню, 1 раз в 10 секунд), оказывается вполне достаточно, чтобы ворота успели открыться, когда к ним подъезжаешь.
Вот такая "магия".
Теперь ворота открываются "сами". При этом не важно, день/ночь, чистые ли номера и т.п.
P.S. Теперь еще надо придумать, как сделать так, чтобы ворота сами бы открывались, когда надо выехать с участка ;)
P.P.S. Естественно, для такой автоматизации не обязательно использовать аппаратный трекер - вполне подойдет и софтовый (ПО на телефон и/или автомагнитолу/планшет и т.п.)
Автор: avstepanov
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/399334
Ссылки в тексте:
[1] сделано устройство GNSS для автомобиля: https://habr.com/ru/articles/847304/
[2] @tananaev: https://www.pvsm.ru/users/tananaev
[3] traccar: https://github.com/traccar/traccar
[4] описана: https://www.traccar.org/documentation/
[5] тут: https://sites.google.com/view/hwgps/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82-%D0%BD%D0%B0-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B5%D0%BC-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5
[6] Источник: https://habr.com/ru/articles/850148/?utm_campaign=850148&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.