Описание 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