Открытие домофона не вставая с дивана, режим "Жду курьера", беззвучный режим и многое другое.

Эта статья о моём желании скрестить подход Apple к юзабилити и устройство DIY. Для неискушенных технической составляющей — переходите к концу статьи, там описаны функции для пользователя.

База знаний (Wiki) | Сайт | Канал Telegram

Остальных прошу присоединиться к полету мысли. Итак, немного предыстории...

Начало...

В период пандемии, работая из дома, мне осточертело открывать дверь курьерам с едой, вещами и прочим, что можно заказать через интернет. В один из дней, сидя на общем созвоне с коллегам, ко мне внезапно приехал курьер. А так как я был основным докладчиком, мне было очень сложно остановить речь и открыть домофон, а потом ещё и встретить курьера. После этого я твердо решил, что мне нужно удаленное управление домофоном!

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

Были и те, которые поставлены на коммерческие рельсы, например Коммендант. Но при попытке заказа его мне ответили, что по их мнению моя деятельность не направлена на развитие домофонии. Это на 100% убило желание заказа)

Ну и как ожидаемый результат — мне пришлось создавать устройство самостоятельно, по имеющимся схемам в Интернет.

Первый блин комом

Я безмерно благодарен тем, кто выкладывает результаты своей работы в сеть в качестве OpenSource. Надеюсь и я когда-нибудь избавлюсь от боязни потери идеи и выложу свои наработки, но пока нет...

Найдя схему адаптера для домофона, основанную на реле я принялся её собирать. Получилось круто, потому что работало это превосходно - включалась и отключалась трубка, можно было открыть дверь и просто положить трубку. Поэтому, вдохновившись результатом я пошел существенно дальше — развел свою плату, отправил в Китай и получил прототип для микрокомпьютера RockPi S.


ROCK Pi S D4WPN8 RK3308/512Mb DDR3/WiFi/BT/PoE/1Gb SD NAND
ROCK Pi S D4WPN8 RK3308/512Mb DDR3/WiFi/BT/PoE/1Gb SD NAND
 Макет печатной платы первой версии платы на RockPi S
Макет печатной платы первой версии платы на RockPi S
 Собранная версия, полностью работоспособная на Rock Pi S
Собранная версия, полностью работоспособная на Rock Pi S

Работа над ошибками

Стоимость

После скачка цен февраля-марта 2022 года покупать микрокомпьютер стало дорого. Устройство не могло конкурировать с китайскими домофонными адаптерами на андроиде — стоимость в 7+ тыс против закупочной стоимости моей версии в 3 тыс не оставляло шансов на успех для меня.

Архитектура

К сожалению, ARM Cortex-A35 был слишком производительным и бОльшая часть его возможностей для устройства не была задействована. Транжирство не сулило ничего хорошего...

Размер

Собранная коробочка никак не поместилась бы внутрь трубки =(

Новые цели

И вот, после неудачи появилось четкое понимание требований.

  • Нужно низкое энергопотребление, желательно от батарей

  • Нужен небольшой размер, идеально - встроить в корпус штатной трубки домофона

  • Общение с внешним миром по WiFi

  • Стабильный микроконтроллер

В этот период я познакомился с интересным человеком — Романом {SCrat_ORS}, который уже некоторое время реализовывал ту же идею на аппаратном уровне и у меня отпала необходимость создавать свою схему.

Ко всему прочему, в схематике Романа уже предусмотрена возможность проигрывать звуковые файлы в ответ звонящему в домофон. И это было БОМБОЙ =)

На мой искушенный взгляд функционал устройства был ограничен вот из-за чего:

  • Сложное подключение к WiFi

  • Заточенность под Home Assistant

  • Замена звуков только через FTP

  • Управление параметрами через yaml

А если совсем честно сказать, мне стало лень изучать ESPHome, на которой Роман организовывал работу устройства. Я посчитал более выгодным написать свою прошивку с расширяемым функционалом, чем ограничиваться ESPHome. И тут понеслось...

Своя, альтернативная прошивка

Я не писал до этого ПО под микроконтроллеры для использования в production, но игрался с Arduino и реализовывал некоторые проекты на PHP. Это помогло мне на старте, например, в выборе архитектуры, используемых протоколов и подходе к созданию сервиса.

Если сообществу будет интересно, я напишу о деталях реализации, но сейчас предлагаю Вашему вниманию итоговый вариант :)

Подключение по WiFi

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

 Подключение к Wifi сети при инициализации устройства
Подключение к Wifi сети при инициализации устройства

WEB-интерфейс настройки устройства

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

 Внешний вид интерфейса настройки
Внешний вид интерфейса настройки

Настройки устройства через WEB

Считаю нужным обязательно показать основные настройки - здесь самый смак)

Режим отключенной трубки (беззвучный) — режим работы, при котором обычная трубка будет заглушена (на неё не будет приходить звонок). Параметр нельзя изменить во время звонка. Для сохранения возможности говорить с гостем у входной двери рекомендуется отключить звук на самой трубке, вместо использования режима на устройстве.Режим также можно использовать при отключении трубки при ремонте (когда снята трубка домофона);

Автоматическое открывание — функция позволяет не реагировать на звонки в домофон, а пропускать всех звонящих через определенное время длительности звонка. Длительность (в секундах) перед открытием устанавливается ползунком «Задержка автооткрытия». При входящем звонке устройство с активированным режимом осуществит открытие двери через указанное время;

Открыть при следующем звонке — режим позволит устройству открыть дверь подъезда при следующем звонке (только первый звонок после установки функции). Это полезно, когда Вы знаете, что к Вам придут гости.

Жду курьера — режим позволит устройству открыть дверь подъезда при следующем звонке (только первый звонок после установки функции) с воспроизведением аудиоинструкции курьеру. Это полезно, когда Вы знаете, что придет курьер – звонок от него обработает устройство и пропустит человека;

Автоматический сброс — при включении функции устройство при звонке будет воспроизводить посетителю звук отказа в открытии (если опция включена). “Автоматический сброс” и “Автоматическое открывание” являются взаимоисключающими функциями, поэтому допустимо включить только одну из них — при попытке активации обоих функций включенной останется только последняя.

Умный дом

Я не мог отказать уже имеющимся пользователям в интеграции с умным домом их устройств, для которых я писал прошивку. Поэтому интеграция с Home Assistant реализована почти 1 в 1 с ESPHome.

Для пользователей, кто работает с другими типами ПО умного дома остается интеграция по MQTT, к которому есть описание топиков.

 Настройки работы устройства для управления по MQTT
Настройки работы устройства для управления по MQTT

Что касается Home Assistant - он сразу определяет устройство и добавляет нужные элементы. Всё выглядит вот так:

 Подключенное устройство SmartIntercom к Home Assistant
Подключенное устройство SmartIntercom к Home Assistant

Сервис управления через Облако

Одной из задач для себя я поставил простое и удобное использование. К сожалению удобство потребовало внешних облачных сервисов. В моём случае реализованы функции:

В обоих случаях имеется возможность управлять настройками устройства - активировать функцию "Жду курьера", выключение звука трубки и прочее.

Если с навыком Алисы всё достаточно понятно, то для управления через Телеграм используется не так давно внедренные WebApp. Вот как это смотрится:

 Telegram WebApp для управления домофоном
Telegram WebApp для управления домофоном

Поскольку обратная связь от звонящего в виде голосового потока для устройства пока недоступна, то хорошим решением мне показалось включить в сообщение о звонке в Телеграм фото с входной группы. Оно берется по HTTP в формате mjpeg и добавляется в сообщению. Вот такое отображается при звонке у меня:

 Отображение входящего вызова и варианты его обработки
Отображение входящего вызова и варианты его обработки

Как выглядит итоговый вариант

Совсем маленькое устройство монтируется в трубку, к нему подводиться питание от адаптера, например, для телефона, а к клеммам подключается входящая линия и трубка. Пока, установку нужно делать самому, но в проекте полная версия "под ключ". То, как всё встроено посмотрите ниже

 Встроенное устройство в трубку домофона
Встроенное устройство в трубку домофона

Итак, что позволяет устройство сейчас:

— Подключение по WiFi к домашней сети
— Управление устройством через Алису с помощью навыка “Управление домофоном”
— Управление функциями через WEB интерфейс
— Функция отключения трубки домофона с переключением вызова только на устройство
— Автоматическое открывание при следующем входящем звонке
— Автоматическое открывание при каждом звонке с регулируемой задержкой
— Воспроизведение пользовательских звуков в домофон по трем событиям
— Функция “Курьер”, позволяющая воспроизвести отдельное уведомление для курьеров
— Управление функциями открытия через Telegram в момент звонка
— Интеграция с Home Assistant через MQTT
— Автоматическое обновление прошивки через Интернет
— Отключение индикации (встроенный светодиод) состояния
— Закрытие доступа к WEB интерфейсу логином и паролем
— Установка таймингов перехода в пограничные режимы

 Базовая комплектация устройства
Базовая комплектация устройства

Давайте поговорим в комментариях о том, как это применить и что еще хотелось бы добавить как функции?

Ссылки

Если Вы уже обладатель прошивки и вам нужна информация по устройству - приходите в нашу wiki - https://wiki.smartintercom.ru/

Если у вас есть вопросы - задайте их на сайте smartintercom.ru через форму обратной связи или на email help@smartintercom.ru

Канал с информацией о новых функциях - https://t.me/smartintercomru

Комментарии (32)


  1. foxyrus
    03.12.2022 15:52

    А где ссылки?


    1. GrayHoax Автор
      03.12.2022 16:48

      Ссылка на что?


    1. GrayHoax Автор
      03.12.2022 17:00

      Более подробная информация по устройству - https://wiki.smartintercom.ru/ru/home
      Статья не задумывалась, как продающая, поэтому не ставлю ссылку на сайт.


      1. RealBeria
        04.12.2022 00:59
        +5

        не знаю в качестве чего Вы задумывали эту статью, но получилась она 100% как рекламирующая и продающая. Вы только цену забыли указать.


        1. GrayHoax Автор
          04.12.2022 09:34

          Спасибо за замечание, учту в следующих материалах.
          Если вдруг у Вас есть идеи по расширению функционала - давайте обсудим это здесь.


  1. Z2K
    03.12.2022 15:53

    Спасибо. Годная вещь. Все на высоком уровне.


    1. GrayHoax Автор
      03.12.2022 16:48

      Спасибо)


  1. VladOrZ
    03.12.2022 19:30
    +14

    Я безмерно благодарен тем, кто выкладывает результаты своей работы в сеть в качестве OpenSource, но Вам я код не покажу

    так было бы правдоподобней начать статью. Удачи в продажах????


    1. GrayHoax Автор
      03.12.2022 19:55

      Это совсем не то, что хотел бы сказать читателям.


    1. LevOrdabesov
      04.12.2022 11:35
      +2

      Ну и в принципе, учитывая раздел "Цены" на сайте проекта, надо бы хаб "Я пиарюсь"
      @Boomburum


  1. Andy_Big
    03.12.2022 21:15
    +8

    И при разработке не было использовано никаких библиотек/исходников с лицензией GPL (или подобной, требующей раскрытия исходных кодов конечного продукта)?

    А то сталкивался я с товарищами, которые брали проект под GPL, навешивали на него своих рюшек, а на просьбу дать исходники отвечали "я не хочу чтобы ушлые коммерсанты наживались на моих результатах, поэтому исходников не будет".


    1. GrayHoax Автор
      03.12.2022 21:32
      +1

      Спасибо, что подсветили вопрос лицензии. Я проверю ещё раз лицензии компонентов, но стараюсь следить, чтобы используемые либы распространялись под MIT и пр.


    1. vikarti
      04.12.2022 13:03

      А вот есть в России хоть один случай когда в ответ — шел судебный иск (и с каким результатом?)
      Ну или хоть качественный пиар того как эти люди нарушают GPL в том числе и на зарубежных сайтах.


      1. Andy_Big
        04.12.2022 20:02

        О судах не слышал, а пиары вроде регулярно бывают. Думаю, что крупные компании стараются не нарваться на такой скандал, а известным в узких кругах китайцам и одиночкам на это просто плевать. Как пример - есть товарищ, клепающий свой вариант прошивки для 3D-принтеров (т.н. "Шуи", довольно популярный среди пользователей одного из производителей принтеров) на базе самой известной опенсурсной разработки Marlin 3D. Его пользователей вообще не волнует что он там нарушает, а сообществу разработчиков Marlin он слишком неинтересен, чтобы возиться с судами или вообще обращать серьезное внимание на него :)


  1. zxosa
    04.12.2022 08:45

    Если учесть, что блоков vizit серии 400 чуть менее чем много, то это прям существенное ограничение


  1. xayc73
    04.12.2022 09:30

    Это же только для определенных моделей домофонов?


    1. GrayHoax Автор
      04.12.2022 09:30

      Есть некоторые ограничения, вот тут перечислены основные - https://wiki.smartintercom.ru/ru/system-requirements


  1. NeverminD81
    04.12.2022 14:47

    Знаете, возможно, ещё не хватает одной функции: полное отключение трубки удалённо. Я поставил на домофон тумблер для прерывания плюсовой линии, из-за соседских подростков, которые частенько звонили с просьбой открыть дверь.

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


    1. GrayHoax Автор
      04.12.2022 14:48

      Такая функция есть, но активируется руками. «Режим отключённой трубки».

      При этом правда, звонок будет приходить в облако, но не на трубку.

      Детальнее изучу способы такое сделать. Спасибо!


  1. Rixty
    04.12.2022 17:39

    Это интересно, но откровенно нет устройства, которое являлось бы одновременно трубкой и вайфай модулем.

    Плюс - не очевидно, откуда брать питание в данной версии.

    У меня висит стандартная трубка и с нее я беру исключительно момент входящего звонка, т.к. в моем доме поставили домофоны с камерой дом ру и имеется возможность с них стянуть видео (и аудио) и кнопку открытия.


    1. GrayHoax Автор
      04.12.2022 17:48

      Это устройство может быть подключено вместо трубки - есть специальный режим "Режим отключенной трубки (беззвучный)".

      Питание все-таки нужно - предусмотрен USB Type-C. Но питать устройство от координатной сети нельзя.


  1. serafims
    04.12.2022 23:55

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


    1. GrayHoax Автор
      05.12.2022 06:31

      Схема не является секретом и её можно найти без проблем (правда не самый последний вариант). С прошивкой чуть сложнее - "управление из облака" требует внешнего сервера для обработки, поэтому открыв прошивку я не сделаю проще людям.

      При этом я целиком и полностью ЗА то, чтобы кто-то ещё реализовывал схожую функциональность. Это заставляет двигаться вперед, придумывать новые функции, оттачивать имеющиеся. Если нет конкуренции - нет и развития.


      1. serafims
        05.12.2022 11:28

        Ну внешний сервер это лишь описание API и описание, что, собственно, скрипт на сервере должен делать.

        "Оттачивать имеющиеся" при закрытом коде не получится, только заново создавать, а это очередная потеря времени. И тогда желающий исправить баг или добавить новый тип домофона скорее пройдёт мимо. Но, понятно, сначала надо выпустить коммерческий MVP и на него смотреть, да


        1. GrayHoax Автор
          05.12.2022 16:27

          В техническом смысле, конкретно этот проект - не просто решений сервер. Думаю, если будет интерес у читателей я напишу об этом.

          Спасибо за идею!


  1. CyberBot
    05.12.2022 00:33

    Я сделал открывание двери домофона немного проще и дешевле https://habr.com/ru/post/533812/


    1. GrayHoax Автор
      05.12.2022 06:37

      У Вас немного не тот домофон. Парное устройство Вызывная панель и Видеомонитор работает по немного другой схеме. Но сама идея хорошая.
      Рекомендую уйти от реле и ИК и что-то нужно придумать для снятия изображения и звука.


  1. Apptechka
    05.12.2022 06:03

    Спасибо, очень познавательно!

     – Оценка: Просто класс.


  1. empenoso
    05.12.2022 09:04

    А чем отличается от https://espdomofon.ru/umnyy-domofon/ ?


    1. GrayHoax Автор
      05.12.2022 09:21
      +2

      отличается схематикой - на 100%. С функциональной точки зрения - не нужно иметь свою автоматизацию для телеграм и Алисы. Ну и звуковое сопровождение - приглашение, инструкция курьеру, отдельный звук отказа.


  1. a_f
    05.12.2022 12:31

    подскажите, а можно таким образом использовать устройство как беспроводной домофон, т.е. у меня в данный момент нет домофона и я не хочу проводить его в квартиру, могу ли я подрубиться к домофону просто на лестничной клетке к проводам без трубки ? А все управление осуществлять через телеграмм...


    1. GrayHoax Автор
      05.12.2022 16:26

      Да, устройство это может. Но ему нужен WiFi и питание. Однако, заметьте, что двусторонней аудио связи не будет.