Получить карточку устройства
Возвращает карточку устройства: идентификаторы, ключи, класс, код региона, параметры ADR, счётчики кадров и координаты. Пригодится, чтобы проверить, как устройство зарегистрировано на сервере, и узнать его текущий DevAddr: у устройства OTAA он меняется при каждой активации.
Запрос и ответ: get_devices_req → get_devices_resp.
Доступ: с токеном низкого уровня — устройства своего приложения и приложений, которые открыли ему доступ; с токеном высокого уровня — все устройства владельца.
Сервер возвращает не больше одного устройства. Без devEui в ответе будет одно произвольное доступное устройство, а не все, как в описании v0.17. Запрашивайте устройства по одному, по devEui. В карточке есть поле active, которого нет в v0.17.
Запрос
Поля без пометки «обязательно» можно не передавать.
| Поле | Тип | Описание |
|---|---|---|
cmd | string | get_devices_req |
operation_id | string | Произвольная строка; сервер вернёт её в ответе — по ней сопоставляют запрос и ответ |
devEui | string | DevEUI устройства, 16 hex-символов заглавными буквами — сервер сравнивает с учётом регистра. Без поля сервер вернёт одно произвольное устройство |
{
"cmd": "get_devices_req",
"operation_id": "Qlg",
"devEui": "D745F677B2412E03"
}
Ответ
| Поле | Тип | Описание |
|---|---|---|
cmd | string | get_devices_resp |
operation_id | string | Значение из запроса |
status | uint8 | 1 — успех, 2 — ошибка |
deviceCount | uint32 | Сколько устройств в списке: 0 или 1 |
deviceList | array | Карточки устройств, поля — в таблице ниже |
error_code, error_text | uint8, string | Только при ошибке, см. ниже |
Поля карточки:
| Поле | Тип | Описание |
|---|---|---|
devEui | string | DevEUI |
devAddr | string | DevAddr. У устройства OTAA — адрес, выданный при последней активации |
application_eui | string | AppEUI приложения устройства |
description | string | Описание; может быть null |
app_key | string | AppKey |
nwks_key, apps_key | string | NwkSKey и AppSKey. У устройства OTAA — ключи текущей сессии |
node_class | uint8 | Класс LoRaWAN: 1 — A, 2 — B, 3 — C |
rx_window | uint8 | Окно приёма для downlink: 1 — RX1, 2 — RX2 |
adr | bool | Включён ли ADR |
adr_interval | uint16 | Раз в сколько кадров uplink сервер пересчитывает скорость |
adr_min, adr_max | uint8 | Границы DR для ADR; null — не заданы |
adr_fix | uint8 | Фиксированный DR; null — не задан |
duty_cycle | uint8 | Сервер сейчас значение только хранит |
seq_up, seq_down | uint32 | Счётчики кадров uplink и downlink (FCntUp, FCntDown) |
seq_chk | uint8 | Проверка счётчика кадров: 0 — Strict, 1 — Relaxed |
region | uint8 | Код региона, см. Коды регионов |
activation | uint8 | Способ активации: 0 — OTAA, 1 — ABP |
active | bool | Всегда true: удалённые устройства сервер не возвращает |
lat, lon | float | Широта и долгота, WGS 84; null, если координаты не заданы |
{
"cmd": "get_devices_resp",
"operation_id": "Qlg",
"status": 1,
"deviceList": [
{
"devEui": "D745F677B2412E03",
"devAddr": "D1FD37F0",
"application_eui": "819EA8554FCD762A",
"description": "",
"app_key": "2B7E151628AED2A6ABF7158809CF4F3C",
"nwks_key": "D745F677B2412E03268C11F3E1B6893C",
"apps_key": "2D48A7ECFF70AF6323B7A57186C23E11",
"node_class": 1,
"rx_window": 1,
"adr": true,
"adr_interval": 20,
"adr_min": 0,
"adr_max": 5,
"adr_fix": null,
"duty_cycle": 0,
"seq_up": 352,
"seq_down": 7,
"seq_chk": 0,
"region": 6,
"activation": 0,
"active": true,
"lat": 45.234232,
"lon": 76.342534
}
],
"deviceCount": 1
}
Ошибки
error_code | error_text | Что случилось |
|---|---|---|
| 3 | Data is filled in with an error | devEui не из 16 hex-символов |
| 0 | — | Внутренняя ошибка сервера — повторите запрос позже |
Устройство, которого нет или которое недоступно с вашим токеном, ошибкой не считается: ответ придёт с deviceCount = 0. Так же сервер ответит, если devEui передан строчными буквами.
Что важно знать
- В ответе ключи устройства открытым текстом — в том числе при запросе с токеном низкого уровня. Не пишите ответ в общедоступные журналы.
- Тарифа и
down_queueв карточке нет. Тариф задают вcreate_device_reqи меняют вupdate_device_req.
См. также
create_device_req— что значат поля и коды регионов.update_device_req— изменить настройки устройства.get_device_coordinates_req— только координаты устройств.