В свое время мне попалась на глаза статья о том, как можно сделать самый обычный аналоговый домофон чуточку умнее с использованием ESP и некоторого кол-ва достаточно простых компонентов. На тот момент лень во мне взяла верх и я отложил реализацию этого в долгий ящик. Спустя время этот проект получил развитие, и когда я увидел предложение о покупке уже готовой платы я тут же ее заказал. Здесь я хочу поделится своим опытом использования и некоторыми полезными автоматизациями.
Для начала стоит обратить внимание на авторов этого проекта:
@Vasilchuk – автор статьи, а так же прошивки для ESP
@Ge1mer – автор готовой платы
Если вы пользуетесь их трудами, я думаю что будет справедливо выразить им материальную благодарность, т.к. разработка и реализация всего этого отнимает много сил и времени. Все ссылки для этого доступны в GitHub’е проекта.
Приобрести готовую плату можно здесь – espdomofon.ru.
Итак, приехавшая ко мне плата представляет из себя достаточно компактный прямоугольник размером примерно 54×30 мм:
Основную информацию по подключению и настройке платы, а также актуальную версию прошивки для нее можно найти здесь, так же существует группа в Телеграм, в которой можно найти ответы на большинство возникающих по плате вопросов.
Я же остановлюсь только на основных моментах. Плата подключается в разрыв линии домофона, т.е. между вызывной панелью внизу и трубкой в квартире.
Контакты на плате:
“Line +
” и “Line -
” – для подключения линии, т.е. кабеля, который приходит к вам в квартиру от вызывной панели домофона.
“Intercom +
” и “Intercom -
” – для подключения трубки домофона расположенной у вас в квартире.
Подключить плату к питанию можно как с помощью контактов “Power +
” и “Power -
“, так и с помощью обычного Micro-USB разъема.
Плата может питаться напряжением от 3.5 до 16 Вольт.
Лично я для питания платы выбрал вот такой БП 5В на DIN рейку:
Т.к. из щитка в подъезде до трубки домофона у меня проложен кабель UTP с 8 жилами, я рассчитывал разместить плату в самой трубке (точнее ее “базе”), а блок питания разместить в щитке, подав питание на плату по свободным жилам кабеля.
К сожалению, плата оказалась великовата для моей трубки и в базу не поместилась по толщине.
В итоге я разместил плату в подъезде, запрятав ее в распаечную коробку, оставив трубку в квартире нетронутой.
Стоит учесть, что в подобном варианте размещения теряется некоторый функционал платы, а именно не получится использовать светодиод и кнопку. Они призваны управлять логикой работы платы, менять ее режимы и т.д. Но т.к. я все равно планировал использовать плату вместе с HA, для меня это было не критично.
В итоге, после некоторого времени эксплуатации платы у меня появилось несколько полезных автоматизаций, все они собраны в отдельный package, доступный у меня на GitHub’е. Здесь же я опишу пару интересных на мой взгляд моментов.
Самая очевидная и полезная функция – оповещение в Telegram о входящих звонках, с inline-кнопками “Открыть” и “Отклонить”.
Это максимально удобно, а пример реализации доступен прямо в репозитории проекта.
В жизни это выглядит примерно так:
Помимо Телеграма, оповещения можно настроить и в виде push-сообщений на телефоне, например через родное приложение Home Assistant.
Не менее полезная, но чуть менее очевидная полезность – автоматическое открытие двери курьерам.
Можно делать это в полу-автоматическом режиме – по звонку курьера (буду у вас через N минут) включать однократное авто-открытие (при желании в паре с mute), а можно добавить еще немного автоматизации и включать эти режимы по получению оповещения на телефоне о том, что курьер выехал к вам.
Важный момент – описанный ниже способ только на телефонах с ОС Android.
У себя я это реализовал для доставок из Яндекс.Еды (там же и Яндекс.Лавка) и Delivery Club, но по аналогии можно сделать практически для любого приложения, которое умеет оповещать о том, что курьер скоро будет у вас.
Прежде всего, для того что бы эта схема заработала, необходимо как то перехватывать оповещения приходящие на телефон.
К счастью, этот функционал встроен в официальное приложение HA для Android из коробки. Нам остается только сходить в настройки приложения, включить соответствующий сенсор и ограничить список приложений на которые он будет реагировать:
После этого в HA появится сенсор, в state’е которого будет содержатся текст последнего уведомления от выбранных приложений, а в атрибутах некоторая дополнительная информация:
Если у вас нет желания хранить историю этих уведомлений (а в них зачастую приходит куча рекламы), стоит так же отключить сохранение в БД истории этих сенсоров, добавив в configuration.yaml примерно следующее:
recorder: exclude: entity_globs: - sensor.*_poslednee_uvedomlenie
На основе этого сенсора уже можно написать вот такую автоматизацию:
automation: - alias: Domofon - Open Once for Couriers trigger: # Автоматизация сработает при изменении любого из сенсоров (два телефона) - platform: state entity_id: - sensor.kb2003_poslednee_uvedomlenie - sensor.mi_8_poslednee_uvedomlenie condition: # Здесь можно добавить любое нужное кол-во condition в режиме "OR" для разных приложений condition: or conditions: # Яндекс.Еда # Если в уведомлении содержится текст "Курьер * будет у вас в течение" - condition: template value_template: >- {{ trigger.to_state.state | regex_search('Курьер .* будет у вас в течение .*') }} # Delivery Club # Или если в уведомлении содержится текст "Уже спешит к вам" - condition: template value_template: >- {{ trigger.to_state.state | regex_search('Уже спешит к вам') }} action: # Включится режим однократного автоматического открытия домофона - service: switch.turn_on data: entity_id: switch.domofon_automatically_open_once # Отправится уведомления в Телеграм - service: notify.telegram data: message: "Курьер уже в пути, для домофона включен режим однократного авто-открытия."
Работает это так: вы делаете заказ в приложении Яндекс.Еда или Delivery Club и как только ваш заказ готов – вам приходит оповещение о том, что курьер уже в пути. Текст этого оповещения будет передан в HA, по триггеру запустится автоматизация, и если в тексте будет найдена искомая фраза – включится нужный режим домофона.
Еще одна идея, подсмотренная в профильном чате – включать режим однократного авто-открытия двери при приближении к дому меня или моих домочадцев.
Например, при возвращении с работы или с прогулки достаточно просто набрать на вызывной панели номер квартиры и дверь откроется сама. Не нужно доставать ключи или телефон, помнить код или ждать пока кто-то руками откроет тебе дверь.
Работает это на основе Zone trigger, т.е. автоматизация сработает тогда, когда объект попадет в заранее определенную зону.
У меня это, опять-таки, реализовано с помощью родного приложения HA для Android. Оно по-умолчанию умеет отслеживать и передавать в HA координаты телефона.
А раз есть объект (телефон или персона) с координатами, останется создать зону вокруг подъезда (радиус зоны стоит выбрать с некоторым запасом, для компенсации неточностей в определении координат) и написать автоматизацию, срабатывающую при появлении объекта в нужной зоне.
automation: - alias: Domofon - Open Once at Enter to Home Zone trigger: # Триггер по появлению (event: enter) персоны в зоне - platform: zone entity_id: - person.alexander - person.irina zone: zone.domofon event: enter action: # Включаем однократное авто-открытие - service: switch.turn_on data: entity_id: switch.domofon_automatically_open_once # и однократный mute - service: switch.turn_on data: entity_id: switch.domofon_mute_sound_once # Отправляем оповещение о том, что нужный режим включен. На всякий случай. - service: notify.telegram_stall data: message: "_Домофон_: включен режим однократного авто-открытия." # Далее ждем пока откроется дверь в квартиру - wait_for_trigger: - platform: state entity_id: binary_sensor.0x158d00031c790f_contact to: 'on' # таймаут ожидания - 10 мин timeout: "00:10:00" # Код ниже будет выполнен сразу же, если сработает условие из wait_for_trigger # или по истечении 10 минут - choose: # Если режим авто-открытия все еще включен... - conditions: >- {{ is_state('switch.domofon_automatically_open_once', 'on') }} sequence: # выключаем однократное авто-открытие - service: switch.turn_off data: entity_id: switch.domofon_automatically_open_once # выключаем mute - service: switch.turn_off data: entity_id: switch.domofon_mute_sound_once # отправляем оповещение - service: notify.telegram data: message: "_Домофон_: отключен режим однократного авто-открытия."
Это всего пара реализованных мною идей, в жизни применений этому устройству можно найти гораздо больше, а для вдохновения стоит почитать профильный чат в телеграме.
Со своей стороны хочу отметить, что это одно из самых полезных устройств в использовании у меня на текущий момент. =)