Изменить настройки устройства
Меняет настройки зарегистрированного устройства: ключи, класс, код региона, параметры ADR, описание, координаты, приложение и тариф. Сервер ищет устройство по DevEUI или DevAddr. Передавайте только те поля, которые нужно изменить: остальные останутся как были.
Команда меняет карточку устройства в базе, но не сообщает об изменениях сетевому серверу — см. «Что важно знать».
Запрос и ответ: update_device_req → update_device_resp.
Доступ: только токен высокого уровня; можно изменить любое устройство владельца. С токеном низкого уровня сервер ответит ошибкой 1.
Текущая версия ONS
- Коды 7 (тариф уже меняли сегодня) и 9 (устройство не найдено) из описания v0.17 сейчас не приходят: в обоих случаях сервер отвечает кодом 0 без
error_text. - Значения
0иfalseсервер не применяет — см. «Что важно знать». - Сервер принимает поля
tariff_codeиactive, которых нет в схеме запроса v0.17.
Запрос
Поля без пометки «обязательно» можно не передавать.
| Поле | Тип | Описание |
|---|---|---|
cmd | string | update_device_req |
operation_id | string | Произвольная строка; сервер вернёт её в ответе — по ней сопоставляют запрос и ответ |
devEui | string | Обязательно devEui или devAddr. DevEUI устройства, 16 hex-символов заглавными буквами — сервер сравнивает с учётом регистра. Сменить DevEUI нельзя |
devAddr | string | Обязательно devEui или devAddr. DevAddr устройства, 8 hex-символов заглавными буквами. Только для поиска: сменить DevAddr этой командой нельзя. Если переданы оба поля, должны совпасть оба |
application_eui | string | Перенести устройство в другое приложение владельца: AppEUI приложения, 16 hex-символов заглавными буквами |
tariff_code | string | Сменить тариф: код из get_tariffs_req. Когда начнёт действовать — см. «Что важно знать» |
app_key | string | AppKey, 32 hex-символа |
nwks_key | string | NwkSKey, 32 hex-символа |
apps_key | string | AppSKey, 32 hex-символа |
node_class | uint8 | Класс LoRaWAN: 1 — A, 2 — B, 3 — C. Сервер не проверяет значение |
region | uint8 | Код региона 1–37, см. Коды регионов. Код 0 не применяется. Сервер не проверяет код: с неизвестным кодом устройство перестанет обслуживаться |
rx_window | uint8 | Окно приёма для downlink: 1 — RX1, 2 — RX2 |
adr | bool | Только true: выключить ADR этой командой нельзя |
adr_interval | uint16 | Раз в сколько кадров uplink сервер пересчитывает скорость, от 1 |
adr_min, adr_max | uint8 | Границы DR для ADR, 1–15 |
adr_fix | uint8 | Фиксированный DR, 1–15. Сбросить в null нельзя |
seq_up, seq_down | uint32 | Счётчики кадров uplink и downlink, от 1 |
seq_chk | uint8 | Проверка счётчика кадров: только 1 (Relaxed). Сервер сейчас значение только хранит |
activation | uint8 | Способ активации: только 1 (ABP) |
duty_cycle, down_queue | uint8 | От 1. Сервер сейчас значения только хранит |
description | string | Описание, до 255 символов. Пустая строка стирает описание |
lat, lon | float | Новые координаты, WGS 84. Учитываются только вместе; стереть координаты нельзя |
active | bool | false — вывести устройство из работы, как при удалении |
{
"cmd": "update_device_req",
"operation_id": "rdk",
"devEui": "7DA50BE8C74CE6DC",
"application_eui": "6042366ED7A302CF",
"app_key": "79AFAC4879C5A1E2BFEDF4A4E35C0C6B",
"region": 2
}
Ответ
| Поле | Тип | Описание |
|---|---|---|
cmd | string | update_device_resp |
operation_id | string | Значение из запроса |
status | uint8 | 1 — успех, 2 — ошибка |
devEui, devAddr, application_eui, description, app_key, nwks_key, apps_key, node_class, rx_window, adr, adr_interval, adr_min, adr_max, adr_fix, duty_cycle, seq_up, seq_down, seq_chk, region, activation | Карточка устройства после изменения — поля как в get_devices_req | |
down_queue, tariff_code, active | Значения из запроса; null, если поле не передано. tariff_code — не текущий тариф устройства | |
lat, lon | float | Координаты; null, если не заданы |
error_code, error_text | uint8, string | Только при ошибке, см. ниже |
{
"cmd": "update_device_resp",
"operation_id": "rdk",
"status": 1,
"devEui": "7DA50BE8C74CE6DC",
"devAddr": "2F1BA78D",
"application_eui": "6042366ED7A302CF",
"description": "",
"app_key": "79AFAC4879C5A1E2BFEDF4A4E35C0C6B",
"nwks_key": "FF93AB45868BC0ED652DB9A0698CCAD7",
"apps_key": "B65466247DC7F5B5CCA383AD47233D86",
"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": 118,
"seq_down": 4,
"seq_chk": 0,
"region": 2,
"activation": 0,
"down_queue": null,
"tariff_code": null,
"active": null,
"lon": 75.898052,
"lat": 42.221848
}
Ошибки
error_code | error_text | Что случилось |
|---|---|---|
| 1 | Unauthorized access | Запрос пришёл с токеном низкого уровня |
| 2 | Required field is not filled | Нет ни devEui, ни devAddr |
| 3 | Data is filled in with an error | devEui, devAddr, application_eui или ключ неверного формата; lat или lon — не число |
| 5 | Application does not exists | У владельца нет приложения с таким application_eui, или оно удалено |
| 6 | Tariff does not exists | Нет действующего тарифа с кодом tariff_code |
| 0 | — | Устройство не найдено или принадлежит другому владельцу; тариф уже меняли, и новый ещё не начал действовать; база отклонила значение, например rx_window больше 2; внутренняя ошибка сервера |
Что важно знать
- Сетевой сервер узнаёт об изменениях не сразу. Он держит в памяти настройки устройства, которое сейчас на связи. Правка в интерфейсе ONS сбрасывает их, а эта команда — нет. Устройство OTAA получит новые ключи, код региона, класс, окно приёма, параметры ADR и приложение при следующей активации (join). Устройство ABP сетевой сервер может и дальше обслуживать со старыми настройками: чтобы применить новые сразу, сохраните устройство в интерфейсе ONS.
0иfalseне применяются. Сервер меняет только поля с непустым значением, а0иfalseмолча пропускает, и ответ при этом успешный. Исключения —description, где пустая строка стирает описание, иactive, гдеfalseприменяется. Поэтому этой командой нельзя выключить ADR, задать DR0, обнулить счётчики кадров, вернутьseq_chk= 0, OTAA (activation= 0) и код региона 0 (EU). Сброситьadr_fixвnullи стереть координаты тоже нельзя. Такие изменения делайте в интерфейсе ONS.- Ключи. У устройства OTAA
app_keyнужен для следующей активации: если в устройстве другой AppKey, оно не сможет переподключиться.nwks_keyиapps_keyустройства OTAA сервер перезапишет при следующей активации. У устройства ABP ключи должны совпадать с прошитыми в устройство. - Код региона и класс должны соответствовать прошивке устройства. Сервер проверяет их только при создании устройства, а здесь записывает как есть.
- Тариф. Если у устройства уже есть тариф, новый начинает действовать с 00:00 UTC следующих суток. Пока он не начал действовать, сменить тариф ещё раз нельзя — придёт ошибка 0. Если тарифа у устройства нет, новый действует сразу. Если передать код текущего тарифа, ничего не изменится.
active: falseвыводит устройство из работы так же, какdelete_device_req: его больше не находятget_devices_req,update_device_reqиdelete_device_req, а DevEUI и DevAddr можно занять заново. Вернуть устройство этой командой нельзя.
См. также
create_device_req— все поля устройства и коды регионов.get_devices_req— карточка устройства.delete_device_req— удалить устройство.