Описание API облачной платформы «Вавиот» с использованием протокола AMQP.
Получение UPLINK-пакетов и статусов отправки DOWNLINK-пакетов
- Подключение к брокеру сообщений RabbitMQ
Параметры подключения:
Сервер, предоставляющий API: amqps://r.waviot.ru (порт 5671)
login: api_guest
pass: waviot
virtual host: /api
exchange name: strij.api
Данные параметры в виде строки подобного вида: amqps:\\api_guest:[email protected] содержатся в поле rabbit_guest_api_connection JWT-токена WAVIOT_JWT, получаемого в результате авторизации на сервере auth.waviot.ru (Описание авторизации).
- Создание очереди, для получения 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>
- Подключение к созданной очереди
Необходимо выполнить подключение(AMQP-declare) к вновь созданной очереди используя следующие параметры:
queue name: guest.<первый api_key>.
Durable: true
Autodelete: true
Passive: true
- Получение сообщений
Необходимо выполнить метод 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-пакетов
- Подключение к брокеру сообщений RabbitMQ
Параметры подключения:
Сервер, предоставляющий API: amqps://r.waviot.ru (порт 5671)
Имя пользователя: api_guest
Пароль: waviot
Virtual host: /api
Данные параметры в виде строки подобного вида: amqps:\\api_guest:[email protected] содержатся в поле rabbit_guest_api_connection JWT-токена WAVIOT_JWT, получаемого в результате авторизации на сервере auth.waviot.ru (Описание авторизации).
- Для отправки 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