- PVSM.RU - https://www.pvsm.ru -
Открытие домофона не вставая с дивана, режим "Жду курьера", беззвучный режим и многое другое.

Эта статья о моём желании скрестить подход Apple к юзабилити и устройство DIY. Для неискушенных технической составляющей — переходите к концу статьи, там описаны функции для пользователя.
База знаний (Wiki) [1] | Сайт [2] | Канал Telegram [3]
Остальных прошу присоединиться к полету мысли. Итак, немного предыстории...
В период пандемии, работая из дома, мне осточертело открывать дверь курьерам с едой, вещами и прочим, что можно заказать через интернет. В один из дней, сидя на общем созвоне с коллегам, ко мне внезапно приехал курьер. А так как я был основным докладчиком, мне было очень сложно остановить речь и открыть домофон, а потом ещё и встретить курьера. После этого я твердо решил, что мне нужно удаленное управление домофоном!
Начав поиски готового решения я встретился с некоторыми проектами. Все они были слабо документированы, либо требовали отдельных знаний Умного дома для работы.
Были и те, которые поставлены на коммерческие рельсы, например Коммендант. Но при попытке заказа его мне ответили, что по их мнению моя деятельность не направлена на развитие домофонии. Это на 100% убило желание заказа)
Ну и как ожидаемый результат — мне пришлось создавать устройство самостоятельно, по имеющимся схемам в Интернет.
Я безмерно благодарен тем, кто выкладывает результаты своей работы в сеть в качестве OpenSource. Надеюсь и я когда-нибудь избавлюсь от боязни потери идеи и выложу свои наработки, но пока нет...
Найдя схему адаптера для домофона, основанную на реле я принялся её собирать. Получилось круто, потому что работало это превосходно - включалась и отключалась трубка, можно было открыть дверь и просто положить трубку. Поэтому, вдохновившись результатом я пошел существенно дальше — развел свою плату, отправил в Китай и получил прототип для микрокомпьютера RockPi S [4].



Стоимость
После скачка цен февраля-марта 2022 года покупать микрокомпьютер стало дорого. Устройство не могло конкурировать с китайскими домофонными адаптерами на андроиде — стоимость в 7+ тыс против закупочной стоимости моей версии в 3 тыс не оставляло шансов на успех для меня.
Архитектура
К сожалению, ARM Cortex-A35 был слишком производительным и бОльшая часть его возможностей для устройства не была задействована. Транжирство не сулило ничего хорошего...
Размер
Собранная коробочка никак не поместилась бы внутрь трубки =(

И вот, после неудачи появилось четкое понимание требований.
Нужно низкое энергопотребление, желательно от батарей
Нужен небольшой размер, идеально - встроить в корпус штатной трубки домофона
Общение с внешним миром по WiFi
Стабильный микроконтроллер
В этот период я познакомился с интересным человеком — Романом {SCrat_ORS}, который уже некоторое время реализовывал ту же идею на аппаратном уровне и у меня отпала необходимость создавать свою схему.
Ко всему прочему, в схематике Романа уже предусмотрена возможность проигрывать звуковые файлы в ответ звонящему в домофон. И это было БОМБОЙ =)
На мой искушенный взгляд функционал устройства был ограничен вот из-за чего:
Сложное подключение к WiFi
Заточенность под Home Assistant
Замена звуков только через FTP
Управление параметрами через yaml
А если совсем честно сказать, мне стало лень изучать ESPHome, на которой Роман организовывал работу устройства. Я посчитал более выгодным написать свою прошивку с расширяемым функционалом, чем ограничиваться ESPHome. И тут понеслось...
Я не писал до этого ПО под микроконтроллеры для использования в production, но игрался с Arduino и реализовывал некоторые проекты на PHP. Это помогло мне на старте, например, в выборе архитектуры, используемых протоколов и подходе к созданию сервиса.
Если сообществу будет интересно, я напишу о деталях реализации, но сейчас предлагаю Вашему вниманию итоговый вариант :)
Подключение по WiFi
Первый запуск устройства прост. При включении питания создается сеть Wifi SmartIntercom, подключившись к которой открывается страница настройки подключения к сети. На некоторых устройствах страница открывается с задержкой. Но выглядит она примерно так:

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

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

Режим отключенной трубки (беззвучный) — режим работы, при котором обычная трубка будет заглушена (на неё не будет приходить звонок). Параметр нельзя изменить во время звонка. Для сохранения возможности говорить с гостем у входной двери рекомендуется отключить звук на самой трубке, вместо использования режима на устройстве.Режим также можно использовать при отключении трубки при ремонте (когда снята трубка домофона);
Автоматическое открывание — функция позволяет не реагировать на звонки в домофон, а пропускать всех звонящих через определенное время длительности звонка. Длительность (в секундах) перед открытием устанавливается ползунком «Задержка автооткрытия». При входящем звонке устройство с активированным режимом осуществит открытие двери через указанное время;
Открыть при следующем звонке — режим позволит устройству открыть дверь подъезда при следующем звонке (только первый звонок после установки функции). Это полезно, когда Вы знаете, что к Вам придут гости.
Жду курьера — режим позволит устройству открыть дверь подъезда при следующем звонке (только первый звонок после установки функции) с воспроизведением аудиоинструкции курьеру. Это полезно, когда Вы знаете, что придет курьер – звонок от него обработает устройство и пропустит человека;
Автоматический сброс — при включении функции устройство при звонке будет воспроизводить посетителю звук отказа в открытии (если опция включена). “Автоматический сброс” и “Автоматическое открывание” являются взаимоисключающими функциями, поэтому допустимо включить только одну из них — при попытке активации обоих функций включенной останется только последняя.
Я не мог отказать уже имеющимся пользователям в интеграции с умным домом их устройств, для которых я писал прошивку. Поэтому интеграция с Home Assistant реализована почти 1 в 1 с ESPHome.
Для пользователей, кто работает с другими типами ПО умного дома остается интеграция по MQTT, к которому есть описание топиков.

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

Сервис управления через Облако
Одной из задач для себя я поставил простое и удобное использование. К сожалению удобство потребовало внешних облачных сервисов. В моём случае реализованы функции:
Telegram - управление через бота [5]
Алиса - управление через навык [6]
В обоих случаях имеется возможность управлять настройками устройства - активировать функцию "Жду курьера", выключение звука трубки и прочее.
Если с навыком Алисы всё достаточно понятно, то для управления через Телеграм используется не так давно внедренные WebApp. Вот как это смотрится:

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

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

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

Давайте поговорим в комментариях о том, как это применить и что еще хотелось бы добавить как функции?
Если Вы уже обладатель прошивки и вам нужна информация по устройству - приходите в нашу wiki - https://wiki.smartintercom.ru/ [10]
Если у вас есть вопросы - задайте их на сайте smartintercom.ru [11] через форму обратной связи или на email help@smartintercom.ru [12]
Канал с информацией о новых функциях - https://t.me/smartintercomru [3]
Автор: Илья
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/381065
Ссылки в тексте:
[1] База знаний (Wiki): https://wiki.smartintercom.ru/ru/home
[2] Сайт: https://smartintercom.ru/
[3] Канал Telegram: https://t.me/smartintercomru
[4] RockPi S: https://wiki.radxa.com/RockpiS
[5] бота: https://t.me/intercom_servicebot
[6] через навык: https://alice.ya.ru/s/c985820a-4fa3-4836-98f1-577e1fe98305
[7] пользовательских звуков в домофон: https://wiki.smartintercom.ru/ru/needs/creating-sounds
[8] через Telegram в момент звонка: https://wiki.smartintercom.ru/ru/needs/bot-using
[9] через MQTT: https://wiki.smartintercom.ru/ru/device-setup/mqtt
[10] https://wiki.smartintercom.ru/: https://wiki.smartintercom.ru/
[11] smartintercom.ru: https://smartintercom.ru
[12] help@smartintercom.ru: mailto:help@smartintercom.ru
[13] Источник: https://habr.com/ru/post/703284/?utm_source=habrahabr&utm_medium=rss&utm_campaign=703284
Нажмите здесь для печати.