Для меня «умный дом» — это когда автоматика за тебя делает всяческую «рутину» и делает это без моего участия.
В загородной жизни аспектов, подлежащих автоматизации, гораздо больше, чем при городской. Один из таких объектов автоматизации — ворота для въезда на участок.
Понятно, что любой уважающий себя домовладелец поставит на них автоматику, чтобы возвращаясь домой не надо было выходить из машины, чтобы их открыть, а потом закрыть. Радиоуправление — все супер.
Но это же скучно.
Гики (типа меня) к этой автоматике начинают прикручивать всяческую автоматику управления: начиная от GSM‑модулей (чтобы на номер ворот можно было позвонить и «своему» ворота откроются) до всяческих систем, позволяющих голосом попросить Siri, Алису или Google (часы, телефоны, автомагнитолы и т. п.).
Но и это тоже как‑то «неаккуратненько». Сильно хочется, чтобы «оно само».
Первоначально мысль была выдергивать изображения с камеры, которая контролирует подъезд к участку, дальше распознавание образов (что это машина) и гос.номера авто. Но как‑то времени не было заняться этим, да и выглядело, что будут определенные сложности (грязные номера и т. п.).
И, наверное, хорошо что руки до этого варианта так и не дошли, а было сделано устройство GNSS для автомобиля.
«Бонусная функция» этого устройства — автомобильный трекер (реализована поддержка протокола Wialon IPS). Координаты можно отдавать во внешний мир куда угодно. Девайс пушит данные раз в 10 секунд.
Сначала я использовал эту функцию с бесплатным аккаунтом на сервисе Ruhavik — для проверки сервис подходит отлично. Функциональности обычного трекера — вполне достаточно.
Но тут мне на глаза попались несколько статей @tananaev про различные протоколы GPS‑трекеров и во всех статьях была ссылка на его Open Source проект traccar.
После этого уже в голове оформился следующий порядок действий:
На имеющемся proxmox поднять контейнер с traccar.
Выставить наружу необходимый порт для работы трекера (внешний айпишник у меня есть).
Настроить GPS‑трекер на передачу геолокации на свой сервер.
Настроить систему оповещений о событиях (особенно интересовал «вход в геозону») для начала в телеграм.
«Научить» traccar отдавать свои события в mqtt.
С помощью имеющегося node‑red получать событие «Monjaro вошел в геозону „Дом“» и по этому событию отправить в умный дом команду «открыть ворота».
Дальше все оказалось достаточно просто.
Первые три пункта описывать не буду — там очевидные вещи (установка traccar описана на сайте проекта, а как настраивать роутер для проброса портов — уже все знают и/или найдут с помощью любимого поисковика, инструкция по настройке трекера есть, например, тут).
А вот пункты, начиная с четвертого — опишу:
Конфигурация 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-сервера, а последняя - топик, где будут публиковаться сообщения.
Собственно, после этого в 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. Естественно, для такой автоматизации не обязательно использовать аппаратный трекер - вполне подойдет и софтовый (ПО на телефон и/или автомагнитолу/планшет и т.п.)
Комментарии (54)
Yuriy_krd
14.10.2024 04:59по поводу открытия ворот - можно поставить еще пару датчиков (Как в створе ворот) где-нибудь на дорожке. Судя по фотке - там длинная подъездная дорожка и можно поставить недалеко от ворот и прям в самом контроллере ворот запрограммировать. Ну и исключить случайную сработку, выставив время перекрытия датчика и срабатывания подольше.
avstepanov Автор
14.10.2024 04:59Да, это один из вариантов, но пока еще думаю. Когда буду заниматься "въездной зоной" и навесом - обязательно сделаю закладные под такие датчики.
randomsimplenumber
14.10.2024 04:59Гики любят всё усложнять ;) Для гаража, ворота в котором открываются 2 раза в день для 1 машины, обычная радиокнопка все решает.
iliasm
14.10.2024 04:59так в этом же весь интерес, усложнить на ровном месте :)
у нас на работе была радио-кнопка, но ворота открываются долго, сильно издалека кнопка не ловится, замастырли мобильное приложение, из плюсов — аутентификация, у уволенных доступ закрывается сам
badangel
14.10.2024 04:59Что-то похожее реализовывал для выполнения автоматических действий на устройстве. ESP в машине с одной стороны, с другой условный сервер. ESP при подаче питания ищет "свою" точку доступа, при успешном подключении отправляет webhook с payload на сервер, если не 200 - повторяем через какой-нибудь интервал, ну и далее делаем что-нибудь на сервере. Можно дополнительно RSSI чекать перед отправкой webhook, что мы не очень далеко.
avstepanov Автор
14.10.2024 04:59Тут уже сложно становится. В машине своя WiFi-сетка.. на участке - своя (в районе въезда есть точка доступа, чтобы на участке сетка тоже была). Если только не воткнуть еще один девайс на есп, который будет искать "домашнюю" сетку.. но тут уже снова надо искать ответ на вопрос: а с какой стороны ворот находится авто? В общем, думаю пока :)
badangel
14.10.2024 04:59Подкинуть датчик давления на место парковки :)
avstepanov Автор
14.10.2024 04:59Тоже вариант. Сложновато (особенно в условиях зимы и т.п.), а вот когда построю навес для авто - сверху датчик точно можно воткнуть: выехал из под навеса - открываем ворота. Спасибо за идею :)
GoldGoblin
14.10.2024 04:59Лучше камеру. (Да. Я люблю устройства двойного назначения)
avstepanov Автор
14.10.2024 04:59Первоначально так и планировал, но вот руки не дошли (понимая, что распознавание образов займет какое-то время на изучение). А тут решение было реализовано минут за 15 от момента возникновения идеи.
И да, я тоже люблю "двойное назначение". Первоначально девайс в машине был исключительно для автомобильной навигации, а потом уже добавились функции "трекера".
Vermut666
14.10.2024 04:59В свежем HomeAssistant есть Proximity Sensor, который показывает сразу дистанцию и направление (к дому, из дома). Второй вариант предложили: зная точку, запрашивать в Waze время прибытия.
fio
14.10.2024 04:59Тоже первая мысль (если бы у меня был дом и шлагбаум) - это HomeAssistant. Когда я подключаю смартфон к автомобилю, то НА начинает "видеть" автомобиль. Появляется возможность автоматических сценариев
Также можно на экран машины вывести кнопки из НА. Нажимать вручную
avstepanov Автор
14.10.2024 04:59"К дому" - это хорошо (и примерно так же отработает, как мое решение). Только еще надо понимать, как часто ХА показывает изменение положения? Трекер - один раз в 10 секунд шлет данные, так что при вхождении в геозону "дом" у меня практически сразу начинают открываться ворота и я не стою перед ними, а уже заезжаю в полностью открытые.
А вот как идентифицировать, что я из своего участка собираюсь выехать с помощью этого?
fio
14.10.2024 04:59как идентифицировать, что я из своего участка собираюсь выехать с помощью этого?
Вручную:
Кнопка на смартфоне
Кнопка на экране автомобиля
NFC метка (классный вариант тут предложили)
Klenov_s
14.10.2024 04:59Открытие ворот изнутри можно реализовать тупо по приближению авто к воротам. Например, пересечение луча. Я думаю, что выпускать можно все автомобили, которые хотят выехать, без привязки свой/чужой.
SpeleoAstronom
14.10.2024 04:59А чем может быть нехороша идея связать машину с воротами по ESP-NOW (https://habr.com/ru/articles/502260/)? Въехал в зону связи - "отождествился" - ворота открылись. Или там есть какие-то грабли?
Wizard_of_light
14.10.2024 04:59Как-то заморочено, ИМХО напрашивается простой автоответчик "свой-чужой" по блютусу/вайфаю, тупо когда автомобиль в зону связи въезжает.
UPD Кстати, хакер с солонкой сразу предлагает вариант "один отвлекает подъехавшего хозяина, второй проскакивает в автоматически открывшиеся ворота".
QwertyOFF
14.10.2024 04:59Существуют rfid метки на авто которые срабатывают с десятка метров. Для частного использования кажется дороговато, хотя может у китайцев такое есть и по цене шаурмы.
cahbeua
14.10.2024 04:59Во всей этой "автоматизации" выпала половина действий, а именно закрытие ворот. ЖПС для этого несколько избыточно и не совсем работоспособно. Точность зависит от вашего местонахождения, где то +- метр, а где то глушилка и ворота будут открываться как им вздумается. Вайфай\блюпуп выполняют почти то же самое, без надобности заводить отдельный девайс в машину. Для удобства можно выкинуть точку доступа на ворота, но то уже по желанию.
И да - в коментах уже подсказали как это реализовать более правильно и как это сделано везде в контролях доступа - номерной знак и камеры. Камеры умеющие в распознавание номера уже не редкость, при наличии ресурсов можно это прикрутить опенсорсом к чему угодно. Увидел номер - открыл ворота, увидел машину в зоне парковки - закрыл ворота. Выпуск машины по покиданию зоны парковки. Для точности перепроверка через луч и повторное определение уезжающего номера.
Хотя в плане умного дома у ЖПС всётаки есть смысл - подготовка дома к приезду, потушить автополив за 20 минут до приезда (что б по лужам не плямкать), прогудеть мелодию в доме, что бы все знали что вы на подьезде и самое время выгонять любовников или распускать пьяные посиделки школьников, в общем имеет место быть. Но вот чисто с воротами наверно не то.
avstepanov Автор
14.10.2024 04:59Ворота - это ж только малая часть автоматизируемого. Просто маленький кусочек паззла (а так да, отслеживается наличие хозяев дома и при этом работают куча разных сценариев по свету, климату, вентиляции, безопасности и т.п.).
По поводу GPS - оно используется в машине для навигации и данные там летят 3 раза в секунду (больше просто смысла нет, я ж не пилот самолета). Так что решение вполне себе стабильное. И это не "дополнительное" устройство в машине, а основное (для автомобильной навигации), но с "дополнительными" функциями.
longmaster
14.10.2024 04:59Не раскрыта тема управления приводом. У меня установка приводов пока в процессе. Сначала купил Nice на подъёмные ворота гаража, потому что он немного быстрее других. А потом уже начал думать, а как их скрестить с умным домом. Штатный модуль-шлюз wifi стоит недёшево, а мне их надо 3 штуки. Да и работает он через облака, не люблю я такое. В итоге спасибо соотечественнику, который раскопал, что там can-шина, реинженирил протокол и опубликовал всё на github, так что можно не только управлять, но и контролировать текущее положение в УД. Как с другими приводами - не знаю, но подозреваю, что тоже может быть непросто, и не у всех есть входы откр/закр.
Насчёт алгоритмов автооткрытия, как уже писали и другие комментаторы, меня не устроит вариант открывать всегда по умолчанию. Т.к. знаю, что часто будем оставлять машины на улице, не въезжая. Соответственно ничего более эффективного, чем кнопка на радиобрелке с достаточной дальностью - не вижу.
Но идей накидать могу. На выезд вообще просто - мигать дальним светом, и датчиком ловить это. Для предотвращения ложных срабатываний достаточно контролировать двойной миг с определёнными временными интервалами. На въезд можно аналогично, но с системой распознавания свой-чужой. Датчики направить вдоль улицы в большинстве случаев не должно быть проблемой. Приближение своего авто определять любым способом - gnss/wifi/bt. Если при подъезде мигнул, ворота откроются.
avstepanov Автор
14.10.2024 04:59У меня привод Nice серии HS (High Speed) - работает очень быстро (откатные ворота). У привода есть входы для подключения кнопок "открыть" и "закрыть" (почти у всех такое есть).. Дальше просто (выберите на вкус, что нравится больше: зигби-реле, wifi-реле, модбас-реле... ).
Безусловно, у всех свои сценарии использования, но конкретно у меня: оставить машину за воротами - совсем не мой сценарий (участок достаточно большой, чтобы загнать все машины всех гостей).
Идея с "морганием" - интересная, надо будет попробовать такое реализовать для выезда (только предвижу сложность отработки в разное время суток), но как идея - имхо, годная.
Cpsskipper
14.10.2024 04:59Координаты gps очень ненадежная штука. Телефоны, особенно iphone отдает координаты когда ему это захочется. Ну и весь описанный функционал есть в home assistant из коробки. По итогу самое надежное решение это распознавание номера
edyapd
Можно отслеживать появление IP-адреса в домашней сети.
ESP8266 установленная в автомобиль. Варианты во дворе:
Машина заглушена, ESP выключена. Ворота закрыты.
Машина заведена (на прогреве), водитель не в машине (по датчику на сиденье). ESP включена и IP-адрес зарегистрирован в сети. Ворота закрыты.
Машина заведена, водитель в машине. Ворота начинают открываться.
При приближении извне, к воротам, кстати, тоже будет работать, так как будут соблюдаться те же условия. Осталось только продумать когда закрывать ворота.
avstepanov Автор
С закрытием ворот все вообще просто: штатно у автоматики есть датчики (стоят в створе ворот). Просто настраивается автозакрытие после пересечения луча.
edyapd
Как быть, если заехал домой кого-то забрать-высадить, вообще не пересекая линию ворот?
Заехал во двор выгрузил-загрузил что-либо, машину не глушил. Надо ли на эти пару минут закрывать ворота?
Думаю таких ситуаций ещё можно несколько штук придумать. Поэтому и написал про "подумать".
Kill_Voice
Тоже когда-то игрался с событиями по трекингу, в итоге все их отключил именно из-за множества ситуаций исключений из базового сценария. Плюс зоны нужно настраивать достаточно большого радиуса так как GPS имеет высокую погрешность в точности да и сам трекер может передавать абсолютную чушь из-за тех же глушилок
avstepanov Автор
Сейчас с погрешностями все хорошо. В статье есть ссылка на устройство, которое я использую. С "встроенной" антенной точность 2-4 метра. С "выносной" - менее 1 метра. Поэтому можно геозоны можно выстраивать очень точно (как у меня в статье).
Глушилки - да, это проблема, но не в моей локации (к счастью).
Borz
Кейс: для машины открылись ворота, а в это время через них прошёл человек, так как лень открывать калитку
avstepanov Автор
У меня не офисное здание, где вечно кто-то шастает, а частный дом в тихой деревне ;) Поэтому конкретно для моего случая - это вполне рабочий кейс.
Проблема с автозакрытием была в процессе стройки - вот там каждая доставка стройматериалов сопровождалась множественными пересечениями луча ("помощники" выходили и помогали грузовикам заезжать.. некоторые грузовики в 2-3 прихода заезжали - узкая дорога и т.п.).
Автозакрытие включил после завершения всех основных доставок. Сейчас, когда какие-то неловкие доставщики заезжают - пульт держу в руке на всякий случай.