База знаний Waviot

AMQP API

ID статьи: 87
Последнее обновление: 13 May, 2021

Описание API облачной платформы «Вавиот» с использованием протокола AMQP.


Получение UPLINK-пакетов и статусов отправки DOWNLINK-пакетов

  1. Подключение к брокеру сообщений RabbitMQ

Параметры подключения:

Сервер, предоставляющий API:    amqps://r.waviot.ru (порт 5671)

login: api_guest

pass: waviot

virtual host: /api

exchange name: strij.api

Данные параметры в виде строки подобного вида: amqps:\\api_guest:waviot@r.waviot.ru содержатся в поле rabbit_guest_api_connection JWT-токена WAVIOT_JWT, получаемого в результате авторизации на сервере auth.waviot.ru (Описание авторизации).

  1. Создание очереди, для получения UPLINK-пакетов и статусов отправки DOWNLINK-пакетов.

Необходимо отправить сообщение(метод AMQP-publish), используя routing key: cmd.in.serversoft, содержащее JSON-строку следующего вида:

{

             "msg_type":"create_queue",

             "bind": <строка, описывающая диапазон устройств, на которые выполняется подписка>,

             "api_key": <строка, содержащая один или несколько API_KEY, разделенных запятыми>,

             "max_length": 1000,

             "expires": 60,

             "name": <имя создаваемой очереди>

}

Примеры возможных значений поля bind

 - все устройства, доступные данным API_KEY

#.8158045   - подписка на конкретный ID устройства

#.WRM1470DevKit.# - подписка на все устройства, имеющие hardware type WRM1470DevKit

#.water7.*.* - подписка на все устройства, имеющие protocol type water7

Поле "api_key"  должно содержать один или несколько идентификаторов клиента API_KEY, предоставляющих доступ к устройствам. Идентификатор API_KEY представляет собой строку символов, присваиваемую системой каждому клиенту(компании, которой выполняется отгрузка устройств или лицензий на устройства). Каждый пользователь имеет как минимум один API-KEY, получаемый при регистрации, а также может иметь дополнительные API-KEY, если он состоит в каких-либо компаниях – клиентах платформы Вавиот. Список API_KEY, доступных пользователю, содержится в поле apiKeys JWT-токена WAVIOT_JWT, получаемого в результате авторизации на сервере auth.waviot.ru (Описание авторизации).

Поле "name" – завершающая часть имени создаваемой очереди. Очередь будет создана с именем формата:  guest.<первый api_key>.<name>

  1. Подключение к созданной очереди

Необходимо выполнить подключение(AMQP-declare) к вновь созданной очереди используя следующие параметры:

queue name: guest.<первый api_key>.<name>

Durable: true

Autodelete: true

Passive: true

  1. Получение сообщений

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

Сообщения, содержащие принятый uplink-пакет имеют следующий вид:

{

"msg_type":"ul_app",

"bs_tz":10800,

"dl_mode":"CRX",

"dl_phy":"DL_PSK_FASTDL",

"hw_type":"phobos1_stm",

"iterator":21,

"last_dl_bs":9784,

"last_dl_bs_aver_busyness":28,

"last_dl_bs_busyness":48,

"last_success_dl_ts":1620904162,

"modem_id":8158045,

"payload":"420912609D3EF081890015CC0283890000BE8F8489000052B88168000000BF",

"phy":"UL_DBPSK_3200_PROT_D",

"protocol":"electro5",

"rssi":-102,

"snr":45,

"station_id":9784,

"time_detected":1620907364,

"time_saved":1620907365

}

"modem_id" – ID устройства

"payload" – полезные данные пакета

"hw_type" – hardware type устройства – идентификатор типа  устройства

"protocol" – protocol type устройства – идентификатор протокола прикладного уровня

"dl_mode" – NB-Fi режим работы устройства (NRX, DRX, CRX, OFF)

"station_id" – номер базовой станции, принявшей uplink-пакет

"rssi" - RSSI(мощность) принятого uplink-пакета, дБм

"snr" – SNR(ОСШ) принятого uplink-пакета, дБ

"time_detected" – таймстамп момента приема пакета базовой станцией

"time_saved" – таймстамп момента поступления пакета на сервер  

"phy" - параметр, информирующий о текущей скорости связи по uplink - каналу

"dl_phy" – параметр, информирующий о текущей скорости связи по downlink - каналу

"bs_tz"   -  таймзона базовой станции, принявшей данный пакет

"iterator" – вспомогательный NB-Fi параметр

"last_dl_bs" – номер базовой станции, через которую в последний раз выполнялась отправка downlink-пакета

"last_dl_bs_busyness" - процент загруженности передатчика базовой станции

"last_dl_bs_aver_busyness" – средний процент загруженности передатчика базовой станции

"last_success_dl_ts" – таймстамп последнего успешно доставленного downlink-пакета

Сообщения, содержащие информацию об изменении статуса отправки downlink-пакета, имеют следующий вид:

{

"msg_type":"dl_queued",

"dl_phy":"DL_PSK_5000",

"instance_id":9,

"modem_id":8040809,

"status_id":"609d156554902368f781207a"

}

"modem_id" - ID устройства

"msg_type" – новый статус отправки downlink-пакета, возможные значения:

             "dl_queued" – добавлен в очередь отправки

             "dl_inprocess" – выполняется доставка пакета

             "dl_success" – пакет успешно доставлен

             "dl_fault" – пакет недоставлен

"dl_phy" - параметр, информирующий о текущей скорости связи по downlink – каналу

"status_id" – уникальный идентификатор downlink – пакета


Отправка DOWNLINK-пакетов

  1. Подключение к брокеру сообщений RabbitMQ

Параметры подключения:

Сервер, предоставляющий API:    amqps://r.waviot.ru (порт 5671)

Имя пользователя: api_guest

Пароль: waviot

Virtual host: /api

Данные параметры в виде строки подобного вида: amqps:\\api_guest:waviot@r.waviot.ru содержатся в поле rabbit_guest_api_connection JWT-токена WAVIOT_JWT, получаемого в результате авторизации на сервере auth.waviot.ru (Описание авторизации).

  1. Для отправки downlink-пакета необходимо отправить сообщение(метод AMQP-publish), используя routing key: cmd.in.serversoft, содержащее JSON-строку следующего вида:

{

             "msg_type":"dl ",

             "modem_id": 8040809,

             "payload": "deadbeef01020304",

"status_id": "609d156554902368f781207a",

"priority": 2

             "api_key": <строка, содержащая один или несколько API_KEY, разделенных запятыми>

}

"modem_id" – ID устройства

"payload" – полезные данные пакета

"status_id" – идентификатор пакета, задается пользователем либо может отсутствовать

"priority" – приоритет отправки пакета, возможные значения: 0 – lowest, 1 – low, 2 – medium, 3 – high, 4 – highest

Поле "api_key"  должно содержать один или несколько идентификаторов клиента API_KEY, предоставляющих доступ к устройствам. Идентификатор API_KEY представляет собой строку символов, присваиваемую системой каждому клиенту(компании, которой выполняется отгрузка устройств или лицензий на устройства). Каждый пользователь имеет как минимум один API-KEY, получаемый при регистрации, а также может иметь дополнительные API-KEY, если он состоит в каких-либо компаниях – клиентах платформы Вавиот. Список API_KEY, доступных пользователю, содержится в поле apiKeys JWT-токена WAVIOT_JWT, получаемого в результате авторизации на сервере auth.waviot.ru (Описание авторизации).

Эта статья была:   Полезна | Не полезна
Сообщить об ошибке
ID статьи: 87
Последнее обновление: 13 May, 2021
Ревизия: 5
Просмотры: 0
Комментарии: 0