Содержание


Превратите свой смартфон в IoT-устройство

Создание приложений Bluemix для обработки, визуализации и хранения показаний датчиков, отправляемых и получаемых смартфоном

Comments

В руководстве рассказывается о том, как можно отправлять показания датчиков, сгенерированные вашим смартфоном, в облачную службу IBM Watson IoT Platform, а также как создавать приложения Bluemix™, которые обрабатывают, визуализируют и хранят эти данные. Кроме того, демонстрируется создание приложения для смартфона на базе Android.

В руководство внесены изменения, отражающие новые названия и версии служб. Следующий видеоролик демонстрирует выполнение действий, приведенных в этом руководстве, однако в нем используются старые версии служб с устаревшими именами (служба IBM Watson IoT Platform прежде называлась IBM Internet of Things Foundation).

Общая архитектура:

Chart showing architecture of solution
Chart showing architecture of solution

Что вам потребуется для разработки приложений


 

1

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

В состав шаблона Internet of Things Platform Starter входит механизм Node-RED, который вы будете использовать впоследствии для обработки IoT-сообщений. Сейчас мы создадим службу Internet of Things для отправки MQTT-сообщений на сервер IBM IoT в облаке и получения сообщений с сервера.

  1. Войдите в Bluemix под вашей учетной записью (или зарегистрируйтесь для бесплатного пробного использования).
  2. Выберите Catalog.
  3. Щелкните по Internet of Things Platform Starter.
  4. Укажите имя своего приложения. Это имя будет также использоваться как имя хоста, поэтому оно должно быть уникальным в Bluemix, например, iot<ваше_имя>. В данном примере используется имя iotdemodaniel4.Screen capture of the Create an app dialog
  5. Нажмите кнопку Create.
  6. На панели инструментов выберите Dashboard и щелкните по созданному приложению (Cloud Foundry или CF APP).
  7. Щелкните по кнопке Add a Service or API.
  8. В левой навигационной области выберите Internet of Things для фильтрации списка доступных служб. Выберите службу Internet of Things Platform. Screen capture that shows the Internet of Things filter and the Internet of Things Platform Service selected
    Screen capture that shows the Internet of Things filter and the Internet of Things Platform Service selected
  9. Оставьте значения по умолчанию и нажмите кнопку CREATE.
  10. В появившемся сообщении щелкните по кнопке Restage. Ваше приложение будет обновлено.
2

Добавление устройства, которое будет отправлять MQTT-сообщения на сервер IoT

  1. На панели Bluemix Dashboard выберите свое приложение и щелкните по новой службе.
  2. На странице службы щелкните по кнопке Launch Dashboard. Screen capture that shows the service page with the Launch dashboard button highlighted
    Screen capture that shows the service page with the Launch dashboard button highlighted

    Появится панель сервера IBM Internet of Things — службы, независимой от Bluemix. Вашему приложению присваивается идентификатор организации Organization ID, который вам потребуется позже при разработке мобильного приложения. На следующем рисунке идентификатор организации имеет значение 1xuhbp и отображается под вашим логином в правом верхнем углу панели.

    Screen capture of the service on the IBM Internet of Things Platform server and the organization ID highlighted
    Screen capture of the service on the IBM Internet of Things Platform server and the organization ID highlighted
  3. В левом меню, которое всплывает при наведении на него указателя мыши, выберите Devices. Затем щелкните по Add a device и нажмите кнопку Create device type. В вашей организации может быть много типов устройств, в каждом из которых может быть много устройств. Тип устройства — это группа устройств с общими характеристиками; например, у них могут быть одинаковые датчики. В нашем случае тип устройства должен иметь имя Android (этот тип устройств необходим приложению, которое вы будете использовать позже).Screen capture of the Create Device Type dialog
    Screen capture of the Create Device Type dialog
  4. Нажмите кнопку Next. Появится страница, на которой вы сможете указать такие сведения о своем устройстве, как серийный номер или модель. В этой демонстрации вводить такую информацию не нужно, просто нажмите кнопку Next. Также нет необходимости указывать какую-либо метаинформацию. Нажимайте кнопку Next, пока не вернетесь в диалоговое окно Add Device.
  5. Нажмите кнопку Next. Укажите идентификатор устройства. Идентификатором устройства может быть, например, MAC-адрес вашего смартфона. Но он должен быть уникальным для вашей организации. Поэтому можно указать, как в этом примере, что-нибудь типа "112233445566".
  6. Оставьте поле Meta Data пустым и нажмите кнопку Next. Оставьте поле Authentication token пустым и нажмите кнопку Next.
  7. Укажите значение токена аутентификации. Запомните это значение, оно вам понадобится позже. Нажмите Next.Screen capture showing authentication token
    Screen capture showing authentication token
  8. Нажмите Add.

    На экране появится сгенерированное устройство.

    Screen capture showing authentication token
    Screen capture showing authentication token
  9. Закройте это диалоговое окно.

Теперь вы можете отправлять MQTT-сообщения с устройства на сервер IBM IoT.

3

Установка и конфигурирование приложения для Android

Мы будем использовать приложение IoT Starter for Android для чтения и отправки показаний датчика на вашем смартфоне. Исходный код и документацию для этого приложения можно получить в проекте IoT Starter for Android в GitHub.

Если у вас есть опыт разработки под Android, вы можете загрузить код из GitHub, импортировать в свою среду разработки и затем создать apk-файл. В противном случае, чтобы быстро установить и запустить приложение, выполните следующие действия.

  1. Зайдите в своем телефоне в меню Settings > Security (Настройки > Безопасность). От имени администратора устройства разрешите установку приложений из неизвестных источников — поставьте отметку в поле Unknown sources (Неизвестные источники). Теперь вы можете устанавливать файлы .apk не только из Google Play.
  2. Откройте браузер в своем телефоне и введите следующий URL-адрес:

    https://ibm.box.com/v/iotstarterapp

    Вы будете перенаправлены на сайт https://m.box.com и к файлу iot-starter_501.apk.

    Screen capture that shows the .apk file in a browser window to download and install
  3. Нажмите Download.
  4. С помощью файлового менеджера (например, приложение ES File Explorer, доступное для загрузки из Google Play) найдите файл в каталоге Downloads.
  5. В этом каталоге щелкните по файлу iot-starter_501.apk. Нажмите Install (Установить). Screen capture showing apk file

    Теперь приложение IoT Starter установлено на вашем устройстве на базе Android.

    Примечание: этот файл .apk скомпилирован для Android версии 5.0.1.

Затем вам нужно сконфигурировать свое приложение для Android.

  1. Запустите приложение IoT Starter.
  2. Укажите следующие параметры:
    • Organization: Идентификатор организации, который выводился на сервере IBM IoT (он был указан в начале этапа "Добавление устройства, которое будет отправлять MQTT-сообщения на сервер IoT"). В данном руководстве этот идентификатор имеет значение y6spgy.
    • Device ID: Идентификатор устройства, который вы указали в конце этапа "Добавление устройства, которое будет отправлять MQTT-сообщения на сервер IoT". В данном руководстве этот параметр имеет значение 112233445566.
    • Auth Token: Токен авторизации, который вы указали на этапе "Добавление устройства, которое будет отправлять MQTT-сообщения на сервер IoT."
    Screen capture that shows the configuration parameters for your Android app
  3. Нажмите кнопку Activate Sensor. Теперь приложение собирает показания датчика ускорения в вашем смартфоне и отправляет эти данные на сервер IBM IoT. Приложение отображает данные акселерометра и количество переданных или полученных сообщений. Screen capture of the accelerometer data from the running Android app
4

Проверка отправки сообщений со смартфона на сервер IoT

  1. Откройте на компьютере страницу сервера IBM IoT для вашей организации (см. начало этапа "Добавление устройства, которое будет отправлять MQTT-сообщения на сервер IoT").
  2. На вкладке Devices отображается ваше устройство на базе Android.Screen capture of the Devices tab that lists the Android device
    Screen capture of the Devices tab that lists the Android device
  3. Щелкните по идентификатору устройства. Появится всплывающее окно с сообщениями, поступающими с вашего устройства. Щелкните по событию, чтобы увидеть подробные сведения. Screen capture that shows the pop-up window with the incoming messages from the Android device
    Screen capture that shows the pop-up window with the incoming messages from the Android device

    Сообщения с вашего смартфона отправляются в формате JSON. Они содержат данные об ускорении и позиции.

Теперь вы можете работать с данными сообщений в Bluemix.

5

Обработка сообщений в потоке Node-RED

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

Node-RED — это визуальный инструмент, упрощающий передачу и обработку сообщений в Интернете вещей.

  1. Откройте Bluemix, выберите Dashboard и на панели Bluemix Dashboard убедитесь в том, что ваше приложение Bluemix IoT (созданное на этапе 1) выполняется.
  2. Откройте в браузере страницу <имя_вашего_приложения>.mybluemix.net, где <yourappname> — это имя вашего приложения Bluemix IoT, созданного на шаге 1. В редакторе Node-RED для вашего приложения Bluemix щелкните по кнопке Go to your Node-RED flow editor.
  3. Откроется редактор с примером потока.Screen capture showing sample flow
    Screen capture showing sample flow

    Используя в редакторе метод drag-and-drop, вы можете конструировать поток сообщений. Хотя вы можете создать свой собственный поток самостоятельно, мы импортируем приведенный ниже код. Но сначала выберите все существующие узлы и удалите их, нажав клавишу Delete.

  4. Скопируйте следующий код (как одну длинную строку) и вставьте его в текстовый редактор. Чтобы получить этот код в форматированном виде, можно загрузить его как текстовый файл со страницы https://ibm.box.com/v/iotstarterNodeRedCode.
    [{"id":"215c6601.12d32a","type":"ibmiot in","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"","applicationId":"","deviceType":"","eventType":"accel","commandType":"","format":"json","name":"IBM IoT App In","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":true,"allEvents":"","allCommands":"","allFormats":"","x":264.1999969482422,"y":434.1999969482422,"z":"dc6a0ca6.7993b","wires":[["ce21edbb.320628","fdfdaaa2.a45678"]]},{"id":"ce21edbb.320628","type":"function","name":"calc color","func":"var accelZ = msg.payload.d.acceleration_z;\nvar r = 0.0;\nvar b = 0.0;\nvar g = 0.0;\nif (accelZ > 0) {\n\tg = Math.round(accelZ * 25);\n} else if (accelZ < 0) {\n\tr = 255.0;\n} else {\n\tr = 104;\n\tg = 109;\n\tb = 115;\n}\na = 1.0;\n\nmsg.eventOrCommandType = \"color\";\nmsg.payload = JSON.stringify({\"d\":{\"r\":r,\"b\":b,\"g\":g,\"alpha\":a}});\n\nreturn msg;","outputs":1,"noerr":0,"x":437.1999969482422,"y":430.1999969482422,"z":"dc6a0ca6.7993b","wires":[["9df37edb.5d4588"]]},{"id":"9df37edb.5d4588","type":"ibmiot out","authentication":"boundService","apiKey":"","outputType":"cmd","deviceId":"112233445566","deviceType":"Android","eventCommandType":"text","format":"json","data":"{\"d\":{\"value\":\"text\"}}","name":"IBM IoT App Out","service":"registered","x":629.1999969482422,"y":443.1999969482422,"z":"dc6a0ca6.7993b","wires":[]},{"id":"fdfdaaa2.a45678","type":"debug","name":"","active":false,"console":"false","complete":"false","x":442.1999969482422,"y":364.1999969482422,"z":"dc6a0ca6.7993b","wires":[]}]
  5. В текстовом редакторе убедитесь в том, что весь код находится в одной строке. Удалите все разрывы строк. Скопируйте эту строку кода в буфер обмена.
  6. В редакторе Node-RED нажмите Ctrl-I, чтобы открыть диалоговое окно Import Nodes. Вставьте код и нажмите OK.Screen capture of the Import Nodes dialog
    Screen capture of the Import Nodes dialog
  7. Теперь вам нужно адаптировать поток к вашим конкретным параметрам. Единственным значимым параметром является Device ID. Дважды щелкните по узлу IBM IoT App out. Во всплывающем окне введите идентификатор устройства, который вы использовали ранее (например, 112233445566), и нажмите OK.
  8. В редакторе потока щелкните по кнопке Deploy. Поток будет развернут и должен немедленно стать активным.
  9. Перемещайте смартфон, переворачивая и наклоняя его. Фон приложения в вашем телефоне должен менять свой цвет в зависимости от ориентации оси Z.
  10. В редакторе Node-RED щелкните по прямоугольнику рядом с узлом msg.payload, затем щелкните по вкладке debug для выполнения отладки. Вы должны увидеть сообщения, которые отправляются с вашего телефона. Данные передаются в формате JSON. Screen capture of msg.payload node in the the Node-RED editor and the debug tab that shows messages
    Screen capture of msg.payload node in the the Node-RED editor and the debug tab that shows messages
  11. Исследуйте поток, дважды щелкнув по узлу calc color. Этот узел вычисляет значения red, green и blue на базе входящих значений z-ускорения и отправляет результаты вычислений как данные JSON.Screen capture of the Edit function node that shows the code for changing the color of the background on the smartphone

Теперь у вас есть двусторонний обмен данными между вашим смартфоном и вашим первым приложением Bluemix.

6

Создание приложения Bluemix для визуализации показаний датчика

На этом этапе вы создадите в Bluemix дополнительное приложение, получающее сообщения от вашего смартфона (который теперь стал IoT-устройством) и визуализирующее эти данные.

  1. Загрузите файл iot-visualization-0.2.0.zip из проекта iot-visualization в Github. Распакуйте этот архив.
  2. Откройте Bluemix и выберите Dashboard.
  3. Нажмите кнопку Create App.
  4. Выберите WEB как тип приложения.
  5. Выберите SDK for Node.js.
  6. Щелкните по кнопке Continue и укажите имя приложения. Как и прежде, имя должно быть уникальным в Bluemix, поскольку используется как имя хоста. Введите что-нибудь типа iotvisualizer<ваше_имя> и нажмите Finish.
  7. Через несколько секунд вы должны получить сообщение Your app is running.
  8. В каталоге, куда вы распаковали архив iot-visualization-0.1.0.zip, найдите файл manifest.yml и откройте его в текстовом редакторе. Измените параметры host и name на выбранное вами имя приложения. Сохраните файл.Screen capture of the host and name parameters in the manifest.yml file
  9. Откройте окно командной строки и перейдите в каталог, куда вы распаковали архив iot-visualization-0.1.0.zip.
  10. Выполните следующие команды Cloud Foundry:
    cf api https://api.ng.bluemix.net
    cf login -u <your_bluemix_login_id>

    Команда cf login необходима только при первом использовании инструмента командной строки cloud foundry. Вам также может потребоваться ввести свой пароль в Bluemix. Если у вас больше одной организации Bluemix (в отличие от установок по умолчанию), то вам нужно будет выбрать одну из них.
  11. Разверните приложение в Bluemix, выполнив следующую команду:

    cf push <your_application_name>

    Эта команда берет параметры из файла manifest.yml и затем загружает код в Bluemix. Через некоторое время вы должны увидеть примерно такое сообщение:

    OK

    App <your app name> was started using this command 'node app.js'.

  12. На панели Bluemix Dashboard откройте страницу Overview для вашего приложения. Щелкните по кнопке Bind a service or API.Screen capture of the service overview page and the Bind a Service or API button highlighted
    Screen capture of the service overview page and the Bind a Service or API button highlighted
  13. Выберите службу Internet of Things, которую вы определили на этапе "Создание IoT-приложения в Bluemix". Нажмите Restage для обновления приложения. Теперь приложение может получать сообщения с сервера IBM IoT.
  14. Для проверки приложения визуализации откройте в браузере страницу http://<your app name>.mybluemix.net
  15. В раскрывающемся меню Device выберите идентификатор вашего устройства.Screen capture of the IoT visualization app with the device selected and the sensor data displayed in a line chart
    Screen capture of the IoT visualization app with the device selected and the sensor data displayed in a line chart

Заключение

В этом руководстве описано, как можно легко превратить смартфон в датчик, подключить его к серверу IBM Internet of Things, а затем отправлять и получать данные. Вы также узнали, как обрабатывать и визуализировать получаемые с устройства данные в Bluemix. Эти два приложения демонстрируют эффективность Bluemix в приложениях Интернета вещей. Единственное, что вам требуется, — ваш смартфон.


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


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Internet of Things
ArticleID=1038882
ArticleTitle=Превратите свой смартфон в IoT-устройство
publish-date=08292016