Базовая установка и пример работы c Node-RED на сервере VScale в ОС Debian 8
Введение
Технологии “умного дома” становятся доступнее с каждым днем. Все чаще и чаще мы слышим аббревиатуру IoT - Internet of Things (Интернет Вещей). По сути это всего лишь возможность взаимодействия с окружающими нас вещами и контроля их поведения в зависимости от желания владельца. Одним из ключевых преимуществ IoT является возможность коммуникации устройств друг с другом, а также удаленное управление каждым из таких устройств.
Топология связи устройств друг с другом, а также со внешним миром посредством сети Интернет может быть любой - от самой простой до очень сложной. Все ограничивается лишь фантазией создателя такой системы. Однако даже для постройки очень простой системы требуется знание основ программирования, а также разработка алгоритма поведения того или иного устройства. Чтобы упростить процесс создания такой системы, инженерами IBM была создана такая среда программирования как Node-RED. Она позволяет даже человеку с минимальными навыками программирования связать между собой различные устройства класса IoT и запрограммировать их поведение. Удобство этой среды состоит в том, что сам алгоритм работы программы можно выстроить в виде визуальных блоков, а также тем, что в репозитории Node-RED есть огромное количество уже созданных модулей, которые можно использовать, не разбирая горы документация, а просто добавив их в среду программирования.
"Зачем устанавливать Node-RED на сервер, когда можно поставить его на ноутбук и преспокойно программировать на нем?", - скажете Вы. Это утверждение верно только для стадии тестов. Но когда у Вас появляется непрерывный поток информации с Ваших IoT устройств, его нужно будет постоянно обрабатывать для обеспечения бесперебойной работы, а это можно сделать только на сервере. Также это будет идеальным решением для сбора данных с датчиков, географически удаленных друг от друга, например, если датчики расположены на дачном участке и в квартире.
Системные требования:
- Сервер VScale с минимальной конфигурацией и операционной системой Debian 8.
- Внешние IoT-устройства подключенные к сети Интернет, например Raspberry PI 3 c ОС Raspbian Jessie.
Шаг 1: установка Node-RED
Процесс установки Node-RED достаточно прост. После создания сервера выполняем вход посредством SSH от имени суперпользователя root.
Обновляем источники приложений и пакеты до актуальной версии:
apt-get update && apt-get -y upgrade
Устанавливаем легковесную графическую оболочку LXDE, а для удобства работы с сервером с любых Windows-машин ставим отличное средство удаленного управления xrdp:
apt-get -y install lxde lxde-core lxde-common xrdp
Теперь можно подключиться к серверу стандартным RDP-клиентом Windows. Обратите внимание, что если вместо LXDE будет установлен Gnome, то xrdp не получится запустить без дополнительных настроек.
Также можно поставить Midori в качестве браузера - он гораздо быстрее, чем стандартный. Еще нам потребуется пакетный менеджер NodeJS и собственно сам движок:
apt-get -y install midori npm nodejs-legacy
Разработчики Node-RED рекомендуют обновление npm до последней версии перед установкой. Выполняем эту рекомендацию:
npm install -g npm@2.x
Теперь можно поставить Node-RED одной командой. В процессе установки могут вылезти ошибки зависимостей node-gyp, однако они не критичны для работы Node-RED и их можно проигнорировать:
npm install -g --unsafe-perm node-red
После завершения установки мы можем отключиться от SSH и полноценно зайти на сервер с помощью RDP. В ОС Windows достаточно нажать сочетание Win+R, ввести mstsc и нажать Enter. В открывшееся окно вводим IP-адрес сервера VScale и подключаемся к серверу.
Шаг 2: запуск среды Node-RED
Открываем LXTerminal и запускаем среду Node-RED командой:
node-red
Открываем Midori и в адресной строке указываем: http://127.0.0.1:1880
Если не указывать дополнительные настройки для фаервола, то приложение будет также доступно по адресу самого сервера. Но в рамках данного руководства мы не будем рассматривать этот вопрос.
Интерфейс поделен на три основных части - это список элементов, место для размещения элементов и свойства объектов. Перетаскивая элементы из списка, можно формировать зависимости элементов друг от друга, таким образом визуально представляя логику работы программы.
В качестве IoT-устройства возьмем Raspberry PI 3 c ОС Raspbian Jessie. Node-RED там установлен “из коробки”, поэтому просто его запускаем. Попробуем отправлять данные между запущенными средами программирования. Используя этот пример можно будет забирать любые данные, которые предоставит IoT-устройство. К той же самой Raspberry PI можно подключить любые датчики, например датчик протечки, освещения, температуры. В примере я буду использовать замечательный элемент, который называется Inject. Он позволяет подставлять любые данные, не используя реального устройства и незаменим для настройки. Также мы используем элемент TCP для соединения данных.
Шаг 3: пример работы
Вначале настроим нашу “малинку”. Выбираем элемент Inject из раздела Input и помещаем на рабочее поле. Также размещаем туда элемент TCP из раздела Output и выполняем их соединение, просто совместив соответствующие серые точки друг с другом. Можно также добавить элемент Debug для контроля того, что именно будет отправляться. Это будет выглядеть так:
Настройка любого элемента производится двойным кликом по нему. Вначале указываем параметры Inject. Отправим к примеру какую-либо строку на наш сервер VScale. Выбираем Payload - String и пишем туда "Hello World!" и нажимаем Done.
Теперь настроим элемент TCP указав, что мы будем сами соединяться с сервером и отправлять на него данные. Заполняем IP-адрес сервера (в примере XXX.XXX.XXX.XXX) и порт (выбираете любой произвольный, главное чтобы на сервере был выставлен такой же порт).
Параметр Debug оставляем по умолчанию. Применяем все настройки и запускаем программу нажатием кнопки Deploy.
Теперь настроим серверную часть. Тут мы будет использовать два элемента. Из раздела Input берем TCP, а для визуального представления элемент Debug из раздела Output. Соединяем их.
Теперь настраиваем элемент TCP указывая тот же порт, а также выбирая тип данных, которые будем принимать.
Нажимаем Deploy и через пару секунд “малинка” соединится с нашим сервером. Снизу элемента появится надпись “Connected”.
Нажав на синюю кнопку слева от элемента Inject, мы отправим заранее указанную строчку. Со стороны сервера перейдите на вкладку Debug и Вы увидите нашу строку с “Hello World”.
Заключение
Мы установили Node-RED на сервер VScale и легко приняли данные с удаленного IoT-устройства. Разумеется, что это самая простая часть. Прелесть Node-RED в том, что логика может быть сколь угодно сложной, а сам процесс программирования очень прост и визуально понятен. Более того - функционал можно расширять как угодно за счет огромного количества готовых модулей, а их уже более 120 тысяч!
Особое внимание заслуживает возможность интеграции с социальными сетями, например с Twitter. Не за горами тот час, когда Ваш холодильник будет писать Вам твиты о том, что закончилось молоко, а сервер VScale будет центром Вашего умного дома.
Войдите в службу, чтобы оставить комментарий.
Комментарии
0 комментариев