Содержание


Наблюдение за мобильными устройствами с помощью службы Geospatial Analytics

Создание приложения для контроля местоположения в режиме реального времени с помощью службы Geospatial Analytics и Node.js на платформе IBM Bluemix

Comments

«Интернет вещей» уже соединяет миллиарды устройств и прогнозы предсказывают резкий рост их числа в ближайшие годы. Многие из этих устройств, в частности, смартфоны и автомобили, перемещаются в пространстве. Осведомленность о местонахождении таких устройств открывает захватывающие новые возможности приложений. Для поддержки этих новых приложений требуются высоко масштабируемые службы, способные в режиме реального времени анализировать большие объемы данных.

С помощью службы Geospatial Analytics в IBM Bluemix™ можно следить за перемещением устройств через «Интернет вещей». Эта служба контролирует местоположение устройств в режиме реального времени по отношению к одной или нескольким географическим областям. Geospatial Analytics можно использовать в качестве конструктивного блока в приложениях, предназначенных для самых разных целей. Например, торговая сеть может наблюдать за потенциальными покупателями в окрестностях своих магазинов и рассылать им рекламу посредством push-уведомлений или твитов. Geospatial Analytics также можно использовать для обнаружения автомобилей, въезжающих в район, которого следует избегать из-за аварии, погодных условий или других временных обстоятельств.

В этом руководстве объясняется, как получить, запустить и расширить простое приложение Node.js (написанное с помощью SDK для Node.js), использующее службу Geospatial Analytics. В приложении geo-starter используются:

  • демонстрационный MQTT-брокер, который имитирует сведения об устройстве для окрестностей Лас-Вегаса (штат Невада);
  • REST API службы Geospatial Analytics для организации подписки на сообщения с темой MQTT от демонстрационного MQTT-брокера. Такая подписка позволяет службе получать сообщения, содержащие сведения о текущем местоположении каждого устройства;
  • интерфейс API REST службы для определения трех контролируемых географических областей. Две из них определены только для того, чтобы инициировать события, когда устройство входит в область. Третья инициирует события, когда устройство входит в область или покидает ее.

Служба анализирует местоположение каждого устройства относительно указанных географических областей и возвращает в MQTT событие, когда устройство пересекает границу географической области. Приложение geo-starter обрабатывает события и отображает их в списке событий, как показано на следующей блок-схеме.

Блок-схема приложения geo-starter
Блок-схема приложения geo-starter

Geospatial Analytics открывает безграничные возможности для создания новых приложений с использованием местоположения в Интернете вещей.

Что нужно для создания приложения

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

Шаг 1. Создание приложения в Bluemix и привязка к нему службы Geospatial Analytics

  1. Войдите в Bluemix. На панели управления нажмите кнопку CREATE AN APP. Выберите SDK for Node.js из каталога доступных сред исполнения. Введите имя приложения и хоста и нажмите кнопку CREATE.
  2. На странице приложения нажмите кнопку ADD A SERVICE. Выберите из каталога службу Geospatial Analytics (под строкой Big Data) и нажмите кнопку CREATE, чтобы привязать ее к своему приложению.

Шаг 2. Получение экземпляра исходного кода

Код приложения geo-starter хранится в проекте streamscloud | geostarter на сайте DevOps Services. Чтобы получить экземпляр, клонируйте git-репозиторий или скопируйте код в свой собственный проект DevOps Services. Тем, кто не знаком ни с одним из этих методов, следующие инструкции помогут создать ZIP-файл исходного кода и загрузить его на свою рабочую станцию.

  1. Нажмите кнопку Получить код в начале этого руководства.
  2. В проекте streamscloud | geostarter нажмите кнопку EDIT CODE. Введите учетные данные DevOps Services, если вы еще не вошли в систему.
  3. В дереве исходного кода слева выделите корень (streamscloud | geostarter) и выберите из меню File >Export > Zip. Экспорт кода проекта в виде ZIP-файла
    Экспорт кода проекта в виде ZIP-файла
  4. Сохраните экспортированный файл локально и распакуйте его.
  5. Переименуйте каталог, содержащий извлеченные файлы, в соответствии с именем приложения, созданного на шаге 1.

Шаг 3. Развертывание приложения

Теперь можно развернуть простое приложение без каких-либо изменений кода. Позже мы настроим это приложение и развернем его повторно.

  1. Из командной строки ОС перейдите в каталог, содержащий извлеченные файлы приложения:
    cd myapp
  2. Выполните следующие команды, чтобы подключить к Bluemix экземпляр Cloud Foundry:
    cf api https://api.ng.bluemix.net
    cf login
  3. Разверните приложение:
cf push myapp

Шаг 4. Просмотр работающего приложения

  1. В Bluemix выберите маршрут своего приложения, чтобы открыть его. Вы увидите начальную веб-страницу с заголовком Добро пожаловать в базовое приложение Geospatial Analytics!. Страница приветствия
    Страница приветствия
  2. В различных разделах этой страницы можно увидеть состояние и результаты работы приложения:
    • в разделе Application Flow перечислены действия, выполняемые приложением, и указано его состояние;
    • в разделе Event List отображается список событий, создаваемых службой Geospatial Service, которые получает ваше приложение.
  3. На той же веб-странице нажмите на ссылку geo-starter Visualizer. Открывшаяся страница демонстрирует карту текущего местоположения устройств и контролируемых географических областей. Страница визуализации
    Страница визуализации
  4. Вернитесь в Bluemix и откройте панель управления службы Geospatial Analytics. Это можно сделать разными способами, в том числе, щелкнув на значке Geospatial Analytics в вашем приложении. Значок службы
    Панель мониторинга отображает текущее состояние службы и ее параметры, такие как число полученных от MQTT сообщений устройств и число событий, созданных службой.

Шаг 5. Разбор исходного кода

Приложение gео-starter – это простое готовое приложение, для запуска которого не требуется никакая настройка. Чтобы понять, как оно устроено, рассмотрим код приложения.

  1. Чтобы понять логику приложения, откройте файл app.js. Код организован вокруг пяти основных действий, выполняемых приложением, в такой последовательности:
    1. Получение сведений о среде, необходимых для использования API REST Geospatial Analytics.
    2. Запуск службы Geospatial Analytics и ее подключение к демо-серверу MQTT.
    3. Создание трех географических областей, за которыми следит служба.
    4. Обработка событий, генерируемых при пересечении устройствами границ этих областей.
    5. Остановка службы Geospatial Analytics после целевого события.
  2. Рассмотрим подробнее процесс получения реквизитов доступа службы Geospatial Analytics. Как и в случае других служб и дополнений Bluemix, реквизиты доступа и URL-адрес службы Geospatial Analytics извлекаются из переменной среды исполнения VCAP_SERVICES.

    Вот пример сведений о среде, которые возвращает служба Geospatial Analytics:

    {
      "Geospatial Analytics": {
        "name": "Geospatial Analytics",
        "label": "Geospatial Analytics",
        "plan": "Free",
        "credentials": {
          "geo_host": "streams.mybluemix.net",
          "geo_port": 443,
          "start_path": "/jax-rs/geo/start/service_instances/xxxx/service_bindings/xxxx",
          "stop_path": "/jax-rs/geo/stop/service_instances/xxxx/service_bindings/xxxx",
          "restart_path": "/jax-rs/geo/restart/service_instances/xxxx/service_bindings/xxxx",
          "add_region_path": "/jax-rs/geo/addRegion/service_instances/xxxx/service_bindings/xxxxx",
          "remove_region_path": "/jax-rs/geo/removeRegion/service_instances/xxxx/service_bindings/xxxx",
          "status_path": "/jax-rs/geo/status/service_instances/xxxx/service_bindings/xxxx",
          "dashboard_path": "/jax-rs/dashboard/xxxx",
          "userid": "xxxxx",
          "password": "xxxxx"
        }
      }
    }

    Подраздел credentials несет в себе всю информацию, необходимую для использования REST API службы. В нем указаны хост и порт для API. Приведены пути для каждой из операций API. Наконец, указаны значения userid и password, которые нужно передавать при каждом вызове API.
  3. Рассмотрим код вызова операции start REST API службы. Вот фрагмент этого кода:
    jsonObject = JSON.stringify({
            "mqtt_uri" :  "mqtt1.m2m4connectedlife.com:1883",
            "mqtt_input_topics" : "iot-2/cars/#",
            "mqtt_notify_topic" : notify_topic_string,
            "device_id_attr_name" : "ID",
            "latitude_attr_name" : "lat",
            "longitude_attr_name" : "lon"
    });

    Параметры конфигурации для вызова start содержатся в объекте JSON. Эти параметры описывают URI MQTT и темы, на которые должна быть подписана служба. Кроме того, указана переменная, содержащая тему, в которой служба должна публиковать события, связанные с географическим местоположением. Наконец, в коде описаны атрибуты сообщения устройства, которые служба должна использовать для его идентификации и определения его местоположения.
  4. Рассмотрим код для добавления контролируемых областей с помощью операции addRegion в REST API службы. Вот фрагмент:
    jsonObject = JSON.stringify({
            "regions" : [
              {
               "region_type" : "regular",
               "name" : "Promo Zone 1",
               "notifyOnExit" : "false",
               "center_latitude" : "36.121",
               "center_longitude" : "-115.224",
               "number_of_sides" : "10",
               "distance_to_vertices" : "850"
              },
              {
               "region_type" : "regular",
               "name" : "Promo Zone 2",
               "notifyOnExit" : "false",
               "center_latitude" : "36.121",
               "center_longitude" : "-115.101",
               "number_of_sides" : "10",
               "distance_to_vertices" : "750"
              },
              {
               "region_type" : "custom",
               "name" : "Tracking Path",
               "notifyOnExit" : "true",
               "polygon" : [
       {"latitude" : "36.135795", "longitude" : "-115.148584"},
    {"latitude" : "36.134096", "longitude" : "-115.148584"},
    {"latitude" : "36.133247", "longitude" : "-115.147254"},
    {"latitude" : "36.131427", "longitude" : "-115.147254"},
    {"latitude" : "36.131427", "longitude" : "-115.148327"},
    {"latitude" : "36.132849", "longitude" : "-115.148327"},
    {"latitude" : "36.133698", "longitude" : "-115.149657"},
    {"latitude" : "36.135795", "longitude" : "-115.149657"}
               ]
              },
            ]
          });

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

Шаг 6. Настройка и расширение приложения

Теперь, когда вы знакомы с базовым приложением, можно попробовать изменить исходный код различными интересными способами:

  • чтобы приложение работало дольше, можно изменить значение переменной event_target со 100 на какое-нибудь большее число;
  • добавить или изменить географические области, контролируемые службой, изменив параметры, передаваемые операции addRegion REST API службы;
  • принять те или иные меры при получении события, связанного с местоположением. Например, можно расширить приложение так, чтобы при входе устройства в контролируемую область оно отправляло ему push-уведомление;
  • переключиться на другой источник данных MQTT. Если у вас есть свой собственный источник данных MQTT, то можно изменить параметры, передаваемые операции start REST API службы, в соответствии с этим источником.

Чтобы изменить приложение, выполните следующие действия.

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

Заключение

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


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


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения, Облачные вычисления, Information Management
ArticleID=1016983
ArticleTitle=Наблюдение за мобильными устройствами с помощью службы Geospatial Analytics
publish-date=10072015