Открыть список
Как стать автором
Обновить
76.61
Рейтинг
Luxoft
think. create. accelerate.

Умный дом. Опыт разработки и внедрения

Блог компании LuxoftУмный дом
В этой статье мы рассмотрим опыт разработки и внедрения умного дома в двухкомнатной квартире. Здесь будет изложена точка зрения автора на подход к проектированию и разработки умного дома, а также показано готовое решение, которое уже успешно работает 4 года.


Тем, кто хочет сделать свой дом умным — добро пожаловать.

Что же такое умный дом? Мы уйдем от официальных определений и посмотрим на это с точки зрения потребителя. Когда автор впервые поделился своей идей умного дома со своим приятелем, то тот сказал — «ты что, не можешь дойти до выключателя и сам включить свет?». По своему он прав — автор ленив (шутка). Идея умного дома, как раз и состоит в том, чтобы он сам выполнял за нас манипуляции по управлению освещением, электроснабжением и при этом, еще экономил ресурсы и обеспечивал безопасность. Таким образом, умный дом — это комплекс программно-аппаратных решений, направленный на повышение качества жизни проживающих в доме. Да, именно так, умный дом следует рассматривать как то, что делает вашу жизнь комфортнее, а не как большую и дорогую игрушку. В этой концепции автор статьи признает голосовое управление умным домом излишним и считает, что умный дом должен реализовывать, а будущем и предугадывать, типовое поведение человека.

Паттерны поведения


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

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

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

Итак, начнем с поведенческих паттернов. Чтобы увидеть их, необходимо некоторое время понаблюдать за собой и членами вашей семьи. В рамках наблюдений мы фиксируем: во сколько человек встает, всегда ли принимает пищу в одно и тоже время или в некотором интервале, маршрут по квартире, от момента пробуждения до ухода из дома, маршрут по квартире от момента прихода домой до «отбоя». В итоге мы получаем некоторую картину, в которой нам важно: какие источники освещения использует человек, что ему необходимо для комфортного существования — включение теплого пола в ванной, мягкая подсветка, приглушенный свет ночью и т. д. Такие паттерны необходимо найти для каждого члена семьи и получить нечто среднее, что не нарушит комфорт других. Допустим, муж встает раньше жены каждый день.

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

Для создания комфортной среды, также, необходимо понаблюдать, какое освещение нам комфортно, когда мы идем ночью на кухню, включаем ли мы теплый пол утром каждый день или только в выходные, какое освещение мы выставляем, когда смотрим телевизор? В результате таких наблюдений, автор реализовал зеленую подсветку в комнатах, а в местах общего пользования верхний свет 10% от номинала, который включается и выключается по команде датчиков движения. Когда же приходят гости, можно реализовать плавную смену цветов подсветки, «крутить» по телевизору видео с камином, а из аудиоколонки воспроизводить приятную музыку. И все это по одной команде из панели управления или телеграмма. В рамках данной группы функций автор реализовал, кроме ночного режима, включения белого яркого цвета подсветки одновременно с включением телевизора, гостевой режим с плавной сменой цвета подсветки.

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

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

Архитектура


После того, как все пожелания сформулированы, можно приступать к разработке архитектуры умного дома. Здесь, важно принять во внимание масштаб помещения, которым будет управлять система. Вы заранее должны определиться с топологией электрических и управляющих линий. Идеальный вариант — это топология «звезда», когда к каждому потребителю идет своя линия электроснабжения, а вся управляющая электроника собрана в одном щитке, рядом с классическим щитком, где установлены щитовые выключатели. Более экономичный вариант, это когда используется разводка электролиний «общая шина» как прокладывают строители в России), а управляющее реле, включается в цепь непосредственно перед устройством. Недостаток этого способа в сложности последующего обслуживания реле, так как потом оно может быть закрыто натяжным потолком, кафелем или обоями. На сегодняшний день есть реле, которые можно монтировать непосредственно в монтажные коробки вместе с электрооборудованием, но более глубокие, чем те, которые массово устанавливают в новостройках российских городов.

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

  • отдельные линии связи до каждого выключателя или реле, либо группа реле, управляемая по одной линии связи, например MegaD-2561 (https://ab-log.ru/). Достоинство — надежность, недостаток — высокие затраты на дополнительные линии связи
  • управление по радиоканалу. Каждое реле управляется командой, передаваемой по радиоканалу. К достоинствам такого способа относится простота монтажа и отсутствие дополнительных управляющих линий. Недостаток — радиосигнал, который может затухать под воздействием внешних помех и тогда команда до реле может не дойти. В качестве примера таких реле, можно привести систему Noolite (http://noolite.by/), которая используется автором статьи

Исходя из экономических соображений, автором статьи для умного дома был выбран радиоканал. Для повышения гибкости системы, до каждого «потребителя» была проложена своя электрическая линия.

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



На показанной схеме видно, что команда от кнопки (Button) поступает напрямую в связанные с ней реле, однако же и эта команда передается в контроллер, который просто уведомляется о факте нажатия. В тоже самое время, реле при изменении своего состояния тоже уведомляют об этом контроллер. Такая схема является абсолютно надежной, так как в случае выхода контроллера из строя, освещение по-прежнему будет работать, но будут отсутствовать дополнительные функции. С другой стороны, такая схема менее гибкая, так как будет сложнее реализовать изменения логики работы одного выключателя с разными реле, например, в зависимости от времени суток. Для такой задачи подойдет централизованная схема.



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

Реализация


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

  • Majordomo— система написана на PHP. Для программирования используется концепция объектов, их свойств и методов. Поддерживает большой набор устройств и имеет большое русское комьюнити. Хороша для быстрого старта, однако использование этой системой СУБД MySQL и архитектуры классического веб-приложения является ее существенным недостатком. Эта система была использована автором в первой версии умного дома. В качестве средства программирования логики можно использовать PHP или Google Blockly
  • OpenHAB — достаточно известная система, написанная на Java. По мнению автора статьи, она сложна в настройке и обеспечении логической связи между устройствами умного дома. В качестве средства программирования логики умного дома также можно использовать Google Blockly
  • Node-red — система для реализации простейшей логики умного дома, при условии, что устройства связаны по стандартным протоколам прикладного уровня (rest, mqtt и т. д.). Рекомендуется автором данной статьи для использования в простых решениях, например, охранная система, система имитации присутствия и т. д.
  • ioBroker — система написана на JavaScript (Node JS). Имеет простую и грамотную архитектуру, является достаточно стабильной и поддерживает большой набор устройств. Использует простую парадигму — устройства с наборами состояний и возможностью подписки на изменения состояния. В качестве средства программирования логики умного дома можно использовать JavaScript, Google Blockly или Node-red, который вошел в состав ioBroker как отдельный компонент. Именно эта система используется автором во второй версии умного дома, эксплуатируемой с сентября 2019 года.

Сам умный дом, в настоящее время реализован на базе Rapsberry PI 3 и операционной системы Rapsberrian. В качестве системы управления, как уже было сказано, используется система ioBroker. Управление освещением и электроснабжением построено на базе технологии Noolite. В качестве аппаратного дополнения используется GSM-модуль, который задействован для экстренного оповещения при отсутствии Интернета, а также как дополнительный канал управления системой по SMS с доверенных телефонов.

Логика взаимодействия между устройствами реализована на основе сценариев JavaScript, Google Blockly и Node-red.

Сценарий на JavaScript представляет собой обычную программу для NodeJS. Например, вот так реализован в умном доме автора статьи бой курантов:

schedule('0 0,8-23 * * *',() =>
	{
	 let currentTime = new Date();
	 let hour = currentTime.getHours();
	 if(hour > 12)
		hour -= 12;
	 let file = hour.toString() + 'h.mp3';
            playSound('audio/' + file); 
           });

Здесь код ioBroker вызывает каждый час в интервале 8:00-23:00 функцию, которая формирует имя файла, в котором записан бой курантов для соответствующего часа и воспроизводит на внешнем устройстве требуемый аудиофайл.

Google Blockly позволяет писать код на визуальном языке программирования, не вдаваясь в подробности JavaScript. Например, так реализовано включение света в прихожей по датчику движения: когда солнце зашло, свет включается на 100 %, в ночном режиме — на 10% яркости:



Здесь мы видим подписку на событие изменения состояния датчика движения. Данный код будет вызван, когда состояние изменится и будет содержать «true».

Используя же Node-red, мы можем реализовывать простейшие сценарии управления. Например, в ванной комнате мы можем с помощью несложного кода реализовать управление светом от датчика движения:



В момент когда датчик движения меняет свое состояние происходит автоматическое выполнение блоков сценария Node-red. Когда же датчик движения посылает команду «выключение», сценарий дает задержку на 5 минут, после чего выключает свет. Если же в течении 5 минут датчик движения отправит команду «включить», задержка будет сброшена и свет останется включенным. Обсуждение деталей реализации блоков Node-red выходит за рамки данной статьи.

Таким образом, благодаря подходу к умному дому как к системе повышающей качество жизни, автору проекта удалось воплотить свою мечту об умном доме, не испытывая серьезных экономических затрат. На момент запуска проекта для двухкомнатной квартиры, затраты составили порядка 50 000 руб (811$).
Теги:nodejsiobroker
Хабы: Блог компании Luxoft Умный дом
Всего голосов 25: ↑16 и ↓9 +7
Просмотры17.9K

Похожие публикации

DevOps Engineer (Remote)
LuxoftМожно удаленно
Regular/Senior PHP Developer
LuxoftМожно удаленно
Functional QA Engineer
LuxoftМожно удаленно
Senior Manual QA Engineer
LuxoftМожно удаленно
Senior Python Developer
LuxoftМожно удаленно

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
Россия
Сайт
career.luxoft.com
Численность
свыше 10 000 человек
Дата регистрации
Представитель
LuxoftRussia

Блог на Хабре