Перейти к содержанию

Привязка к аккаунту

Привязка — одноразовая процедура: устройство получает одноразовый токен привязки, обменивает его у портала на постоянный секрет и сохраняет секрет в NVS. Дальше оно подключается к порталу само после каждой перезагрузки. Пока секрета нет, устройство в режиме настройки и ждёт токен.

В приложении iDryer

  1. Устройство в сети (см. Wi-Fi), телефон — в той же сети.
  2. Подключить новое устройство → шаг Привязка (если устройство уже в сети, нажмите чип шага вверху окна) → Привязать.
  3. Приложение находит устройство в локальной сети, получает у портала токен, передаёт его устройству и ждёт, пока портал подтвердит, что устройство вышло на связь.
  4. После Устройство привязано устройство — в списке на портале и в приложении.

Лог до привязки:

[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 и привяжите заново.

Что дальше

Телеметрия.