Но обо всем по порядку. Изначально архитектура моего умного дома включала следующие компоненты:
- промышленный контроллер ОВЕН ПЛК110-32 (главный мозг)
- модуль аналогового вывода МУ110-6У (используется для управления диммерами)
- модуль ввода аналоговых сигналов МВ110-8А (добавился позже для снятия показаний с датчиков).
Все это вместе связано по RS-485 и проколу Modbus RTU. Основной контроллер подключен к Ethernet для связи с внешним миром.
Для управления с телефона изначально я использовал Iridium Mobile, которые мне любезно предоставили производители (да-да, использование служебного положения в личных целях!). В последствии я его заменил на веб-сервис на базе Node JS. Также позже добавилось беспроводная часть на базе z-wave. Про все это я планирую написать отдельно, а пока возвращаемся к нашим овцам.
Программирование контроллера осуществляется в среде CoDeSys, которая поддерживает 5 специализированных языков, из которых я освоил два — FBD (Язык функциональных блоков) и ST (Pascal-подобный язык). Собственно, изначально я думал довольствоваться только FBD, так как программирование на этом языке выглядит как составления диаграмм в редакторе.
Так вот выглядит в FBD подпрограмма (или правильнее функциональный блок) обработки выключателя в коридоре. Кроме включения и выключения света в коридоре этот выключатель используется для выключения света во всей квартире. Одиночное нажатие переключает свет в коридоре, а длительное нажатие (1 сек) активирует команду погасить весь свет.
По мере добавления новых и новых функций и возможностей, я пришел к выводу, что язык функциональных диаграмм вовсе не такой уж удобный — получается громоздкий код, программирование идет медленно, а отлаживать очень неудобно. Поэтому постепенно я переключился на язык ST и к языку FBD больше не обращаюсь.
Для сравнения вот так вот выгляди кусок функционального блока диммера на языке ST (согласитесь, совсем другое дело!):
Раз уж речь зашла про диммер, то про него нужно рассказать особо. Как оказалось, совсем не просто найти подходящий диммер (железо) для умного дома. Всевозможные беспородные варианты я не рассматривал, так как вся базовая функциональность должна быть реализована на проводных технологиях — об этом я уже писал ранее. Ценник на диммеры, которые мне попадались меня не радовал. Плюс нужно было обеспечить совместимость с моим умным домом. Вначале я остановился на INSYTE LDD-400D, с управлением по ModBus, что позволяло подключись его напрямую к контроллеру без дополнительных модулей, но знакомые, которые его использовали в своих проектах, как-то не очень хорошо о нем отзывались, и в результате я решил вопрос с диммером так — поставил твердотельное реле.
Реле управляется (через модуль аналогового вывода) сигналом 0-10В и выдает на выходе 10-220В соответсвенно. Обратите внимание на то, что минимальное напряжение на выходе у твердотельного реле не 0, а 10В — при таком напряжении спираль у лампа накаливания заметно светится. Эта проблема решается так: в цепи кроме твердотельного реле стоит и обычное промежуточное (механическое) реле, а на программном уровне, когда нужно полностью погасить свет контроллер выключает промежуточное реле и разрывает цепь.
Вторая сложность с организацией диммирования света — это как сделать удобный интерфейс с учетом того, что в качестве управления у меня используется обычный выключатель без фиксации.
Первый вариант интерфейса выглядел примерно так (сейчас уже не помню точно):
- короткое нажатие — включение или выключение света (включался свет на последнем уровне яркости)
- долгое нажатие при включенном свете — плавное уменьшение яркости, а потом проходя через ноль увеличение
- долгое нажатие при выключенном свете — плавное увеличение от нуля
- двойное нажатие включение света на полную яркость.
С этим вариантом я жил несколько месяцев, но потом пришел к выводу, что он все-таки не очень-то удобен и чаще всего используются только 3 режима — свет включен, свет выключен или свет включен на минимальную ярость. Поэтому я реализовал более простой дискретный вариант (который остается до сих пор):
- короткое нажатие — включение/выключение света (включается на полную яркость)
- длинное нажатие — включает свет на 25% яркости и переводит в режим диммера;
- каждое следующее нажатие переводит на следующую ступень +25%. Выход из режима диммера — по таймауту.
Как я уже говорил в предыдущем посте, управление одиночными кнопками без фиксации — все-таки не лучшее решение. Кроме примера с диммером, который я только что привел, я еще реализовал сложный сценарий включения света в гостиной. Мы предпочитаем не использовать верхний свет в гостиной и сразу включаем настольную лампу и подсветку в шкафу. Я автоматизировал этот процесс и сейчас управление светом в гостиной выглядит так:
- одно нажатие (если лампа выключена) — включает лампа и подсветку
- одно нажатие (если лампа включена) — включает или выключает верхний свет
- одно нажатие сразу за вторым (когда выключился верхний свет) — гасит настольную лампу
- длинное нажатие — выключает весь свет в комнате
Первые два пункта этого сценария — очень подходят с точки зрения модели поведения. Последний пункт сделан по аналогии с коридором. Третий пункт весьма спорен и не используется. Проблема заключается в том, что семья с ворчанием, но придела этот сценарий, но вот ни один гость со светом не справится. Поэтому для сценариев нужны либо сенсорные панели, либо многофункциональные кнопки.
В системе CoDeSys есть возможность сделать визуализацию и панель управления. ПЛК110 не поддерживает веб-интерфейс, поэтому визуализация работает только в самом комплексе CoDeSys.
Вот так вот выглядит техническая панель управления моим умным домом. Техническая, потому что в повседневной жизни ей никто не пользуется. За одним маленьким исключением — эта панель служит удаленным интерфейсом для управления умным домом. Если мне надо что-то сделать удаленно, то я захожу через TeamViewer на домашний сервер и использую эту панель. Такая необходимость возникает очень редко, поэтому настраивать удаленный доступ для веб-сервиса я даже не стал.
В заключение плюсы и минусы.
Плюсы:
- Надежность — решение зарекомендовало себя очень хорошо (все-таки оно построено на компонентной базе, которая используется для промышленной автоматизации). За все время не было ни одного (!!!) сбоя. Даже после скачков напряжения, система запускалась без каких-либо проблем.
- Более низкая цена по сравнению с системами домашней автоматизации (уверен, можно найти вариант решения еще более дешевый, но меня вполне устраивал текущий бюджет и дальнейшее снижение цены для меня было не принципиальным).
Два самых больших недостатка на мой взгляд:
- программировать нужно все самостоятельно и решение оказывается неотрывно от создателя
- сопряжение с внешним миром по протоколу Modbus TCP — в результате архитектура решения стала достаточно избыточной и по факту сейчас у меня в системе умный дом задействовано три контроллера (но об этом в следующий раз)
Как я уже говорил в первой статьей, сейчас бы я более внимательно посмотрел в сторону альтернатив, но, если вдруг кому-то захочется изучить это решение, то исходный код, сделанный в среде CoDeSys, я выложил на github. (только будьте, пожалуйста, снисходительны к качеству кода.
В следующих частях — управление с телефона и беспроводные решения.
Комментарии (25)
Legich5
13.01.2016 09:57+2Задумка впечатляет. Это уже не дом, это скорее небольшой заводик :). А если серьезно, то хотелось бы узнать мнение автора о том как эта система будет развиваться и самое главное ремонтироваться. Например лет так через 5-10-20. Например, автор системы улелел на Марс, а его бабушке/жене/детям понадобилось разобраться с поломавшейся розеткой. Сколько времени понадобиться человеку со стороны разобраться с системой и ее починить?
apivovarov
13.01.2016 10:42Абсолютно правильный комментарий. Это самая большая проблема моего умного дома — он совершенно не отделим от меня. У меня есть бэкапный вариант — на базе программируемого реле. Соответсвенно, если ломается контроллер, то можно переключиться на реле (но потеряется большая часть функционала). Все что сделано беспроводными технологиями — везде дублируется выключателями, поэтому тоже свет включать/выключать будет можно.
Поддержка и развитие системы — это одна из вещей, которые необходимо продумывать с самого начала.igorsd
13.01.2016 11:01В этом плане несколько проще с беспроводными вариантами которые внедряются в уже существующую разводку — всегда можно всё выдрать и вернуть как было… но простор для творчества, конечно, не тот.
apivovarov
13.01.2016 11:42Перекоммутировать как раз никакой проблемы не составляет, так как все провода сведены в единый щиток. Нужно только поменять кнопки без фиксации на кнопки с фиксацией.
igorsd
13.01.2016 12:59Ну как сказать — не составляет… боюсь не каждый среднестатистический электрик ЖЭКа осилит ваш щиток с ходу. Речь то о человеке со стороны, да с учётом вашей недоступности.
Вообще, по опыту работы с «неподготовленными» электриками — любая автоматика вгоняет их в конкретный ступор, из которого они не всегда выходят без потерь.
serafims
13.01.2016 11:20+1Думаю, нужно просто подробно документировать все блоки, кабели, реле и пр., и писать подробную документацию что где чего делает. Конечно, в идеале сделать алгоритм поиска решения при неисправностях, как это делают в service manual.
apivovarov
13.01.2016 11:44Абсолютно согласен — может и дойдут руки до этого постепенно. К сожалению, времени на умный дом не очень-то хватает…
legioner
14.01.2016 18:13Соберитесь с силами и переберите щиток: промаркируйте все провода, соберите их в жгуты многоразовыми завязками, задокументируйте и тд. Сделайте его красивым, а не только работающим.
Могу в ЛС подсказать сайт, где есть много примеров красивых щитов с домашней автоматикой.apivovarov
14.01.2016 18:18Я, когда приступал, я смотрел и изучал эту тему отдельно. Изначально было сильно красивее, но в процессе он много раз перебирался. Провода у меня промаркированы (большей частью). Надо еще клеммы промаркировать и сделать распечатку… Но вот возможности пересобрать — это, к сожалению, вряд ли.
Генеральную уборку сделаю.
Спасибо за замечание )
tri_botinka
13.01.2016 13:22+1Есть такая у «буржуев» терминология — Wife acceptance factor — фактор «женопригодности». Идеальная конструкция — это с которой справляется жена — без технического образования, долгих инструкций и сложной логики. Изобретатели регулярно тренируются по WAF — при делании умно-домашних «марсоходов»
apivovarov
13.01.2016 14:10К сожалению, DIY-решения обычно проходят WAF-фактор только в плане использования. Под воздействием этого фактора я добавил физический выключатель к подсветке шкафа (который мне казался совсем не нужным))))
Prometheus
13.01.2016 13:17>>программировать нужно все самостоятельно
Универсальных коробочных решений, к сожалению, не бывает :)
В каждом отдельном случае — есть своя специфика, приходится это учитывать.
>>сейчас бы я более внимательно посмотрел в сторону альтернатив
Если для щитка, можно глянуть бескорпусное решение http://irbis.cc
Но от программирования опять никуда не уйти :)
tri_botinka
13.01.2016 13:17Ну это уже недешево выходит — более 60 тыс. руб по текущему прайсу. уже трудно объяснимо с другими альтернативами — той же Raspberry Pi 2 или ардуинками, оснащенными соответствующей измерительной и управляемой периферией
Я ничего не имею против к изделиям уважаемой компании Owen. Но если выходишь с рынка B2B на B2C — необходимо правильно оценивать платежный спрос и клиентские ценности. Они могут оказаться совсем другими. Примерно такую ошибку сделала и Intel — когда пыталась уйти в сегмент ARM процессоров — если в десктопных изделия платить сотни долларов за CPU было привычно — то на рынке IoT и др. — за эти деньги можно купить килограмм хороших изделий от Qualcomm, MKT и пр. Поэтому если в подготовке статьи участвовали маркетологи Owen — ставлю им жирную двойку за незнание целевого рынка ;-)apivovarov
13.01.2016 13:40Никакого отношения к компании ОВЕН я не имею и по жизни я занимаюсь решениями Digital Signage. Умный дом для меня — хобби. Откуда появился ОВЕН я рассказал в предыдущих статьях. Я планирую сделать отдельную статью по затратам. Дальше все могут для себя сравнивать. Изначально, я сравнивал с решениями Crestron и KNX, которые выходят ещё дороже.
О недостатках своего решения (которые я вижу) честно сам рассказываю и если вы прочтёте предыдущий пост, то я там сказал, что сейчас бы я рассмотрел другие решения. Но здесь нужно изучать все в комплексе.
morgreek
13.01.2016 13:26О, весьма интересно!
А вы контроллер PIXEL не рассматривали в качестве управляющего мозга? Хотя, насколько помню, он программируется только на FBD, иногда ооочень не хватает структурированного текста.apivovarov
13.01.2016 15:31Как я описывал в предыдущей статье, выбор решения — это игра случая. К сожалению, у меня не было времени изучить различные решения. ))
apivovarov
13.01.2016 15:31Как я описывал в предыдущей статье, выбор решения — это игра случая. К сожалению, у меня не было времени изучить различные решения. ))
xDimus
А КЛЛ или светодиодные лампы работают через реле? Лампы накаливания, по современным меркам, как то не очень здорово смотрятся…
apivovarov
Я пробовал разные светодиодные лампы (не ленты, а именно лампы) — они все диммируются достаточно плохо. Тут дело не в реле, а именно в самих лампах — если вы попробуете их диммировать любым диммером, то будет тоже самое. С лентами проще (кстати, для светодиодных лент много готовых диммеров с управлением 0-10В и стоят они недорого), но для того чтобы использовать ленты, нужно изначально было проектировать их, а это был не наш случай. В общем, год назад я хороших диммируемых светодиодных ламп не нашел, поэтому у меня везде стоят энергосберегающие лампы, кроме тех мест, где нужно диммирование — там стоят обычные лампы накаливания.
alexpp
Посмотрите публикации от lamptest — он подробно пишет, какие лампы диммируются.
igorsd
Бывают светодиодные светильники с диммируемыми блоками питания, правда, дипазон яркости всё равно сильно меньше чем у обычных ламп. Брал один такой на тест — через пол года бп умер. При этом из 25 обычных бп ни один такого себе не позволил. Понятно что для статистики этого мало — возможно, просто «повезло».
xDimus
Если на лампе не написано, что она диммируемая значит на 99% она не диммируемая. КЛЛ тоже кстати бывают диммируемые. А ленты для основного освещения не очень подходят, в основном для подсветки.
apivovarov
Конечно, я пробовал только диммируемые лампы. Если вы знаете, какие светодиодные лампы хорошо диммируются, то дайте знать. Я с удовольствием заменю лампы накаливания ))
xDimus
Икеевские многие диммируются. Выше уже упоминали lamtest — посмотрите его обзоры. А на сайте есть удобный поиск по параметрам.
apivovarov
Спасибо. обязательно почитаю.