Привязка к аккаунту¶
Привязка — одноразовая процедура: устройство получает одноразовый токен привязки, обменивает его у портала на постоянный секрет и сохраняет секрет в NVS. Дальше оно подключается к порталу само после каждой перезагрузки. Пока секрета нет, устройство в режиме настройки и ждёт токен.
В приложении iDryer¶
- Устройство в сети (см. Wi-Fi), телефон — в той же сети.
- Подключить новое устройство → шаг Привязка (если устройство уже в сети, нажмите чип шага вверху окна) → Привязать.
- Приложение находит устройство в локальной сети, получает у портала токен, передаёт его устройству и ждёт, пока портал подтвердит, что устройство вышло на связь.
- После Устройство привязано устройство — в списке на портале и в приложении.
Лог до привязки:
[BOOT] WiFi ok, logs enabled
[INFO ] CLOUD: WiFi connected, IP: 192.168.1.42, RSSI: -55 dBm, …
…
[INFO ] CLOUD: binding-v3: no secret — awaiting pairing token (SETUP)
После:
[INFO ] CLOUD: binding-v3: pairing token received (… chars)
[INFO ] CLOUD: binding-v3: activating with pairing token (serial=DEVICE_… mcu=-)
[INFO ] CLOUD: binding-v3: activated, deviceId=… -> Ready
…
[INFO ] MQTT: Connected! …
Веб-установщик прошивок передаёт токен по USB — командой PAIR_TOKEN (см. ниже).
Отвязка¶
Отвязка в приложении или на портале приходит устройству командой revoke. Обработчик нужен в каждой прошивке:
// Отвязка в приложении или на портале: стереть секрет и ждать новой привязки.
s_link.onCommand("revoke", [](JsonObjectConst) { s_link.handleRevoke(); });
handleRevoke() стирает секрет, сеть остаётся — устройство снова ждёт привязки. Без обработчика секрет остаётся в устройстве, и привязать его заново получится только после WIPE_IDENTITY.
Команды по USB¶
После подключения к сети ядро принимает строки по последовательному порту (115200, строка заканчивается переводом строки):
| Команда | Ответ | Что делает |
|---|---|---|
STATUS |
STATUS:state=… wifi=… ip=… cloud=… serial=… mcu=… fw=… part=… |
состояние: state — bound (привязано) или setup (ждёт токен), cloud — online/offline |
WIPE_IDENTITY |
WIPE_IDENTITY:OK |
стирает секрет, как revoke; сеть остаётся |
PAIR_TOKEN:<токен> |
PAIR_TOKEN:OK, PAIR_TOKEN:ERROR, PAIR_TOKEN:ERROR:ALREADY_BOUND |
передаёт токен привязки; уже привязанное устройство токен не принимает |
STATUS
STATUS:state=setup wifi=1 ip=192.168.1.42 cloud=offline serial=DEVICE_… mcu=- fw=0.1.0 part=…
До подключения к сети порт занят Improv, и команды не отвечают. В сборке с IDRYER_DEV_REPL порт отдан продукту, и этих команд нет — см. Подробная настройка.
Если не получилось¶
- приложение не находит устройство — телефон и устройство в одной сети; гостевые сети часто блокируют обнаружение устройств;
PAIR_TOKEN:ERROR:ALREADY_BOUNDили устройство числится за другим аккаунтом — отвяжите его на портале или отправьтеWIPE_IDENTITYи привяжите заново.