Прокачиваем домофон протоколом MQTT для управления с телефона

    Всем привет. Расскажу немного про свою последнюю междуделку — доработку домофона WiFi-модулем NodeMCU. Заранее прошу прощения за выбор модуля — всех уже, наверное, достала эта ESP’шка…

    Конечно, работу ClusterM с его автоответчиком никому не переплюнуть, но такой функционал я считаю излишним. Мне, с рождением дочки, лишь понадобилось бесшумно открывать домофон гостям, чтобы не стоять у трубки и не ждать входящего звонка, который наверняка разбудит малую. Да и себе иногда легче открыть дверь с телефона, нежели лезть за ключами и прикладывать таблетку туда-сюда, чтобы она сработала (у меня очень сильно тупит панель в подъезде). Проект получился небольшой, так что в статье тоже не так много букв, зато есть фотографии.

    Железо

    В наличии у меня было несколько модулей NodeMCU, так что, прикинув его к трубке домофона, решил, что влезет он туда без проблем, надо лишь сделать плату расширения. Развожу я всегда в EagleCad, платы заказываю либо у китайцев, либо в американском OSH Park. На OSH Park выходит дешевле, если площадь платы маленькая, но вы получаете только 3 платы вместо 10 китайских, но для штучного проекта это не важно. На плату отлично встали релюшки PE014005, прям аккурат между выводов NodeMCU.



    Не самый дешевый вариант, но у меня они были в наличии. А так можно поставить самые дешевые китайские, HUI KE например (это не ругательство, это фирма такая — у них есть серия релюшек HK4100F). Еще использовал две оптопары 4N35S, одну на вход — отлавливать входящий звонок, вторую на замыкание кнопки открытия домофона.

    Получившиеся схема и топология платы вот (всё есть в репозитории, ссылка в конце статьи):





    Платы с производства.



    Несколько фотографий







    Описание работы трубки

    Сначала немного по принципу работы самой трубки — у меня Цифрал КЛ-2. Вот схема с официального сайта.



    На схеме: 1,2 — контакты подключения линии домофона (имеет полярность, если кто не знал); SW2 — переключатель звука трубки (внизу — звук выключен, вверху — звук включен); SW1 — рычаг разговорной трубки (внизу — трубка висит, вверху — трубку сняли для разговора); SB1 — кнопка открытия двери; BA1 — динамик трубки; BM1 — микрофон трубки, HL1 — светодиод.

    Когда подъездная панель дает вызов, в линию поступает меандр амплитудой 12В. Сопротивление в линии должно быть 50 Ом, в любом другом случае на панели высветится ошибка. Если переключатель SW2 находится в нижнем положении (звук на трубке выключен), то в линию подключен резистор 50 Ом — светодиод поморгает, но звука мы не услышим. Если переключатель SW2 в верхнем положении (звук включен), а переключатель SW1 в нижнем (трубка висит), то в линии будет сопротивление динамика BA1 всё те же 50 Ом, как раз на него попадает меандр и мы слышим звук. После снятия трубки, SW1 переходит в верхнее положение и один вывод динамика отрывается от земли, теперь там будет аналоговый сигнал разговора и приемлемая для уха громкость, а не звонок на сотню децибел. Если вы решаете открыть гостю дверь, то нажимаете на кнопку SB1, которая запирает транзистор и сопротивление в линии резко возрастает — так панель понимает, что надо открывать дверь.

    Теперь о доработках



    Relay1 — берем управление звуком на себя (считаем, что родной переключатель трубки SW2 в верхнем положении, иначе будет каша); Input — оптопара, дергается во время звонка (подключена перед Relay1, чтобы видеть звонок в бесшумном режиме); Relay2 — имитирует снятие трубки; Open — замыкает кнопку открытия двери. Обращаю ваше внимание на то, что релюшки подпаяны нормально замкнутыми контактами в разрыв. Это означает, что в любой момент можно отключить домофон от сети (а вдруг свет вырубился или интернет пропал) и он сохранит свою работоспособность, это важно.

    Прошивка

    Прошивку писал в PlatformIO (плагин для редактора Atom) на ардуиновских библиотеках. Ссылка на репозиторий в конце статьи. Эта, с вашего позволения, IDE будет поудобнее родной ардуиновской — кто не пробовал, обязательно попробуйте. В качестве MQTT клиента на телефон использовал IoTmanager (далее — просто клиент). По программе много рассказывать не буду (желающие посмотрят код), лишь опишу, что она умеет:

    • подключаться к MQTT брокеру
    • публиковать топики с настройками для клиента
    • подписываться на топики для реакциина переключения в клиенте
    • отправлять push уведомление на телефон при входящем звонке
    • публиковать измененные настройки при звонке (чтобы видеть статус в клиенте)
    • отключать звук на домофоне по команде клиента
    • открывать дверь разово,
    • открывать бесконечное число раз
    • просто сбрасывать трубку

    Экранные формы приложения (кликабельно)



    Фишка программы IoTmanager в том, что все настройки хранятся в топиках, а она лишь отображает то, что опубликовано. Немного теряется смысл легковесного протокола MQTT, но мне такая реализация нравится. При желании можно переделать под другой MQTT клиент.

    Конечно всё это (да еще с двумя электромеханическими реле) требует внешнего питания и я бы задумался над целесообразностью поделки, если бы мне понадобилось заводить питание 5В от розетки… Но у меня счетчик находится внутри квартиры, а домофон висит совсем рядом. Я просто заказал на Ali модуль 220AC/5VDC на din-рейку и запитал домофон от него. На фото он перевернут для удобства внутреннего монтажа.



    Всем спасибо за внимание. Приглашаю в комментарии.

    Разработана вторая версия устройства, про которую я рассказываю тут
    Доработка домофона протоколом MQTT для управления с телефона (версия 2.0).

    Полезные ссылки:

    1. Репозиторий этого проекта на GitHub — там есть схема, разводка, исходный код.
    2. Создание умного домофона с автоответчиком и Интернет-соединением — статья товарища ClusterM, упомянутая в начале.
    3. Как я домофон Vizit к mqtt подключал — домофон с Arduino и Ethernet shield.
    4. Esp8266 управление через интернет по протоколу MQTT — статья про MQTT и ESP8266.
    5. Дистанционное управление домофоном — еще одна статья по теме.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Писать еще?

    Поддержать автора
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 82

      +1
      Хорошая автоматика, правильная. Питание бы как-нибудь инжектить еще в тот же провод, два провода малость лишнего. Или поставить аккумулятор с подзарядкой от линии домофона. Может вообще в виде внешнего блока?
      И такой же с GSM :-) И можно продавать.
        +1
        Получить что-то внятное по питанию с линии домофона в моем понимании невозможно.
        В линии должно быть 50 Ом. Шаг вправо, шаг влево — расстрел.
          +1
          Да и трубка подключается к цепям домофона только во время звонка и разговора (через транзисторы коммутируются и "+" и "-" трубки).
            +1
            А сопротивление проводов? Типа, первый этаж и 17-й?
              0
              Я думаю в панели учтена эта погрешность
          +1
          А почему бы не использовать твердотельные реле вместо электромеханических?
            0
            БольшУю роль сыграло то, что я выбирал из того, что было в наличии. Для выключения звука, например, требовалось перекидное реле, а среди твердотельных я таких не встречал. Может кто знает такие, буду рад, если покажите.
            Выбор нормальнозамкнутых твердотельных (для поднятия трубки) тоже весьма ограничен и, повторюсь, у меня не было их в наличии.
              +1
              Я в принципе так и предполагал, что выбор был из того, что уже не надо покупать.
                0
                Перекидное твердотельное, TN2-L2-5V — не то, что требуется?
                Не помню где нашел, сам не пробовал…
                  0
                  Электромеханическое жеж…
              –3
              А можно было бы просто узнать код от домофона и всем пользоваться им. Панель домофона в подъезде поменяли за 1 день, когда я узнал правильный email, куда пожаловаться. До этого год страдал с западающими кнопками на панели.
                0
                Если уж сделали MQTT, у правление надо было заводить на сервер умного дома. Чтобы при вашем приближении к подъезду дверь сама открывалась.
                  +3
                  … Чтобы при вашем приближении к подъезду дверь сама открывалась.

                  А если мне в данный момент времени, находясь у подъезда, не надо заходить во внутрь?

                    +1
                    Да пофиг, пусть будет открытый всё это время. Лет 20 назад никто про эти домофоны и не думал.
                    Но вообще у подъезда только на лавках сидят, бухают. Обычно там никто не задерживается.
                      +2
                      А как Вы собираетесь открывать дверь без факта входящего звонка? Панель же среагирует на сигнал открытия только после вызова в конкретную квартиру…
                        +1
                        не знал об этом. У меня код, поэтому и трубку домофона в квартире ставить не нужно было.
                          +2
                          Да, такая особенность. Панель дает вызов одному абоненту в один конкретный момент времени и ждет от него принятия решения. Просто так взять и подать сигнал в линию бесполезно.
                            0
                            Небольшое отступление от темы, для общего развития читающих.
                            В качестве альтернативы люди делают «заглушки», которые открывают дверь сразу после входящего звонка. Все построено на аналоговой электронике, устройство вешается вместо трубки и не требует внешнего питания. Единственный минус — дверь открывается любому позвонившему.
                              –1
                              кстати, а по такому же принципу нельзя сделать открытие по коду? Чтобы трубка в квартире понимала, какие кнопки на домофоне нажимаются после звонка. И тогда можно будет задавать свой код, после которого будет открываться дверь.
                                +1
                                Вопрос интересный. Возможно тут прокатил бы вариант с тональным набором, как на телефонах, но я не помню, чтобы клавиши на панели различались по тональности… А следовательно отследить на трубке в квартире, какая клавиша была нажата, не представляется возможным.

                                Легче уж тогда сделать простенькое распознавание голоса и кодовое слово «сиськи» для входа в подъезд.
                                  0
                                  Ну например унарный код из пик-пик-пик-пик-пик можно реализовать?
                                    0
                                    Думаю вполне возможно
                                      0
                                      Распознование голоса прикольнее. В принципе через ESP можно пихать это все на гугл, там распозновать речь и делать что хочешь :)
                                      А по простому — можно просто прикинутся трубкой другой (несуществующей) квартиры и при ее вызове сразу открывать дверь… Для безопасности — номер можно менять и присылать на телефон push-ем %)
                                        0
                                        В координатном домофоне панель выбором провода определяет кому идет сигнал — для звонка в несуществующую квартиру придется подрубиться к панели на свободные адреса.
                                        В цифровом там на трубке выбирается адрес. Вот тут наверное можно несуществующей притвориться. Правда возможно там в панели как-то настраивается реальный диапазон квартир, чтоб сразу давать отбой на набор несуществующей.
                                          0
                                          О, да, не заметил, что тут речь о координатной системе…
                                +2
                                Единственный минус — дверь открывается любому позвонившему.
                                Тумблер поставить можно, жду гостей — включил «заглушку», пришли — выключил (всё равно же к дверям подходить).
                                  +1
                                  У меня в этом режиме домофон работал пару недель без всяких устройств. Всего-то надо было неаккуратно вписаться в домофонную трубку в квартире(она висит почти на углу)…
                          +3
                          А если нету никакого умного дома? Делал конкретно под себя. Есть телефон и надо бесшумно открывать, т.к может спать маленький ребенок.
                            –3
                            Поставить Home assistant, если дома есть какой-н сервер — дело на один час.
                              +2
                              Нету сервера и нет необходимости
                                0
                                кода от домофона тоже нет?
                                  0
                                  Именно
                        +2
                        Как найти штуку, от которой вы всё запитали?
                          +1
                          Я брал конкретно вот эту. Есть разные аналоги.
                            +1

                            Например в поиске на Али набрать «5vdc din rail», и выбирать на свой вкус.

                              +1
                              Что-то дорого :( С учетом того что большинства наверняка валяются лишние зарядки от телефонов в количестве больше одной штуки.
                                0
                                Во-первых, он будет висеть у вас на проводках. Во-вторых, сдохнет с большей вероятностью гораздо раньше. В-третьих, экономить на БП, который постоянно включен — ну, так себе идея.
                                  0

                                  Не обязательно же висеть на проводах и почему сразу экономить?

                                    0
                                    Так в щитке нет розетки, а у блоков питания для телефонов нет даже просто дырки для крепления, не говоря уж о креплении на дин. Как ему еще висеть?
                                    А экономить — это жалеть 500 рублей на нормальный блок питания, покупая что-то дешевое для зарядки.
                            +1

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

                              0
                              Нет, нельзя. Панель дает вызов одному абоненту в один конкретный момент времени и ждет от него принятия решения. Просто так взять и подать сигнал в линию бесполезно.
                              +1
                              Что используете в качестве MQTT сервера?
                              +1
                              Глупый вопрос немного в стороне, но все же по теме…
                              Есть ли возможность двухпроводную вызывную панель подключить к трубке в количестве двух штук? В интернете пробовал гуглить, но на свою трубку(DP-201R) не смог даже схему найти… И лишь упоминания какого-то устройства, которое нужно использовать чтобы подключить две вызывных панели…
                                +1
                                Затрудняюсь ответить. Будет зависеть от панели, каким образом она вызывает абонента. Еще раз повторюсь, что в обычных координатных домофонах сопротивление в линии должно быть 50 Ом (именно такое имеет трубка), и тут будет важно какое сопротивление внесет в линию вторая панель, подключенная параллельно. Тут и проблемы с разным питанием могут быть.
                                  0
                                  Пользователь usern прислал в личку вполне логичное решение для подключения двух вызывных панелей(странно что я сам не догадался, на поверхности же лежит):
                                  просто тупо параллельно через диоды.


                                  Также есть решение и для подключения двух трубок на одну панель:
                                  это будет работать при последовательном подключении обычных трубок. Либо надо использовать так называемую «мастер» трубку. (неадекватно по цене)
                                  +1
                                  Но зачем надо было делать плату с панелькой под NodeMCU, если можно было разместить стаб, несколько резисторов и ESP на той же плате?
                                    +1
                                    … а реле подвесить на соплях рядышком? :)

                                    oWart, нет планов впилить голосовой тракт? :) видал mp3-плеер на есп — то есть, проц тянет норм. осталось приколхозить ацп, я так понимаю? или даже встроенный зазюзать…
                                      0
                                      На той же плате, что и реле. Кстати, если взять какой-нибудь PRAC30S, то размер платы сократится серьезно.
                                        +1
                                        я так понимаю, реле и nodemcu были уже у автора в наличии. и чтобы всё собрать на одной, надо было еще от старой отпаять. но зачем? :)
                                          –3
                                          А если бы была малина и три промышленных контактора, сделал бы на них? Зачем запихивать отладочную платку в готовое устройство?
                                            +2
                                            ёмаё, vvzvlad, этж для себя и «фо фан» в свободное время! сделал, работает, рад.
                                            к чему эти занудства?
                                              0
                                              Эээ… Странная у вас логика. Если фофан, то сойдет что угодно и любой говнокод? Я увидел способ оптимизировать, я его сказал. Если взять ESP12E, то не надо будет тратить платку nodemcu, которая в общем-то, отладочная, и оставлять ее в устройстве, ну… во-первых, жалко, во-вторых, смахивает на подход «запихнет туда ардуину».
                                        0
                                        Да была такая идея, даже трансформаторов для развязки прикупил, но ограничился вот этим. Появились другие дела.
                                        0
                                        Проект был сделан что называется между делом: с минимальными затратами и на том, что есть. На NodeMCU уже есть USB-UART правильно разведенный для прошивки и стаб на 3V3. Я лишь развел релюшки и сделал бутерброд, благо место внутри трубки позволяет. Считаю нецелесообразным делать все на одной плате самому, поделка же разовая.
                                          0
                                          Все равно вы плату заказывали, какая разница, там +20 точек пайки всего.
                                        +1
                                        Схема явно не продумана.
                                        Нет необходимости вообще вмешиваться в схему трубки, достаточно подключить устройство в разрыв линии и эмулировать трубку подбросом нужных сопротивлений.
                                          0
                                          Хм… а в этом есть смысл, спасибо. В таком направлении правда не подумал. Попробую на досуге прикинуть схему.
                                          0

                                          Собираю тоже самое с той же целью. Спасибо за статью.
                                          А можно ссылку на али на БП для din рейки?

                                            +1
                                            В комментариях выше есть ссылка
                                            0
                                            Поясните плиз, а что значит «открывать бесконечное число раз»?
                                              0
                                              По скриншотам посмотрите, там есть переключатель «Открывать всем». Когда он включен, дверь будет открываться на любой звонок
                                              +1
                                              Было бы неплохо еще двухстороннюю голосовую связь сделать, то есть чтобы звук с трубки передавался на смартфон и обратно.
                                                0
                                                блютуз прикрутить?
                                                +1
                                                Мелкая идея для доработки ПО: все режимы сделать управляемыми с таймером действия. Например юзкейс для «открыть разово в течение 10 минут» — на автобусе подъезжаю к дому, активировал, захожу свободно. Если по дороге задержался (в магазин забежал), само сбросилось. Для «открыть всем в течение 5 минут» — иду толпой домой (гости, допустим), активирую, все с интервалом 1-2 минуты заходят не дожидаясь хозяина и режим сам сбрасывается.

                                                Более умное устройство уже требует иного железа, с пробросом голоса по сети (gsm не нужен — wifi), это не в данную разработку.
                                                  0
                                                  У меня вопрос, а для чего устанавливают домофон в подъезде?
                                                  Вот 10 мин. дверь открыта и что? Входи любой, потому, что один товарищ пожелал бросить открытой дверь, пока он идет от автобуса. А в это время, например, бомжи вошли и устроили пожар. Это конечно не панацея, но минимально от пьяного, плохо воспитанного человека, пожелавшего сходить по-маленькому в подъезде защищает.
                                                  Почему вы об этом забываете? А если можете сделать лучше, чем домофон, почему не делаете?
                                                  Да, дистанционное открытие, это хорошо. Но лучше было бы перевести всё это безобразие в приложение и управлять с мобилки. Как входящим вызовом, так и открытием. В результате, даже не присутствуя дома можно было бы и открывать, и отвечать. Вот это было бы вообще замечательно.
                                                  Но автор, в свою очередь, молодец! Он решил СВОЮ задачу. И с нами поделился. Спасибо ему.
                                                    +1
                                                    Я как раз и реализовал управление с мобилки, можно открыть дверь на звонок и не обязательно для этого присутствовать дома. Единственное что — отвечать голосом нельзя.
                                                    А по поводу идеи открытия на 10 минут от Mishootk, так идея имеет право на жизнь. Вы, a_tarsov, кажется не понимаете принцип работы домофона. Я его где-то тут описывал, немного повторюсь. Дверь откроется только в том случае, если поступит входящий звонок в вашу квартиру. Невозможно открыть дверь подъезда без входящего звонка от панели. Думаете бомж будет знать тот момент времени, когда вы вышли с автобуса и направляетесь домой, чтоб позвонить конкретно в вашу квартиру? Я так не думаю. Такое устройство нисколько не снижает пропускной контроль в подъезд. Можно позвонить в любую квартиру и прикинуться почтальоном/скорой/милицией.
                                                      +1
                                                      Это я на «парах». Как раз вчера, еле выгнал такого товарища за дверь. Провонял весь подъезд.
                                                      А момент обязательного вызова, я действительно пропустил. Спасибо, что поправили.
                                                        +1
                                                        Такие «товарищи» заходят без звонка — физически нормально развитый человек вполне в состоянии рывком открыть магнитный замок, а человек с «фомкой» и без рывка.
                                                      +1
                                                      В приложении уже есть режим «открыть однократно» и «открывать всегда». Я предложил добавить временное ограничение, что наоборот повысит защиту от несанкционированного проникновения из за человеческого фактора (забыл снять режим).
                                                    +1
                                                    Классная статья.
                                                    Еще можно по сигналу GPS определять что подходишь к дому и активировать режим «открывать всем».
                                                      +1
                                                      Кстати, можно поставить «свой секретный код». На случай когда забыл ключ от домофона, сел телефон, дома никого (искуственно, согласен, но похожие ситуации возникают).

                                                      Алгоритм такой: вызов себе в квартиру, отмена вызова на определенном гудке (трели). Через определенное количество секунд повторный вызов опять с отменой на нужном гудке. Кодом открытия служит определенная последовательность длительностей вызовов и пауз между вызовами.
                                                        +1
                                                        Алгоритм такой: вызов себе в квартиру, отмена вызова на определенном гудке (трели). Через определенное количество секунд повторный вызов опять с отменой на нужном гудке...

                                                        Вот, так же хотелось бы себе сделать. Достаточно думаю 3 гудка, пауза 5-10 сек и при следующем звонке на 3 гудок «автооткрытие». Кто подскажет простую схемку без микропроцессоров? :-)
                                                          +1
                                                          На счетчике серии SN74 например, со сбросом на RC цепочке
                                                            0

                                                            Микроконтроллер как раз позволяет реализовать простую схему

                                                              0
                                                              Согласен, но на «счетчиках» смогу собрать просто так, а для МК уже программировать надо будет и программатор еще требуется наверное.
                                                              Т.к. логика простецкая, которую хочу, кажется что на простых элементах проще/надежней будет. А если наверное на КМОП (не знаю как сейчас это называется) типа логике собирать, вообще можно от батареек запитать наверное…
                                                                0

                                                                Можно ещё проще. Ардуино. Компоненты по цене шаурмы. Принцип конструктора. Схему можно собрать без пайки (или почти без пайки). Программатор не нужен. Список команд помещается на одной страничке. Библиотеки под все популярные датчики/исполнительные устройства. Куча русскоязычных ресурсов по всем интернетам.
                                                                Задействуя режим Picopower, можно питать схему от одного литиевого аккумулятора, на котором она будет жить до жопкиного заговения :)
                                                                Но оверинжиниринг… Но проще… :)

                                                                  0
                                                                  Спасибо, подумаю :-)
                                                          0
                                                          Отличное решение. Хотел как-то собрать на работе что-то похожее, чтобы не вскакивать постоянно с рабочего места ради нажатия кнопки открытия двери на домофоне. Домофон простой, без вызывной панели, просто кнопка, динамик, микрофон и «таблеткоприемник». Решил проблему просто — взял старую автосигналку и реле центрального замка подсоединил параллельно кнопке открытия двери. Теперь открываю дверь не вставая с места — брелком. С улицы, конечно, радиосигнал с брелка не достает, но если поднести его близко к «таблеткоприемнику» — сигнал проходит. Видимо радиосигнал идет по кабелю. Питается сигналка от резервного источника питания на 12 вольт.
                                                            0
                                                            с передачей голоса и видео может видел кто поделки
                                                            на Orange Pi Zero думаю сделать но опыта маловато
                                                            по логике понимаю что нужно делать через SIP
                                                            но может у кого есть другие иди
                                                              0
                                                              Разработана вторая версия устройства, про которую я рассказываю тут Доработка домофона протоколом MQTT для управления с телефона (версия 2.0)
                                                                0
                                                                Я на Eltis-е делал так

                                                                Конденсатор 2200u + резистор 2k2 + тумблер, все 3 детали параллельно и в разрыв линии.
                                                                Деталей немного, всё встроил в трубку + тублер сбоку трубки для переключения в обычный режим. Когда срабатывает автооткрытие, то слышен утихающий звук вызова на трубке, т.е. можно понять что кто-то только что вошел.

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое