Статья

Умный домофон с фото посетителей

Есть такой интересный проект по превращению обычного аналогового домофона в умный, с прокидыванием в Home assistant. Я данный проект доработал, перевел полностью на оптроны. Также была разработана миниатюрная плата. И уже много счастливых обладателей таких плат домофона.

Единственный минус этой платы в том, что при отключении питания, трубка домофона отключается и он перестает работать. Есть оптроны с НЗ состоянием, при отсутствии питающего напряжения, но проблема в том, что у этих оптронов высокое сопротивление в замкнутом состоянии. А домофон определяет состояние по изменению сопротивления. В результате поисков все-таки был найден подходящий оптрон CPC1114. Причем этот оптрон в таком же корпусе, что и исходный KAQY212, поэтому доработка не представляет трудности. Ну и в прошивке надо всего лишь инвертировать выход на этот оптрон. В данной схеме присутствует перемычка А1, она была заложена для возможности управления "цифровым" домофоном. К сожалению, в близком окружении ни у кого знакомых такого домофона нет, а удаленно пока не получилось победить.

Это было лирическое отступление. Но статью я задумал не об этом.

Пользоваться домофоном стало очень удобно, я даже себе брелок не беру. Включаю автооткрытие с телефона и набираю номер квартиры. Не хватает, конечно, звукового канала, но это нереально, и требует больших затрат на разработку концепции. А вот по части видео родилась идея. У нас в многоквартирном доме есть система наблюдения. И жильцам предоставлен доступ. Система использованная в нашем доме Macroscop. Данный сервер позволяет объединить несколько различных систем в одну. На сайте много информации по данной системе, есть даже SDK. Админит данную систему мой товарищ. И он мне предоставил временно админские права, для изучения вопроса. Как оказалось, в системе есть своя интеграция с Telegram и пользователю предоставляется бот, который по запросу присылает скриншот с необходимой камеры. Но проблема в том, что этот бот привязывается к конкретному пользователю, и присылает ответ только ему. А как отправить запрос боту, да еще и от другого имени из Home assistant, я не нашел. Система позволяет отправлять API запросы, но такого запроса, по которому система отправляла бы мне скриншот в телегу, я тоже не нашел, техподдержка сказала, что такого запроса нет. Пришлось дальше читать SDK.

Нашел, что Macroscop умеет отдавать видео по HTTP запросу. Формат в документации указан следующий:

/video?channelid= &login=&password=<хэш-строка MD5 пароля>

Правда набор этого запроса в браузере ничего не дал, просто черный экран и все. Ладно, сделаем компонент камеры в НА:

stream: camera: - platform: ffmpeg input: http://***********/video?channelid=*****&login=****&password=***** name: camera1

Прокидываем компонент камеры в Ловелейс, и..., ничего, черный экран. И вот что находим по этому поводу в документации:

При обращении к интерфейсу /video, сервер Macroscop будет возвращать видео в оригинальном (полученном от камеры) формате. Для некоторых приложений и непроизводительных устройств декодирование видео в формате H.264 или отображение MJPEG-видео в оригинальном разрешении может составить проблему. Для таких случаев в Macroscop есть CGI-обработчик /mobile. При запросе к нему с параметрами, аналогичными запросу /video (логин, пароль, имя/номер/ идентификатор канала, воспроизведение звука, параметры архива), сервер Macroscop будет возвращать видео в формате MJPEG (в том числе и для потоков, которые транслируются с камер в формате H.264 и MGEG-4) в фиксированном разрешении, определенном в приложении Macroscop Конфигуратор (вкладка Серверы, блок настроек Подключение мобильных устройств).

Ок, пробуем переформатировать строку запроса:

stream: camera: - platform: ffmpeg input: http://***********/mobile?channelid=******&login=****&password=***** name: camera1

Углубляемся снова в документацию и видим, что по такому запросу система отдает картинку в самом низком разрешении, если мы хотим увеличить разрешение, то в запросе это надо указать. Добавляем параметры resolutionx и resolutiony. Полноценного доступа к серверу у меня нет, поэтому все параметры я там посмотреть не могу (я сам настоял на таком, чтоб ни дай бог ничего там не сломать). Поэтому эти параметры подбирал экспериментальным путем.

stream: camera: - platform: ffmpeg input: http://***********/mobile?channelid=*****&login=****&password=*****resolutionx=1024&resolutiony=768 name: camera1

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

Николай Васильчук (anonym.tsk) сделал отличный packages файл, который автоматизирует работу с платой домофона и отправкой уведомлений в телегу. Вносим в участок, который отправляет сообщение в телеграм о входящем звонке, отправку скриншота. Во временную папку сохраняем скриншот, лучше сделать с фиксированным именем, тогда файл каждый раз будет перезаписываться. И отправляем этот файл в Telegram.

automation: - alias: Domofon incoming call notification initial_state: true trigger: platform: state entity_id: binary_sensor.domofon_incoming_call to: 'on' action: - service: camera.snapshot data: entity_id: camera.camera2 filename: '/tmp/vhod_dom.jpg' - service: notify.telegram data_template: message: "Звонок в домофон {% if is_state('switch.domofon_automatically_open', 'on') or is_state('switch.domofon_automatically_open_once', 'on') %}(откроется автоматически){% endif %}" data: inline_keyboard: - "{{ '-' if is_state('switch.domofon_automatically_open', 'on') or is_state('switch.domofon_automatically_open_once', 'on') else 'Открыть:/domofon_open, Отклонить:/domofon_reject' }}" # data: photo: - file: /tmp/vhod_dom.jpg caption: 'Звонок в дверь'

Папку /tmp надо внести в allow list.

homeassistant: packages: !include_dir_named packages allowlist_external_dirs: - /tmp

Как оказалось, сервер Macrosop умеет отдавать и RTSP поток, но его надо включить на сервере, он жрет ресурсы. Да и к тому же, эта опция платная. Поэтому я не стал напрягать админов с этим.


А если сервер Macrosop умеет отдавать снапшот (что скорее всего), то можно сразу в телеграм отправлять его, не сохраняя в /tmp

Это понятно, но в документации этого не нашёл. Техподдержка не знает. 

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

http://***********/site?channelid=*****&login=****&password=*****resolutionx=1024&resolutiony=768 

Друзья, а возможно ли железку домофона купить готовую, а не самому паять. Если наберется нормальное количество заявок - это будет реально?

Возможно, только немного опоздал. Разошлась последняя партия. Если человек 20 наберется то может еще закажу.

Присоединяюсь! tg @mxtnr

У нас обычный домофон без видео, хочу сделать так чтобы HA кидал на телефон пуш когда туда звонят и я мог его потянуть и принять/отклонить 

Скорее всего HA так не позволит тогда придётся своём апп на айфон сделать и интегрировать с НА

А входить набирая номер квартиры это как-то не приятно. Скорее всего таким не буду пользоваться, вот бы просто кнопку в Home секции Control Centre (шторка с настройками)



https://sprut.ai/static/media/cache/00/41/62/5/7280413/74630/1000x_image.png?1612956384" alt="1000x_image.png?1612956384" />

Пиши мне в телеграмм @Ge1mer

Я делаю несколько снапшотов, чтобы наверняка) есть задержки с камеры 

Пользуюсь таким устройством уже года три ) очень удобно, когда установили домофон дом ру, добавил интеграцию в ха и из нее так же настроил,что присылает скриншот в телегу. Хотелось бы сделать распознавание лиц, но качество так себе у них. Не думали что можно возле подъездной двери разместить есп32 и бле трекер и оптроном на кнопку выхода открывать дверь при приближении ? Давно эта мысль крутится, только дом.ру боюсь не оценить апгрейд такой )))

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

Давай обсудим пиши в телеграме @Ge1mer

По вопросам приобретения плат заходим сюда 

https://t.me/domofon_esp">https://t.me/domofon_esp

https://sprut.ai/static/media/cache/00/58/28/5/7305825/74692/1000x_image.jpeg?1613121872" alt="1000x_image.jpeg?1613121872" />

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