Введение
Всем привет!
Меня зовут Дмитрий, и обычно я занимаюсь обзорами консьюмерской электроники, такой как ноутбуки и жесткие диски. Вы могли видеть мои статьи здесь и здесь.
Пару недель назад знакомый инженер из Wiren Board предложил мне необычный проект: попробовать их оборудование со стороны пользователя – неинженера. Программирование я знаю на уровне вуза, с Linux близко никогда не сталкивался. И умным домом пользовался только в виде китайских лампочек и розеток, управляемых из приложения производителя.
Мне выслали тестовый "чемодан" с основным оборудованием Wiren Board, на котором я попробую настроить несложную автоматизацию. Я сразу решил, что не буду заморачиваться с Linux и текстовыми скриптами, а воспользуюсь средой визуального программирования Node-RED (кстати, разработанной IBM). Разработчики обещают, что Node-RED позволит быстро настроить умный дом через интерфейс браузера. Посмотрим, так ли это окажется на практике.
Примечание инженера Wiren Board: часто пишут, что с нашим оборудованием сложно разобраться непрограммисту. Мы это постепенно исправляем, и решили проверить, стало ли лучше. Для этого закинули наш стандартный демо-чемодан новичку в умных домах (прости, Дмитрий 🙂), показали, где у нас лежит документация, и дали контакт техподдержки. Ниже опыт самого Дмитрия, а в конце будет второе небольшое примечание от меня.
Волшебный чемоданчик
Я получил демонстрационный чемодан Wiren Board в третьей версии. Подробное описание можно найти на официальном сайте.
Контроллер Wiren Board 7 я подключил кабелем LAN к домашнему роутеру, контроллер автоматически получил IP-адрес, по нему можно обращаться к web-интерфейсу. IP-адрес я посмотрел в интерфейсе маршрутизатора.
В чемодане уже настроены несколько сценариев автоматизации: контроль питания и повышенного энергопотребления, диммирование ламп накаливания и вентилятора, мониторинг качества воздуха, мониторинг водоснабжения и протечек. Этим возможности не ограничиваются, можно дописать свои сценарии. Но стандартный способ для этого – текстовый движок правил. А я постараюсь сделать всё через визуальное программирование.
Но сначала попробую то, что уже есть.
Преднастроенные сценарии можно запускать разными способами.
Первый способ – физический. Три имеющиеся кнопки и различные датчики позволяют выполнить все упомянутые сценарии. Второй способ – нажимая кнопки в web-интерфейсе.
Я протестировал защиту от протечек на основе модуля WB-MWAC. К выходу модуля подключены датчик протечки, кнопка Кран, счетчик воды с двигателем, имитирующим поток.
После нажатия на кнопку Кран счетчик начинает вращаться, через него как бы проходит поток жидкости. Сама кнопка Кран начинает подсвечиваться красным. Потом имитируем протечку: касаемся мокрым пальцем датчика протечки, после чего поток останавливается, кнопка начинает мигать, а модуль контроля протечек - противно пищать. Для сброса аварии (утечка устранена) достаточно снова нажать кнопку Кран.
Ниже я попробую сделать подобный сценарий с помощью Node-RED.
Чтобы мне ничего не мешало, отключу встроенные сценарии. Для этого сначала нужно перейти в режим Администратор в пункте меню Настройки - Права доступа. При этом в правом верхнем углу интерфейса появится красное обозначение административного уровня доступа.
И после этого появится пункт меню Правила, где их можно изменять, удалять и программировать новые:
Обновление ПО и прошивки
Как я прочитал в инструкции, Node-RED мне придётся установить самому. А перед этим лучше обновить обновить ПО контроллера и, на всякий случай, прошивки устройств. Здесь не обойтись без консоли, нужно подключиться к Wiren Board через SSH. Весь процесс подключения хорошо описан здесь, там же указаны логин и пароль по умолчанию.
При обновлении было выведено сообщение о наличии новой версии конфигурационного файла. Поскольку конфигурационные файлы могут редактироваться под параметры конкретного чемодана (например, коэффициент коррекции аварийной мощности вентилятора), я оставил старую конфигурацию.
Наконец, я выполнил обновление прошивки устройств, для некоторых действительно появились новые версии.
Установка Node-RED
Следующий этап – установка визуальной среды Node-RED на контроллер Wiren Board. Весь процесс описан в руководстве.
Возник «подводный камень»: в окно mcedit под OpenSSH и Windows текст вставляется правым кликом мышью с зажатым Shift.
В результате сервис Node-RED успешно стартовал.
Затем я установил рекомендованный модуль node-red-contrib-wirenboard, после чего настроил соединение MQTT. Все процессы хорошо описаны в руководстве.
Запускаем Node-RED на демонстрационном чемодане
Для работы с нодами (узлами) Wiren Board под Node Red я нашёл небольшой обучающий видеоролик от WirenBoard SetPoint.
Тестируем датчик протечки жидкости
Я решил запрограммировать сценарий, который позволит отреагировать на протечку жидкости.
В обычной ситуации, когда протечки нет, светодиодная лента будет гореть зеленым, ничего пищать не будет, вытяжка работать не будет.
В случае аварии лента загорается красным, контроллер противно пищит, включается вентилятор вытяжки.
Поехали!
Первое, что я сделал – включил отладку датчика протечки WB-MWAC. Я взял ноду wb-input, настроил в ней сенсор F1 на модуле WB-MWAC и подключил ноду debug. При срабатывании сенсора автоматически запускался писк контроллера, поэтому я сразу же добавил кнопку с нодой inject, отключающей писк. Достаточно послать 0 на ноду wb-out с выставленным устройством Alarm на WB-MWAC.
Я приложил мокрый палец к датчику, после чего успешно получил значение 1, указывающее на срабатывание.
Переходим к вытяжке. Сначала я сделал две кнопки, отсылающие 0 или 100 на вентилятор (модуль WB-MDM3, Channel 2). Значение 100 соответствует полной скорости, 0 – остановке.
Следующий шаг – две кнопки, выставляющие красный или зеленый цвет ленты. Сначала я посмотрел, как правильно выставить цвет. Для этого взял 5-секундную метку времени inject, опрашивающую подключенные устройства. Затем подключил к ней ноду wb-get и выставил четыре параметра модуля WB-MRGBW (RGB Palette, Hue, Saturation, Brightness). А затем через web-интерфейс выбирал красный или зеленый оттенок.
Для красного цвета надо выслать на светодиодную ленту значение палитры RGB Palette, равное "255;0;0", а для зеленого - "0;128;0". Кнопки отлично работали, лента переключала цвета.
Переходим к финальному этапу. Я установил ноду wb-out с сенсором протечки F1, от которой сделал ветвление на 1 вверх и на 0 вниз. Затем просто копировал уже имеющиеся ноды, которые я добавил ранее. Это быстрее, чем их заново прописывать.
По ветвлению 1 (мокрый палец на датчике) я включаю ленту, выставляю красный цвет, раскручиваю вытяжку на 100%.
По ветвлению 0 (датчик не фиксирует протечки) я включаю ленту, выставляю зеленый цвет, останавливаю вытяжку.
На практике все сработало успешно. Ура!
Заключение
Как показал тест, для базовой автоматизации на основе Wiren Board и Node-RED знания в области Linux не потребовались. Для программирования в интерфейсе Node-RED хватает школьных навыков использования алгоритмов.
Преимущество Wiren Board в том, что сервер Node-RED и контроллер умного дома оказываются одним устройством. То есть достаточно приобрести Wiren Board 7 с необходимыми модулями и датчиками, и на нём же развернуть Node-RED. Никаких дополнительных систем или компьютеров не потребуется.
Мне понравилось обилие документации и обучающих роликов, чаты в телеграмме, отзывчивая поддержка. Ответы на любые вопросы я нашел за минимальное время. Для Node-RED уже разработаны пять нод (узлов), которые помогут запрограммировать умный дом через Wiren Board.
К сожалению, полностью без командной строки Linux обойтись не удалось, поскольку развертывание Node-RED требует запуска SSH. Но процедура эта разовая, смириться можно. А вообще хотелось бы увидеть возможность покупки Wiren Board 7 с уже установленным Node-RED.
Что понравилось:
- Развертывание Node-RED выполняется напрямую на Wiren Board 7, дополнительных систем не требуется
- Хорошо документированный процесс установки и настройки, обучающие видео
- Удобный набор нодов (узлов) под Wiren Board 7
Что не понравилось:
- При установке пару раз пришлось обращаться к командной строке Linux через SSH
- Нельзя купить Wiren Board 7 сразу с установленным Node-RED
Примечание инженера Wiren Board: свежий взгляд Дмитрия дал нам пару идей, как сделать жизнь пользователей проще. Уже поставили задачу программистам, чтобы Node-RED можно было установить кнопкой из веб-интерфейса. Снова вспомнили про обновление прошивки контроллера и периферийных устройств из веб-интерфейса.
Пожалуйста, напишите в комментариях, был ли вам интересен наш эксперимент, и стоит ли продолжать. Пока что идея для следующей статьи – собрать более сложную автоматизацию и организовать для неё интерфейс. Заодно проверим, насколько велик запас производительности у Wiren Board 7. А если у вас есть другие вопросы, пишите их в комментариях, – постараемся осветить и их.
Ваше решение - золотая середина между проприетарными и DYI решениями. Первые - дорого и сильно ограниченно (зато работает), второе - свобода выбора, и постоянный бой с библиотеками и отвалами.
Red-Node выглядит очень многообещающе, особенно тем, кто не часто занимается автоматизацией. Довольно легко поставить, настроить, есть множество статей и форумов в помощь. Чего не скажешь про обычные АСУТП, где информации слишком мало, да и стоимость ПЛК для жилых помещений слишком завышена.
Ещё существует платное решение "спрут хаб", анонсируется как платформа для беспроводных устройств, но на самом деле позволяет легко интегрировать в сценарии устройства из различных систем независимо от среды передачи.
Wiren Board 7 и сопутствующие устройства предоставляют возможность практически неограниченной автоматизации вплоть до среднего уровня. Прошу вас не останавливаться на достигнутом. Удобство веб интерфейса для неподготовленного пользователя - это золотая жила. Почаще садите ламеров за настройку алгоритмов автоматизации, и не стесняйтесь делать дубликаты настроек в разных местах интерфейса, чтобы он стал интуитивнее. Не забудьте сделать "умный" поиск по интерфейсу настроек, к этому многие привыкли.
Разумеется интеграция Node Red, Sprut.Hub, обновлений WB и прошивок галочками, как у keenetic, к примеру, сильно повысит спрос на вашу продукцию.
Мне предстоит автоматизация нового дома (отопление с ШИМ термоголовками, вентиляция с ШИМ вентиляторами, диммируемое освещение, рольставни, безопасность протечек воды и газа), и мой выбор пал на WB7 + Спрут + RedNode, потому как - золотая середина. Что то проще делать в WB, а что то в остальных системах. Не исключаю, что в будущем всё переведу в какую то одну систему, но на этапе тестирования, гораздо проще комбинировать эти решения.