Очередной умный дом. Часть пятая — Большая Красная Кнопка

    image
    Практически в каждом обсуждении очередной реализации домашней автоматизациии возникает такой вопрос – «Хочу одну кнопку, чтобы уходя из дома ее нажал, и все выключилось\перевелось в режим энергосбережения».
    Что ж, как говорил один известный персонаж, вызов принят.


    Как я уже рассказывал, у меня используется RS485 и MODBUS. Кнопку можно сделать как мастером, так и слейвом. И у каждого решения есть свои недостатки. Если кнопка будет выступать мастером, то в приборной сети получается два мастер-устройства, если она будет слейвом, то задержка между нажатием и началом выполнения команд будет порядка минуты (частота опроса контроллеров серверной частью). Оба решения меня не устраивали, поэтому было найдено третье – кнопка будет работать через серверную часть. Этот вариант также не лишен недостатков, например, при отсутствии связи с сервером она просто не будет работать, но так как эта Большая Красная Кнопка выполняет вспомогательную функцию (свет можно выключить и обычными выключателями), то с этим решено было мириться. Также решено вместо одной кнопки сделать 4, вернее от одной до четырех. Если можно выключить все – то почему бы не иметь возможность все включить?

    Итак, аппаратная часть


    Берем кнопочный пост, прозрачные кнопки и выкидываем все лишнее.

    image

    Из прозрачных кнопок убираем родные переключатели и вклеиваем другие. Зачем этот колхоз? Что бы была возможность добавить светодиоды подсветки (изначально кнопки без подсветки, хотя и имеют прозрачную нажимную часть) и по еще одной простой причине – они по высоте не влезали в этот корпус.

    image

    Использован Wi-Fi модуль ESP8266-03 и PIC12F1840. Так как одновременные нажатия нескольких кнопок не планируются – то они подключены через резисторный делитель к входу АЦП, что позволило обойтись одним выводом МК. Светодиоды подключены по два к одному выходу – при высоком уровне горит один, при низком – второй, при переключении вывода на вход – выключены оба. Диодный мост, стабилизатор и перемычки – для разных вариантов питания, переменка, постоянка или аккумуляторы.

    Разводим, травим, собираем. Не забываем добавить перемычки для удержания МК в сбросе и переводе ESP8266 в режим прошивки, так как выпаивать его неудобно. 11-контактный разъем – питание, кнопки и светодиоды, пятиконтактный – ICSP и по совместительству UART для прошивки и просмотра логов обмена.

    image

    Как это работает


    При включении устройство регистрируется в домашней Wi-Fi сети, при нажатии кнопки – на сервер отправляется простейший GET запрос, при обработке которого серверный скрипт выбирает из базы список адресов контроллеров и записывает в регистры нужные значения. Так как кнопка также является полноценным контроллером со своим MODBUS адресом, то первой командой в ней обнуляется флаг нажатия кнопки, а последней – устанавливается флаг окончания выполнения последовательности команд, что индицируется светодиодами в кнопках. Нажали кнопку – загорелся светодиод, пришла первая команда из серии – замигал, пришла последняя – потух.

    image
    Консоль настроек.

    Самих устройств в сети может быть несколько, количество кнопок в каждом устройстве от одной до четырех, количество команд настраивается и, в принципе, ничем не ограничено. Также в веб-интерфейсе есть виджет для групповых операций с таким же функционалом.

    Пару слов о самих ESP8266. для макетирования я использовал ESP-01, в окончательном варианте – ESP-03. Прошил в них последнюю прошивку, 01 заработал нормально, 03 работал при первом включении, при последующих ругался на убитую прошивку. Как оказалось, на них было установлено разное количество памяти, на 01 – 8Мбит, на 03 – 4Мбита. Но никаких предупреждений софт для прошивки не выдавал, все шилось и почти работало. Вылечилось более старой прошивкой с одного известного сайта. Также, крайне желательно при старте делать сброс ESP и ПОСЛЕ сброса слать команду на отключение от точки доступа, а уже потом делать нормальную инициализацию. Иногда модуль при включении считал себя уже подключенным к точке доступа, и даже имел IP 104.111.109.* но естественно доступа к сети у него не было. Также при перенастройке UART-а на скорость отличную от дефолтной 115200 – периодически он эти настройки забывал.

    Ссылки на предыдущие части:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 27
    • +1
      Наладил бы кто серию таких устройств с четырьмя кнопками с питанием и задешево.
      может и пошла бы домашняя автоматизация в массы
      • +1
        Автоматизация пойдет в массы, когда каждый разработчик свое устройство будет проектировать из расчета, что оно будет дружить с другими устройствами — от других изобретателей или с устройствами, собранными на заводах. Дружба — значит общение по единым протоколам, по тому же ZigBee. Как только устройства начнут проектироваться из расчета, что будет обязательно заимплеменчен какой-то подобный протокол — вот тогда и произойдет взрывной рост популярности устройств для умного дома.
      • +4
        Дело не в дружбе, не в общении и не в несовпадении протоколов у разных производителей Wi-Fi лампочек и розеток. Дело в том, что автоматизация — это не выкрутить обычную лампочку и вкрутить RGB-лампу с вайфаем. Или заменить обычный выключатель на беспроводной сенсорный, со встроенным датчиком температуры, влажности и датчиком движения.

        Автоматизация по нормальному — это проектирование и создание всей системы от и до. И начинаться это должно на этапе голых стен. И тогда уже будет не важно дружит ли лампочка с розеткой, и не воюют ли два медиаплеера из-за разных музыкальных вкусов.

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

        У меня это было — долго. И относительно дорого. Даже с учетом собственной разработки каждое устройство проходило минимум две-три итерации, проходило кучу доработок уже во время эксплуатации. До сих пор лежит ящик примерно 400х200х200 с горкой забитый полуразобранными платами первых версий всех этих вот устройств.
        • 0
          Прогресс не стоит на месте.
          • +3
            Конечно он на месте не стоит. То лампочки, блокирующие конкурентов, то термопот с блютузом, у которого радиус действия десять метров.
            Движется прогресс, еще как движется!

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

            Так что да, прогресс движется, но как-то не туда.
          • 0
            Есть же MQTT, чего бы его не совать на пару с ESP8266? Какие-то негативные побочные эффекты есть у этой связки? Да, может не в каждую розетку по своей есп-шке, но на группу розеток (2-6) и на каждую люстру, плюс 3-4 конечных «умных» устройства — это не должно вызывать существенных трудностей.
            • 0
              MQTT — упрощённый сетевой протокол, работающий поверх TCP/IP

              У меня межконтроллерная сеть — RS-485 и поверх него MODBUS, а переделывать все практически с нуля — неохота. Тем более все работает ))

              Можно использовать ESP-шку c обвязкой для ухода от RS-485, сейчас ради спортивного интереса этим и занимаюсь, но менять полностью протокол — нет, там переписывать все с нуля и прошивки, и серверные скрипты, и клиентскую часть.
              • 0
                Поверьте, оно того стоит! В mqtt отключение света можно реализовать как то так: /home/*/light/off
                • 0
                  ну а у меня — так :06FF00800000XX
                  Из-за этого менять все железо и серверный софт? Спасибо, но нет.

                  А через пару лет выйдет Новый, более лучший, более быстрый и более модный Super-MQTT, обновите ваше оборудование всего за 99,99$ за набор из трех ламп и годовую подписку на более лучшее приложение для вашего смартфона!
                  • 0
                    У вашего протокола есть сервис «гарантированная доставка один раз»
                    • 0
                      MODBUS — это не мой протокол.
                      У него есть гарантированный ответ на любую поступившую команду, а что уже с этим ответом делать дальше — это уже решать разработчику.
                      • 0
                        Вы правда думаете, что я не слышал MODBUS? )) Попробуйте mqtt в связке с http://nodered.org/
                        • 0
                          Хорошо, попробую, но только после того, как вы мне покажете реализацию MQTT over RS-485.
                    • 0
                      У вас так:
                      Если кнопка будет выступать мастером, то в приборной сети получается два мастер-устройства, если она будет слейвом, то задержка между нажатием и началом выполнения команд будет порядка минуты


                      MQTT из-за минималистичности даже по EDGE отрабатывает сигнал за 0.3-0.5 сек с брокером в Америке. А если брокер будет локальный и работа по локальной сети без выхода в интернет — то задержку на глаз не различить. Это 65мкс пинга и пересылка 10-50 байт.
                      • 0
                        Вы к сожалению тоже невнимательно читали предыдущие части. Раз в минуту опрашиваются контроллеры в автоматическом режиме для сбора статистики. И поэтому, если делать кнопку слейвом на общей шине RS-485, которая объединяет контроллеры, то она, как слейв — будет молчать, пока ее не спросят. А спрашивают примерно раз в минуту.

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

                        Поэтому она срабатывает не через минуту, а сразу. Как и веб-интерфейс.
                  • 0
                    Мой вопрос скорее не к вам, а к Мировому Разуму. Если сейчас начать проектирование, не легче ли его сделать сразу на связке esp-шки и MQTT?
                    • 0
                      Если Мировой Разум гарантирует вам, что китайцы на снимут esp-шки с производства через пару лет — делайте на них.

                      Я бы закладывался на возможность выбора между каким-либо проводным и беспроводным вариантом. Или вывел наружу голый UART и потом какой либо платой расширения уже выбирал что надо. Надо провода — подключили переходник UART-Ethetnet, не хотим проводов — подключили ту же ESP

                      А уж что вы будете гонять поверх IP — то уже ваше дело, хоть голосом говорите «Сири, включи мне свет в коридоре»
                      • 0
                        Так затем нам и нужен MQTT, что даже если снимут, то при помощи Распбери за 5 баксов все то же самое реализуется на коленке по тому же самому протоколу, и единственное, что нужно будет заменить — это трубу между вайфаем и релюшкой которая включает розетку. А будет это SoC, есп-шка или какая-нибудь новая умная ATMega, это уже все равно, все остальное оборудование будет готово работать со конечным устройством сразу.
              • 0
                Простите, но это какой-то лютый велосипед из костылей.
                Как Вам уже не раз намекнули, с помощью MQTT всё делается в разы проще и на порядок красивее.
                • 0
                  Про то что это костыли — я сразу и сказал.

                  Про MQTT — давайте и вы мне расскажете как мне реализовать MQQT over RS-485 без костылей, велосипедов и полной переделки работающей системы.
                  • 0
                    У вас обычный Wi-Fi. И обмен данными по ethernet — это легко и просто.
                    Я не сталкивался с RS-485, но думаю, что очень просто. Достаточно в Вашу и без того непростую систему добавить шлюз mqtt<->rs-485, который, как я думаю, легко сделать на базе Raspberry Pi, на которую, в свою очередь, повесить всё (mqtt-брокер, оупенхаб, файлопомойку, фтп, торрентокачалку, dlna-сервер, sip-атс (отсыл к предыдущей статье) и всё остальное, что душе угодно).
                    А в рамках mqtt всё примитивно: http://geektimes.ru/post/255404/
                    • 0
                      У вас обычный Wi-Fi.

                      Это только в этом устройстве.

                      Достаточно в Вашу и без того непростую систему добавить шлюз mqtt<->rs-485

                      И усложнить ее еще более.

                      mqtt-брокер, оупенхаб, sip-атс

                      Если мне это не нужно — зачем мне это все добавлять?

                      файлопомойку, фтп, торрентокачалку, dlna-сервер

                      А с этим замечательно справляется медиаплеер.

                      А в рамках mqtt всё примитивно: geektimes.ru/post/255404

                      Примитивно, но что мне это даст дополнительно? Какие дополнительные выгоды и преимущества?
                      • 0
                        Ну, возможно Вам не придётся проектировать и паять собственные платы =)
                        У меня просто стоит такая же кнопка на выходе из квартиры, которая выключает весь свет, вентиляцию, телек (smarttv по ip), меняет температуру тёплых полов и т.п. И как-то у меня это всё гораздо проще сделано =)
                        • 0
                          Вы наверное невнимательно читали первую часть. А так же вторую и третью. Ответы на «не придётся проектировать и паять» — там.
                          • 0
                            Разводим, травим, собираем.

                            Вы правы. Я просто не считаю необходимым тратить время на чтение статьи про обычную кнопку для умного дома. Комментарии к таким статьям всегда значительно информативнее самой статьи.
                            • 0
                              Но при этом считаете необходимым тратить чужое время на ответы, которых бы не возникло, если обратить внимание что эта кнопка — часть системы, которая описана в нескольких статьях, ссылки на которые приведены в самой статье.
                              • 0
                                любая кнопка — часть какой-то системы =)
                                тяжело себе представить кнопку, которая самостоятельно выполняла бы какую-то функцию =)

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

                Интересные публикации