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

18 января 2021, 15:05

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

1600x_image.png?1610876112

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

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

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

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

{адрес и порт сервера macrosop}/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

И видим результат - есть картинка с камеры, правда подтормаживает и с очень низким разрешением. Подтормаживание нам не страшно, а вот разрешение - это проблема.

1600x_image.png?1610908204

Углубляемся снова в документацию и видим, что по такому запросу система отдает картинку в самом низком разрешении, если мы хотим увеличить разрешение, то в запросе это надо указать. Добавляем параметры 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

Перезагружаем НА. Сенсор входящего звонка устанавливаем в on и вуаля, приходит фотография с камеры. Но это не интересно, поэтому одеваемся и идем на улицу. Набираем номер квартиры, ждем вызова, и видим себя любимого на фотографии в telegram. Конечно,  камера стоит не очень удачно, да и разрешение у камеры так себе, этой камере уже более 10 лет. Но знакомых людей узнать можно. Правда у меня подъезд сквозной, и есть второй вход, там тамбур, а камера стоит перед входом в тамбур. Соответственно, от скриншота смысла нет. Да и определить, с какой вызывной панели пришел вызов, невозможно. В общем результатом я доволен. 

1600x_image.png?1610908205

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


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Николай Васильчук (anonym.tsk)

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

    • Ильмир Гайнутдинов (Gelmer)
      Ильмир Гайнутдинов (Gelmer) 6 месяцев назад

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

    • Ильмир Гайнутдинов (Gelmer)
      Ильмир Гайнутдинов (Gelmer) 6 месяцев назад

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

      http://***********/site?channelid=*****&login=****&password=*****resolutionx=1024&resolutiony=768 
  2. (yudaevvalera)
    (yudaevvalera) 6 месяцев назад

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

    • Ильмир Гайнутдинов (Gelmer)
      Ильмир Гайнутдинов (Gelmer) 6 месяцев назад

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

      • Alexander Mextner (invntrm)
        Alexander Mextner (invntrm) 5 месяцев назад

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

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

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

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

    • Ильмир Гайнутдинов (Gelmer)
      Ильмир Гайнутдинов (Gelmer) 5 месяцев назад

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

  3. (beliy13)
    (beliy13) 6 месяцев назад

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

  4. (123123)
    (123123) 6 месяцев назад

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

  5. (audel)
    (audel) 5 месяцев назад

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

  6. Ильмир Гайнутдинов (Gelmer)
    Ильмир Гайнутдинов (Gelmer) отредактировано 5 месяцев назад

    По вопросам приобретения плат заходим сюда  https://t.me/domofon_esp

    1000x_image.jpeg?1613121872
К списку статей

Похожие статьи

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
29 октября 2019, 07:59
Умный домофон на базе nodeMCU с прошивкой ESPHome.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
01 октября 2019, 07:07
"У всякого в умном дому неведомо никому" (с) Народная мудрость