Интернет вещей становится все более привычным не только для ИТ-специалистов, но и для обычных людей. Системы «Умный дом», «Умная бытовая техника и системы освещения» — все это уже мало кого удивляет. На производстве и в телекоммуникациях эта технология очень полезна, поскольку позволяет считывать данные в режиме реального времени, работать с удаленными системами. IoT постепенно находит свое место в бизнесе, сельском хозяйстве, науке, здравоохранении.

Приложение для IoT создать не так сложно, как можно было бы подумать. В этом материале описано, как можно настроить рабочее пространство IBM Bluemix, создав демонстрационное приложение для мониторинга удаленных серверов или управления распределенной сетью.

Какие технологии требуются для начала работы?


  • IBM Bluemix — облачное предложение IBM на
  • основе Cloud Foundry (реализация с открытым исходным кодом концепции «платформа как
  • сервис»)
  • Node-RED — инструмент с открытым
  • исходным кодом, специально созданный для работы с Интернетом вещей
  • Twilio — сервис для обмена SMS-сообщениями
  • Номер мобильного телефона и сам телефон для получения SMS-уведомлений
  • Знакомство с программированием на JavaScript

Само приложение назовем pingGo, под этим названием оно и будет фигурировать в материале.

Основные функции создаваемого приложения — отслеживание состояния машин при помощи мониторинга сетевых и машинных портов. Если машина сбоит, то приложение уведомляет об этом оператора/пользователя при помощи SMS-сообщения. Приложения такого типа будут очень полезными для широкого круга технических работников, операторов ЦОД, инженеров, которым требуется удаленно контролировать серверы или распределенные компьютерные сети. Нельзя забывать, что приложение — демонстрационное, то есть оно показывает возможности системы.

Создаем приложение для платформы Bluemix на основе Node-RED


1. Входим в систему под своей учетной записью Bluemix или регистрируемся для создания бесплатной учетной записи. Убеждаемся в том, что пространство dev создано.



2. Открываем страницу своего профиля, убеждаемся в том, что активный регион правильно настроен. Необходимо развернуть собственное приложение в одном из существующих регионов Bluemix, выбор региона особого значения не имеет. В демонстрации выбран регион Europe United Kingdom.



3. Ищем и выбираем сервис Node-RED Starter в каталоге.
4. Вводим для приложения уникальное имя, которое автоматически специфицирует имя хоста и нажимаем Create. Дожидаемся появления следующего сообщения: Your app is running. YourAppName.eu-gb.mybluemix.net. Если появилось сообщение об ошибке вида: Error: Lost connectiontoserver, то следует убедиться в том, что вы используете HTTPS-соединение. При этом ваш URL-адрес должен выглядеть примерно следующим образом: pinggo.eu-gb.mybluemix.net/red.

Создание приложения с двумя узлами


Теперь начинаем работу с Node-RED с создания простого приложения с двумя узлами.

1. Откройте URL- ссылку для своего Bluemix-приложения и нажмите Go to your Node-RED flow editor. В редакторе потоков вы увидите пустой лист в центре экрана и несколько доступных узлов в палитре слева.
2. Найдите в палитре узел Inject (в разделе Input). Перетащите его на пустой лист. У этого узла есть кнопка, которая будет отсылать на подключенные узлы метку текущего времени.
3. Найдите в палитре узел Debug (в разделе Output). Перетащите его и разместите рядом с узлом Inject. Этот узел позволяет вам видеть входящие сообщения на вкладке Debug вашего приложения.
4. Свяжите выходной порт узла Inject с входным портом узла Debug. Сообщения с метками времени узла Inject будут направляться на узел Debug. При этом узел Debug отображает текст msg.payload (метка времени) на вкладке Debug (свяжите эти два узла, для чего нажмите на серый квадрат на правой стороне узла Inject и, не отпуская кнопки, переместите курсор к серому квадрату на левой стороне узла Debug)
5. Разверните поток Node-RED, для чего нажмите кнопку Deploy в правом верхнем углу страницы.
Нажмите кнопку на левой стороне узла Inject.

Метка времени момента нажатия отобразится на вкладке Debug, как показано на рисунке ниже.



Добавляем пользовательский узел к палитре


На этом этапе добавляем к палитре узел Ping. Для добавления пользовательского узла редактируем JSON-файл с именем package.json.

1. Возвращаемся в инструментальную панель Bluemix.
2. В левой навигационной панели открываем страницу Files.
3. Перейдите к файлу app/package.json.

Видим файл, который подобен файлу в этом листинге:

{ «name»: «node-red-bluemix», «version»: «0.4.22», «dependencies»: { «when»: "~3.x", «mongodb»: "~1.4.x", «nano»: "~5.11.0", «cfenv»:"~1.0.0", «feedparser»:"~0.19.2", «redis»:"~0.10.1", «node-red»: «0.x», «node-red-bluemix-nodes»:«0.x», «node-red-node-cf-cloudant»:«0.x», «node-red-contrib-scx-ibmiotapp»:«0.x», «node-red-contrib-ibmpush»:«0.x», «node-red-contrib-bluemix-hdfs»:«0.x», «node-red-nodes-cf-sqldb-dashdb»:«0.x» }, «engines»: { «node»: «0.10.x» } }

4. Измените файлы приложения. Вам нужно отредактировать файл app/package.json и добавить запись «node-red-node-ping»:«0.0.6» в список необходимых пакетов в разделе зависимостей этого файла.

Изменить файлы приложения можно двумя способами. Вы можете загрузить приложение, отредактировать файлы локально, а затем передать изменения обратно в среду Bluemix. Вы также можете воспользоваться сервисами IBM DevOpsServices, чтобы отредактировать и развернуть свои изменения непосредственно из веб-браузера.

Чтобы загрузить и отредактировать файлы приложения локально, следуйте инструкциям на странице Start Coding в инструментальной панели Bluemix. На этой странице приведены инструкции по развертыванию приложения с помощью интерфейса командной строки CloudFoundry.

Чтобы воспользоваться сервисами IBM DevOps, следуйте инструкциям в этом учебном пособии. В нем описано, как настроить интеграцию с Git, как передать сделанные изменения в среду и как развернуть их в вашем рабочем пространстве.

Однако если вы выберете способ с редактированием файла package.json, новый файл должен выглядеть следующим образом.



5. Возвращаемся в редактор потока.
6. Обновляем редактор потока, видим, что в нижней части палитры появился новый узел Ping.

Добавляем узел Ping к нашему потоку




1. Перетаскиваем узел Ping на лист в редакторе потока;
2. Дважды нажимаем на этот узел для того, чтобы отредактировать его конфигурацию. Вводим IP-адрес машины, мониторинг которой необходимо осуществить, в поле Target. Указываем для этого узла короткое описательное имя, например, pingmyServer. После этого нажимаем ОК.
3. Наблюдаем за выходом узла Ping, для этого нужно соединить узел Debug с этим выходом.



4. Разворачиваем Node-RED приложение с узлами, которые определены к настоящему моменту. Отладочные сообщения отображаются на вкладке Debug на правой панели рисунка, указанного выше.

Проверяем ping-ответы




В случае успешного прохождения ping-запроса узел Ping возвращает продолжительность его прохождения в свойстве msg.payload. Если от сервера не поступает никакого ответа в пределах 5 секунд, этот узел возвращает значение false. Для проверки значения msg.payload можно настроить узел Function.

1. Найдите раздел Function в своей палитре и перетащите узел Function поблизости к узлу Ping на листе.
2. Свяжите выход узла Ping с входом узла Function.
3. Дважды нажмите на этот узел, чтобы отредактировать его. В поле Name введите текст: is Alive?..

В функциональном блоке добавьте следующий код:

msg.tripTime = msg.payload; msg.payload = msg.payload !== false? «Your server is running»: «Your server is down»; return msg;

4. Нажмите OK, чтобы отредактировать диалог.

Узел Function создаст строку, которая содержит текст «Yourserverisrunning» (Ваш сервер работает), если он получил ответ в пределах 5 секунд, или текст «Yourserverisdown» (Ваш сервер не работает"), если ваш сервер недоступен.
5. Поскольку вы скорее всего не хотите получать новые SMS-сообщения каждые 20 секунд, добавьте к потоку своего приложения узел для обработки исключений.

a. Перетащите узел «ReportbyException» на лист.
b. Дважды нажмите на этот узел и выберите опцию blockunlessvaluechanges.

Теперь сообщения не будут поступать до тех пор, пока свойство msg.payload не будет отличаться от аналогичного свойства предыдущего сообщения.
c. В поле Name для этого узла введите с клавиатуры sendonce.
d. Нажмите OK.

Отправляем SMS-предупреждений с помощью Twilio


На этом этапе почти все готово, осталось лишь добавить к потоку приложения узел Twilio.

1. Спишите свой номер и учетные данные Twilio из учетной записи Twilio, которую вы создали.
a. Откройте страницу Twilio для обмена сообщениями.
b… Нажмите GetyourfirstTwilioNumber. Запомните этот номер SMS-отправителя; например, можете скопировать его в текстовый файл.
c. Нажмите ChoosethisNumber.
d. На странице Twilio для обмена сообщениями найдите и нажмите маленькую ссылку под названием Show API Credentials. Запомните SID-идентификатор и аутентификационныйтокен своей учетной записи; например, скопируйте их в текстовый файл.

2. Вернитесь в редактор потока.
3. Найдите узел Twilio в разделе Output палитры и перетащите его на свой лист.
4. Дважды нажмите на узел Twilio, чтобы сконфигурировать его настройки.

a. В поле Service выберите ExternalService.
b. Нажмите на значок редактирования, чтобы открыть диалоговое окно Addnewtwilio-apiconfignode.
c. В этом диалоговом окне введите SID-идентификатор учетной записи, номер телефона SMS-отправителя и аутентификационныйтокен, которые вы скопировали со страницы обмена сообщениями Twilio.
d. Нажмите Add, чтобы вернуться к диалоговому окну Edit.
e. В поле SMS to введите номер своего мобильного телефона (номер мобильного телефона вашего SMS-получателя).

5. Вполе Name введите: SMS alert to admin инажмите OK.
6. Нажмите Deploy в редакторе потока.



Разворачивание Node-RED-приложения


Нажимаем Deploy в редакторе потока. Все готово. Теперь можно развернуть и использовать приложение для мониторинга своего компьютера или своей сети. Вы, как пользователь приложения, связали стандартные и пользовательские узлы в единый поток, указав свой мобильный телефон в качестве получается SMS-уведомлений.
Поделиться с друзьями
-->

Комментарии (1)


  1. sens_boston
    03.03.2017 04:34
    +1

    А где тут «thing»? Облачный сервис, пингующий ip-адреса, программируемый с помощью GUI-диаграмм и рассылающий SMS — возможно, это и интересно, но к чему был первый абзац и картинка? Почему тогда не о балете, или о покорении космоса?