Умный дом. Мозги

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

    image

    Но обо всем по порядку. Изначально архитектура моего умного дома включала следующие компоненты:
    • промышленный контроллер ОВЕН ПЛК110-32 (главный мозг)
    • модуль аналогового вывода МУ110-6У (используется для управления диммерами)
    • модуль ввода аналоговых сигналов МВ110-8А (добавился позже для снятия показаний с датчиков).

    Все это вместе связано по RS-485 и проколу Modbus RTU. Основной контроллер подключен к Ethernet для связи с внешним миром.

    Для управления с телефона изначально я использовал Iridium Mobile, которые мне любезно предоставили производители (да-да, использование служебного положения в личных целях!). В последствии я его заменил на веб-сервис на базе Node JS. Также позже добавилось беспроводная часть на базе z-wave. Про все это я планирую написать отдельно, а пока возвращаемся к нашим овцам.

    Программирование контроллера осуществляется в среде CoDeSys, которая поддерживает 5 специализированных языков, из которых я освоил два — FBD (Язык функциональных блоков) и ST (Pascal-подобный язык). Собственно, изначально я думал довольствоваться только FBD, так как программирование на этом языке выглядит как составления диаграмм в редакторе.

    image

    Так вот выглядит в FBD подпрограмма (или правильнее функциональный блок) обработки выключателя в коридоре. Кроме включения и выключения света в коридоре этот выключатель используется для выключения света во всей квартире. Одиночное нажатие переключает свет в коридоре, а длительное нажатие (1 сек) активирует команду погасить весь свет.

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

    Для сравнения вот так вот выгляди кусок функционального блока диммера на языке ST (согласитесь, совсем другое дело!):

    image

    Раз уж речь зашла про диммер, то про него нужно рассказать особо. Как оказалось, совсем не просто найти подходящий диммер (железо) для умного дома. Всевозможные беспородные варианты я не рассматривал, так как вся базовая функциональность должна быть реализована на проводных технологиях — об этом я уже писал ранее. Ценник на диммеры, которые мне попадались меня не радовал. Плюс нужно было обеспечить совместимость с моим умным домом. Вначале я остановился на INSYTE LDD-400D, с управлением по ModBus, что позволяло подключись его напрямую к контроллеру без дополнительных модулей, но знакомые, которые его использовали в своих проектах, как-то не очень хорошо о нем отзывались, и в результате я решил вопрос с диммером так — поставил твердотельное реле.

    image

    Реле управляется (через модуль аналогового вывода) сигналом 0-10В и выдает на выходе 10-220В соответсвенно. Обратите внимание на то, что минимальное напряжение на выходе у твердотельного реле не 0, а 10В — при таком напряжении спираль у лампа накаливания заметно светится. Эта проблема решается так: в цепи кроме твердотельного реле стоит и обычное промежуточное (механическое) реле, а на программном уровне, когда нужно полностью погасить свет контроллер выключает промежуточное реле и разрывает цепь.

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

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

    С этим вариантом я жил несколько месяцев, но потом пришел к выводу, что он все-таки не очень-то удобен и чаще всего используются только 3 режима — свет включен, свет выключен или свет включен на минимальную ярость. Поэтому я реализовал более простой дискретный вариант (который остается до сих пор):
    • короткое нажатие — включение/выключение света (включается на полную яркость)
    • длинное нажатие — включает свет на 25% яркости и переводит в режим диммера;
    • каждое следующее нажатие переводит на следующую ступень +25%. Выход из режима диммера — по таймауту.

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

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

    В системе CoDeSys есть возможность сделать визуализацию и панель управления. ПЛК110 не поддерживает веб-интерфейс, поэтому визуализация работает только в самом комплексе CoDeSys.

    image

    Вот так вот выглядит техническая панель управления моим умным домом. Техническая, потому что в повседневной жизни ей никто не пользуется. За одним маленьким исключением — эта панель служит удаленным интерфейсом для управления умным домом. Если мне надо что-то сделать удаленно, то я захожу через TeamViewer на домашний сервер и использую эту панель. Такая необходимость возникает очень редко, поэтому настраивать удаленный доступ для веб-сервиса я даже не стал.

    В заключение плюсы и минусы.

    Плюсы:
    • Надежность — решение зарекомендовало себя очень хорошо (все-таки оно построено на компонентной базе, которая используется для промышленной автоматизации). За все время не было ни одного (!!!) сбоя. Даже после скачков напряжения, система запускалась без каких-либо проблем.
    • Более низкая цена по сравнению с системами домашней автоматизации (уверен, можно найти вариант решения еще более дешевый, но меня вполне устраивал текущий бюджет и дальнейшее снижение цены для меня было не принципиальным).

    Два самых больших недостатка на мой взгляд:
    • программировать нужно все самостоятельно и решение оказывается неотрывно от создателя
    • сопряжение с внешним миром по протоколу Modbus TCP — в результате архитектура решения стала достаточно избыточной и по факту сейчас у меня в системе умный дом задействовано три контроллера (но об этом в следующий раз)

    Как я уже говорил в первой статьей, сейчас бы я более внимательно посмотрел в сторону альтернатив, но, если вдруг кому-то захочется изучить это решение, то исходный код, сделанный в среде CoDeSys, я выложил на github. (только будьте, пожалуйста, снисходительны к качеству кода.

    В следующих частях — управление с телефона и беспроводные решения.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 26
    • +1
      А КЛЛ или светодиодные лампы работают через реле? Лампы накаливания, по современным меркам, как то не очень здорово смотрятся…
      • 0
        Я пробовал разные светодиодные лампы (не ленты, а именно лампы) — они все диммируются достаточно плохо. Тут дело не в реле, а именно в самих лампах — если вы попробуете их диммировать любым диммером, то будет тоже самое. С лентами проще (кстати, для светодиодных лент много готовых диммеров с управлением 0-10В и стоят они недорого), но для того чтобы использовать ленты, нужно изначально было проектировать их, а это был не наш случай. В общем, год назад я хороших диммируемых светодиодных ламп не нашел, поэтому у меня везде стоят энергосберегающие лампы, кроме тех мест, где нужно диммирование — там стоят обычные лампы накаливания.
        • 0
          Посмотрите публикации от lamptest — он подробно пишет, какие лампы диммируются.
          • 0
            Бывают светодиодные светильники с диммируемыми блоками питания, правда, дипазон яркости всё равно сильно меньше чем у обычных ламп. Брал один такой на тест — через пол года бп умер. При этом из 25 обычных бп ни один такого себе не позволил. Понятно что для статистики этого мало — возможно, просто «повезло».
            • 0
              Если на лампе не написано, что она диммируемая значит на 99% она не диммируемая. КЛЛ тоже кстати бывают диммируемые. А ленты для основного освещения не очень подходят, в основном для подсветки.
              • 0
                Конечно, я пробовал только диммируемые лампы. Если вы знаете, какие светодиодные лампы хорошо диммируются, то дайте знать. Я с удовольствием заменю лампы накаливания ))
                • +1
                  Икеевские многие диммируются. Выше уже упоминали lamtest — посмотрите его обзоры. А на сайте есть удобный поиск по параметрам.
                  • 0
                    Спасибо. обязательно почитаю.
          • +2
            Задумка впечатляет. Это уже не дом, это скорее небольшой заводик :). А если серьезно, то хотелось бы узнать мнение автора о том как эта система будет развиваться и самое главное ремонтироваться. Например лет так через 5-10-20. Например, автор системы улелел на Марс, а его бабушке/жене/детям понадобилось разобраться с поломавшейся розеткой. Сколько времени понадобиться человеку со стороны разобраться с системой и ее починить?
            • 0
              Абсолютно правильный комментарий. Это самая большая проблема моего умного дома — он совершенно не отделим от меня. У меня есть бэкапный вариант — на базе программируемого реле. Соответсвенно, если ломается контроллер, то можно переключиться на реле (но потеряется большая часть функционала). Все что сделано беспроводными технологиями — везде дублируется выключателями, поэтому тоже свет включать/выключать будет можно.

              Поддержка и развитие системы — это одна из вещей, которые необходимо продумывать с самого начала.
              • 0
                В этом плане несколько проще с беспроводными вариантами которые внедряются в уже существующую разводку — всегда можно всё выдрать и вернуть как было… но простор для творчества, конечно, не тот.
                • 0
                  Перекоммутировать как раз никакой проблемы не составляет, так как все провода сведены в единый щиток. Нужно только поменять кнопки без фиксации на кнопки с фиксацией.
                  • 0
                    Ну как сказать — не составляет… боюсь не каждый среднестатистический электрик ЖЭКа осилит ваш щиток с ходу. Речь то о человеке со стороны, да с учётом вашей недоступности.
                    Вообще, по опыту работы с «неподготовленными» электриками — любая автоматика вгоняет их в конкретный ступор, из которого они не всегда выходят без потерь.
                • +1
                  Думаю, нужно просто подробно документировать все блоки, кабели, реле и пр., и писать подробную документацию что где чего делает. Конечно, в идеале сделать алгоритм поиска решения при неисправностях, как это делают в service manual.
                  • 0
                    Абсолютно согласен — может и дойдут руки до этого постепенно. К сожалению, времени на умный дом не очень-то хватает…
                    • 0
                      Соберитесь с силами и переберите щиток: промаркируйте все провода, соберите их в жгуты многоразовыми завязками, задокументируйте и тд. Сделайте его красивым, а не только работающим.
                      Могу в ЛС подсказать сайт, где есть много примеров красивых щитов с домашней автоматикой.
                      • 0
                        Я, когда приступал, я смотрел и изучал эту тему отдельно. Изначально было сильно красивее, но в процессе он много раз перебирался. Провода у меня промаркированы (большей частью). Надо еще клеммы промаркировать и сделать распечатку… Но вот возможности пересобрать — это, к сожалению, вряд ли.
                        Генеральную уборку сделаю.

                        Спасибо за замечание )
                        • 0
                          подскажите
                    • +1
                      Есть такая у «буржуев» терминология — Wife acceptance factor — фактор «женопригодности». Идеальная конструкция — это с которой справляется жена — без технического образования, долгих инструкций и сложной логики. Изобретатели регулярно тренируются по WAF — при делании умно-домашних «марсоходов»
                      • 0
                        К сожалению, DIY-решения обычно проходят WAF-фактор только в плане использования. Под воздействием этого фактора я добавил физический выключатель к подсветке шкафа (который мне казался совсем не нужным))))
                  • 0
                    >>программировать нужно все самостоятельно

                    Универсальных коробочных решений, к сожалению, не бывает :)
                    В каждом отдельном случае — есть своя специфика, приходится это учитывать.

                    >>сейчас бы я более внимательно посмотрел в сторону альтернатив

                    Если для щитка, можно глянуть бескорпусное решение http://irbis.cc
                    Но от программирования опять никуда не уйти :)
                    • 0
                      Ну это уже недешево выходит — более 60 тыс. руб по текущему прайсу. уже трудно объяснимо с другими альтернативами — той же Raspberry Pi 2 или ардуинками, оснащенными соответствующей измерительной и управляемой периферией

                      Я ничего не имею против к изделиям уважаемой компании Owen. Но если выходишь с рынка B2B на B2C — необходимо правильно оценивать платежный спрос и клиентские ценности. Они могут оказаться совсем другими. Примерно такую ошибку сделала и Intel — когда пыталась уйти в сегмент ARM процессоров — если в десктопных изделия платить сотни долларов за CPU было привычно — то на рынке IoT и др. — за эти деньги можно купить килограмм хороших изделий от Qualcomm, MKT и пр. Поэтому если в подготовке статьи участвовали маркетологи Owen — ставлю им жирную двойку за незнание целевого рынка ;-)
                      • 0
                        Никакого отношения к компании ОВЕН я не имею и по жизни я занимаюсь решениями Digital Signage. Умный дом для меня — хобби. Откуда появился ОВЕН я рассказал в предыдущих статьях. Я планирую сделать отдельную статью по затратам. Дальше все могут для себя сравнивать. Изначально, я сравнивал с решениями Crestron и KNX, которые выходят ещё дороже.

                        О недостатках своего решения (которые я вижу) честно сам рассказываю и если вы прочтёте предыдущий пост, то я там сказал, что сейчас бы я рассмотрел другие решения. Но здесь нужно изучать все в комплексе.
                      • 0
                        О, весьма интересно!
                        А вы контроллер PIXEL не рассматривали в качестве управляющего мозга? Хотя, насколько помню, он программируется только на FBD, иногда ооочень не хватает структурированного текста.
                        • 0
                          Как я описывал в предыдущей статье, выбор решения — это игра случая. К сожалению, у меня не было времени изучить различные решения. ))
                        • 0
                          Как я описывал в предыдущей статье, выбор решения — это игра случая. К сожалению, у меня не было времени изучить различные решения. ))

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