Реализация
Для реализации умного дома, кроме аппаратных решений, обзор которых не является целью данной статьи, нужно выбрать программную платформу. Сейчас на рынке представлено достаточно много решений на базе свободного ПО. По мнению автора, к рассмотрению достойны следующие проекты (включены системы, с которыми автор непосредственно работал):
-
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:00AM-11:00PM функцию, формирующую имя файла, в котором записан бой курантов для соответствующего часа, и воспроизводит на внешнем устройстве требуемый аудиофайл.
Google Blockly позволяет писать код на визуальном языке программирования, не вдаваясь в подробности JavaScript. Например, так реализовано включение света в прихожей по датчику движения: когда солнце зашло, свет включается на 100 %, в ночном режиме — на 10% яркости:
Здесь мы видим подписку на событие изменения состояния датчика движения. Данный код будет вызван, когда состояние изменится и будет содержать «true».
Используя же Node-red, мы можем реализовывать простейшие сценарии управления. Например, в ванной комнате мы можем с помощью несложного кода реализовать управление светом от датчика движения:
В момент, когда датчик движения меняет свое состояние, происходит автоматическое выполнение блоков сценария Node-red. Когда же датчик движения посылает команду «выключение», сценарий дает задержку на 5 минут, после чего выключает свет. Если же в течении 5 минут датчик движения отправит команду «включить», задержка будет сброшена, и свет останется включенным. Обсуждение деталей реализации блоков Node-red выходит за рамки данной статьи.
Таким образом, благодаря подходу к умному дому как к системе повышающей качество жизни, автору проекта удалось воплотить свою мечту об умном доме, не испытывая серьезных экономических затрат. На момент запуска проекта для двухкомнатной квартиры затраты составили порядка 50 000 руб (811$).
Первая и вторая части серии статей.