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

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. (только будьте, пожалуйста, снисходительны к качеству кода.

В следующих частях — управление с телефона и беспроводные решения.

Комментарии (25)


  1. xDimus
    13.01.2016 09:49
    +1

    А КЛЛ или светодиодные лампы работают через реле? Лампы накаливания, по современным меркам, как то не очень здорово смотрятся…


    1. apivovarov
      13.01.2016 10:36

      Я пробовал разные светодиодные лампы (не ленты, а именно лампы) — они все диммируются достаточно плохо. Тут дело не в реле, а именно в самих лампах — если вы попробуете их диммировать любым диммером, то будет тоже самое. С лентами проще (кстати, для светодиодных лент много готовых диммеров с управлением 0-10В и стоят они недорого), но для того чтобы использовать ленты, нужно изначально было проектировать их, а это был не наш случай. В общем, год назад я хороших диммируемых светодиодных ламп не нашел, поэтому у меня везде стоят энергосберегающие лампы, кроме тех мест, где нужно диммирование — там стоят обычные лампы накаливания.


      1. alexpp
        13.01.2016 10:57

        Посмотрите публикации от lamptest — он подробно пишет, какие лампы диммируются.


      1. igorsd
        13.01.2016 11:05

        Бывают светодиодные светильники с диммируемыми блоками питания, правда, дипазон яркости всё равно сильно меньше чем у обычных ламп. Брал один такой на тест — через пол года бп умер. При этом из 25 обычных бп ни один такого себе не позволил. Понятно что для статистики этого мало — возможно, просто «повезло».


      1. xDimus
        13.01.2016 16:01

        Если на лампе не написано, что она диммируемая значит на 99% она не диммируемая. КЛЛ тоже кстати бывают диммируемые. А ленты для основного освещения не очень подходят, в основном для подсветки.


        1. apivovarov
          13.01.2016 16:05

          Конечно, я пробовал только диммируемые лампы. Если вы знаете, какие светодиодные лампы хорошо диммируются, то дайте знать. Я с удовольствием заменю лампы накаливания ))


          1. xDimus
            13.01.2016 16:15
            +1

            Икеевские многие диммируются. Выше уже упоминали lamtest — посмотрите его обзоры. А на сайте есть удобный поиск по параметрам.


            1. apivovarov
              13.01.2016 16:20

              Спасибо. обязательно почитаю.


  1. Legich5
    13.01.2016 09:57
    +2

    Задумка впечатляет. Это уже не дом, это скорее небольшой заводик :). А если серьезно, то хотелось бы узнать мнение автора о том как эта система будет развиваться и самое главное ремонтироваться. Например лет так через 5-10-20. Например, автор системы улелел на Марс, а его бабушке/жене/детям понадобилось разобраться с поломавшейся розеткой. Сколько времени понадобиться человеку со стороны разобраться с системой и ее починить?


    1. apivovarov
      13.01.2016 10:42

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

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


      1. igorsd
        13.01.2016 11:01

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


        1. apivovarov
          13.01.2016 11:42

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


          1. igorsd
            13.01.2016 12:59

            Ну как сказать — не составляет… боюсь не каждый среднестатистический электрик ЖЭКа осилит ваш щиток с ходу. Речь то о человеке со стороны, да с учётом вашей недоступности.
            Вообще, по опыту работы с «неподготовленными» электриками — любая автоматика вгоняет их в конкретный ступор, из которого они не всегда выходят без потерь.


      1. serafims
        13.01.2016 11:20
        +1

        Думаю, нужно просто подробно документировать все блоки, кабели, реле и пр., и писать подробную документацию что где чего делает. Конечно, в идеале сделать алгоритм поиска решения при неисправностях, как это делают в service manual.


        1. apivovarov
          13.01.2016 11:44

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


          1. legioner
            14.01.2016 18:13

            Соберитесь с силами и переберите щиток: промаркируйте все провода, соберите их в жгуты многоразовыми завязками, задокументируйте и тд. Сделайте его красивым, а не только работающим.
            Могу в ЛС подсказать сайт, где есть много примеров красивых щитов с домашней автоматикой.


            1. apivovarov
              14.01.2016 18:18

              Я, когда приступал, я смотрел и изучал эту тему отдельно. Изначально было сильно красивее, но в процессе он много раз перебирался. Провода у меня промаркированы (большей частью). Надо еще клеммы промаркировать и сделать распечатку… Но вот возможности пересобрать — это, к сожалению, вряд ли.
              Генеральную уборку сделаю.

              Спасибо за замечание )


      1. tri_botinka
        13.01.2016 13:22
        +1

        Есть такая у «буржуев» терминология — Wife acceptance factor — фактор «женопригодности». Идеальная конструкция — это с которой справляется жена — без технического образования, долгих инструкций и сложной логики. Изобретатели регулярно тренируются по WAF — при делании умно-домашних «марсоходов»


        1. apivovarov
          13.01.2016 14:10

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


  1. Prometheus
    13.01.2016 13:17

    >>программировать нужно все самостоятельно

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

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

    Если для щитка, можно глянуть бескорпусное решение http://irbis.cc
    Но от программирования опять никуда не уйти :)


  1. tri_botinka
    13.01.2016 13:17

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

    Я ничего не имею против к изделиям уважаемой компании Owen. Но если выходишь с рынка B2B на B2C — необходимо правильно оценивать платежный спрос и клиентские ценности. Они могут оказаться совсем другими. Примерно такую ошибку сделала и Intel — когда пыталась уйти в сегмент ARM процессоров — если в десктопных изделия платить сотни долларов за CPU было привычно — то на рынке IoT и др. — за эти деньги можно купить килограмм хороших изделий от Qualcomm, MKT и пр. Поэтому если в подготовке статьи участвовали маркетологи Owen — ставлю им жирную двойку за незнание целевого рынка ;-)


    1. apivovarov
      13.01.2016 13:40

      Никакого отношения к компании ОВЕН я не имею и по жизни я занимаюсь решениями Digital Signage. Умный дом для меня — хобби. Откуда появился ОВЕН я рассказал в предыдущих статьях. Я планирую сделать отдельную статью по затратам. Дальше все могут для себя сравнивать. Изначально, я сравнивал с решениями Crestron и KNX, которые выходят ещё дороже.

      О недостатках своего решения (которые я вижу) честно сам рассказываю и если вы прочтёте предыдущий пост, то я там сказал, что сейчас бы я рассмотрел другие решения. Но здесь нужно изучать все в комплексе.


  1. morgreek
    13.01.2016 13:26

    О, весьма интересно!
    А вы контроллер PIXEL не рассматривали в качестве управляющего мозга? Хотя, насколько помню, он программируется только на FBD, иногда ооочень не хватает структурированного текста.


    1. apivovarov
      13.01.2016 15:31

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


  1. apivovarov
    13.01.2016 15:31

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