Содержание


Создаем первое IoT-приложение

С помощью инструмента Node-RED и сервиса Twilio создаем на платформе Bluemix приложение для мониторинга удаленных серверов или распределенной сети

Comments

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

В этой статье описано, как настроить рабочее пространство IBM Bluemix, как создать демонстрационное приложение с помощью инструмента Node-RED и как успешно отослать SMS-сообщение из этого приложения на свой мобильный телефон с помощью сервиса Twilio.

Если вы готовы приступить к программированию для IoT, это учебное пособие поможет вам начать с создания IoT-приложения, которое автоматически уведомляет удаленного пользователя, если его компьютер или его сеть не функционируют. Мы будем использовать следующие технологии.

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

Что вам потребуется для создания IoT-приложения pingGo

Наше демонстрационное приложение pingGo с помощью ping-запросов отслеживает состояние машин, непрерывно проверяя их сетевые и машинные порты. Если в работе машины происходит сбой, приложение pingGo уведомляет об этом зарегистрированного пользователя с помощью SMS-сообщения. IoT-приложения такого типа полезны для любого технического пользователя, которому требуется контролировать ответственные удаленные серверы или распределенные компьютерные сети. Они позволяют предупредить пользователя о необходимости принятия мер в случае нештатной ситуации.

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

  • Учетная запись Bluemix (бесплатный пробный доступ можно запросить по данной ссылке)
  • Учетная запись IBM DevOps Services (необязательно)
  • Учетная запись Twilio. При регистрации в системе вам будет предложено ввести ваш номер мобильного телефона (чтобы удостовериться, что вы являетесь человеком). Впоследствии вы будете использовать этот номер в качестве получателя для SMS-сообщений из своего демонстрационного приложения (SMS-получатель).
  • Номер мобильного телефона для получения SMS-уведомлений.
  • Знакомство с программированием на JavaScript.

Запустить приложениеПолучить программный код

1

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

  1. Войдите в систему под своей учетной записью Bluemix или зарегистрируйтесь для создания бесплатной учетной записи). Убедитесь в том, что ваше рабочее пространство dev создано.
  2. Откройте страницу своего профиля и убедитесь в том, что активный регион настроен правильно. Вы можете развернуть свое приложение в любом из существующих регионов Bluemix - выбор региона не имеет значения. Я разверну свое приложение в регионе Europe United Kingdom, однако вы можете развернуть свое приложение в одном из двух других регионов. Например, если вы предпочитаете регион US South, измените префикс региона в параметрах настройки приложения в своем профиле.
  3. Найдите и выберите сервис Node-RED Starter в каталоге.
  4. Введите для своего приложения уникальное имя, которое автоматически специфицирует его имя хоста, а затем нажмите Create.

    Возможно, вам придется подождать несколько секунд, прежде чем вы увидите следующее сообщение: Your app is running. http://YourAppName.eu-gb.mybluemix.net.

    Если вы получили сообщение об ошибке вида: Error: Lost connection to server, убедитесь в том, что вы используете HTTPS-соединение. При этом ваш URL-адрес должен выглядеть примерно следующим образом: https://pinggo.eu-gb.mybluemix.net/red/.

2

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

Мы начнем работу с 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 в правом верхнем углу страницы.
  6. Нажмите кнопку на левой стороне узла Inject.

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

    Рисунок 1. Схема последовательности операций для приложения с двумя узлами
3

Добавление пользовательского узла к палитре

Теперь вам необходимо добавить к палитре узел Ping. Чтобы добавить пользовательский узел, можно отредактировать JSON-файл с именем package.json.

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

    Вы увидите файл, подобный файлу в следующем листинге.

    Листинг 1. 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 DevOps Services, чтобы отредактировать и развернуть свои изменения непосредственно из веб-браузера.

    • Чтобы загрузить и отредактировать файлы приложения локально, следуйте инструкциям на странице Start Coding в инструментальной панели Bluemix. На этой странице приведены инструкции по развертыванию приложения с помощью интерфейса командной строки Cloud Foundry.
    • Чтобы воспользоваться сервисами IBM DevOps, следуйте инструкциям в этом учебном пособии. В нем описано, как настроить интеграцию с Git, как передать сделанные изменения в среду и как развернуть их в вашем рабочем пространстве.

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

  5. Вернитесь в редактор потока.
  6. Обновите редактор потока. В нижней части вашей палитры появился новый узел Ping:
4

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

  1. В редакторе потока перетащите узел Ping на лист.
  2. Дважды нажмите на этот узел, чтобы отредактировать его конфигурацию. Введите IP-адрес машины, мониторинг которой вы хотите осуществлять, в поле Target. Укажите для этого узла короткое описательное имя, например, ping myServer. Затем нажмите OK.
  3. Наблюдайте за выходом узла Ping, для чего соедините узел Debug с этим выходом.
  4. Разверните свое Node-RED-приложение с узлами, которые вы определили к настоящему моменту. Отладочные сообщения отображаются на вкладке Debug на правой панели Рисунок 1).
5

Проверка ping-ответов

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

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

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

    Листинг 2. Редактирование кода узла Function
     msg.tripTime = msg.payload; msg.payload = msg.payload !== false ? "Your server is running": "Your server is down"; return msg;
  4. Нажмите OK, чтобы отредактировать диалог.

    Узел Function создаст строку, которая содержит текст "Your server is running" (Ваш сервер работает), если он получил ответ в пределах 5 секунд, или текст "Your server is down" (Ваш сервер не работает"), если ваш сервер недоступен.

  5. Поскольку вы скорее всего не хотите получать новые SMS-сообщения каждые 20 секунд, добавьте к потоку своего приложения узел для обработки исключений.
    1. Перетащите узел "Report by Exception" на лист.
    2. Дважды нажмите на этот узел и выберите опцию block unless value changes.

      Теперь сообщения не будут поступать до тех пор, пока свойство msg.payload не будет отличаться от аналогичного свойства предыдущего сообщения.

    3. В поле Name для этого узла введите с клавиатуры send once.
    4. Нажмите OK.
6

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

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

  1. Спишите свой номер и учетные данные Twilio из учетной записи Twilio, которую вы создали.
    1. Откройте страницу Twilio для обмена сообщениями.
    2. Нажмите Get your first Twilio Number. Запомните этот номер SMS-отправителя; например, можете скопировать его в текстовый файл.
    3. Нажмите Choose this Number.
    4. На странице Twilio для обмена сообщениями найдите и нажмите маленькую ссылку под названием Show API Credentials. Запомните SID-идентификатор и аутентификационный токен своей учетной записи; например, скопируйте их в текстовый файл.
  2. Вернитесь в редактор потока.
  3. Найдите узел Twilio в разделе Output палитры и перетащите его на свой лист.
  4. Дважды нажмите на узел Twilio, чтобы сконфигурировать его настройки.
    1. В поле Service выберите External Service.
    2. Нажмите на значок редактирования, чтобы открыть диалоговое окно Add new twilio-api config node.
    3. В этом диалоговом окне введите SID-идентификатор учетной записи, номер телефона SMS-отправителя и аутентификационный токен, которые вы скопировали со страницы обмена сообщениями Twilio.
    4. Нажмите Add, чтобы вернуться к диалоговому окну Edit.
    5. В поле SMS to введите номер своего мобильного телефона (номер мобильного телефона вашего SMS-получателя).
  5. В поле Name введите: SMS alert to admin и нажмите OK.
  6. Нажмите Deploy в редакторе потока.

На следующем рисунке показан итоговый вид потока вашего приложения.

Рисунок 2. Итоговый вид потока приложения
7

Развертывание вашего Node-RED-приложения

Нажмите Deploy в редакторе потока.

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

Заключение

Из этого учебного пособия вы узнали, насколько легко создать IoT-приложение с помощью Node-RED, Bluemix и Twilio. Вы связали стандартные и пользовательские узлы в поток приложения, а затем развернули приложение, указав свой мобильный телефон в качестве получателя SMS-предупреждений.

Какое IoT-приложение вы создадите теперь?


Ресурсы для скачивания


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления
ArticleID=1039369
ArticleTitle=Создаем первое IoT-приложение
publish-date=11022016