Примеры использования

Рассмотрим несколько примеров реализации IoT-проектов на нашей платформе.

Скажем, вы захотели управлять климатическим устройством через мобильное приложение (написанное вами, либо, сгенерированное на основе нашего инструментария):

_images/scheme2.png

Изменив какой-либо параметр (установку поддерживаемой в комнате температуры, например), с смартфона пользователя посылается сообщение на нашу платформу, где ставится в очередь команд конкретного устройства. С другой стороны, климатическое устройство опрашивает систему на предмет событий (подключившись по websocket или используя long-polling), и как только от системы приходит ответ, что есть новая команда - меняет соответсвующий режим работы и отправляет обратно потверждение о выполнении. Команда в очереди помечается как выполненная и снимается, оповещая мобильное устройство о наличии результата. По желанию, можно задать триггер, который бы срабатывал при выполнении команды и отправлял оповещение на e-mail пользователя или по sms.

Или другой случай - вы хотите удалённо что-то вызывать или запускать с внешнего сервиса, используя кнопку, и чтобы результат сопровождался цветовой индикацией:

_images/scheme3.png

Здесь триггер становится уже неотъемлемой частью реализации - поставленное в последовательность нажатие кнопки вызовет его активацию и он отправит POST-запрос на внешний сервер нужного сервиса. Сервер отвечает некой информацией, которую триггер в памяти разбирает и формирует одну или несколько команд, которые ставятся в соответствующие очереди. В примере, на иллюстрации выше, сформированная команда выглядит так:

{
    "status": "success",
    "data": {
        "queue_pk": {
            "service_id": "98413af7-93f3-45d2-bbd4-b9b8d75cb062",
            "scope": "device_data",
            "owner_entity_id": "e1f550d5-3194-44a2-be14-c4b472342811",
            "name": "main",
            "execution_point": null,
            "length": 0,
            "first_command_id": null,
            "last_command_id": null
        },
        "id": 1491569594.465,
        "command": "blink",
        "payload": {
            "color": "green",
            "duration": 5
        },
        "state": "queued",
        "state_changed_at": 1491569594.465,
        "command_result": null
    }
}

Здесь мы видим: ID это номер команды, command содержит имя действия: blink, в payload аргументы действия, в данном случае: color (green или red) и duration.

Если не предусмотрена отправка sms-уведомлений от внешнего сервиса, её можно настроить через тот же триггер у нас в платформе.

Вернёмся к климатическому устройству из первого примера. Как известно, такие приборы работают на основе показаний с датчиков, в данном случае это температура, влажность и CO2. С помощью CPS Platform получать показания можно не только с экрана устройства, но и с мобильного приложения или из личного кабинета пользователя:

_images/scheme4.png

Каждый датчик отправляет сообщения в свою последовательность в CPS Platform. На любую такую очередь можно ставить триггеры, срабатывающие при определённых показаниях или фильтры, сглаживающие поступаемые данные. Мобильное приложение или личный кабинет “подцепляют” данные очереди и опрашивают на изменение состояния, затем выводят данные в удобной для пользователя форме.