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

Howto: backup и restore

Сделать backup

curl -u admin:admin123 \
     -o awdc-backup-2026-05-13.json \
     http://awdc.local/api/system/backup

Файл содержит: - plaintext-секцию data с настройками (WiFi-SSID, dosator-пропорции, email-хост и т.д. — но БЕЗ паролей и токенов); - зашифрованный блок _secrets (AES-256-GCM, ключ выводится из текущего admin-пароля через SHA-256).

Размер обычно <4 КБ.

Где хранить: в безопасном месте (зашифрованный диск, password manager). Файл с secrets-блобом можно безопасно лить в облако — без admin-пароля не расшифровать.

Восстановить на этом же устройстве

Если просто откатываешь свои настройки:

curl -u admin:admin123 -X POST \
     -H "Content-Type: application/json" \
     --data-binary @awdc-backup-2026-05-13.json \
     http://awdc.local/api/system/restore

Лимит размера тела: 8 КБ. Если backup больше — нужно резать или повышать kRestoreBodyLimit в коде.

Ответ:

{"success":true,"message":"Restored. Reboot to apply."}

Обязательно перезагрузить устройство (power-cycle или OTA-apply), чтобы менеджеры (WiFi, интеграции, NTP) перечитали новые ключи.

Восстановить на новом устройстве

  1. Прошить firmware той же или совместимой версии.
  2. Подключиться к AWDC_Setup AP (см. setup-wifi.md).
  3. Сменить admin-пароль на тот, который был на момент backup'а (иначе _secrets не расшифруется):
    curl -u admin:admin123 -X POST \
         -H "Content-Type: application/json" \
         -d '{"username":"admin","old_password":"admin123","new_password":"OLD_PASSWORD_FROM_BACKUP"}' \
         http://192.168.4.1/api/auth/change_password
    
  4. Залить backup:
    curl -u admin:OLD_PASSWORD_FROM_BACKUP -X POST \
         --data-binary @awdc-backup.json \
         http://192.168.4.1/api/system/restore
    
  5. Перезагрузить устройство.

Восстановить если потерян admin-пароль

_secrets без пароля не расшифровать (AES-GCM verify падает). Plaintext data-секцию можно вытащить вручную (это обычный JSON), но пароли WiFi / токены ботов утрачены — их придётся вводить заново.

Workaround: открыть backup.json в редакторе, удалить блок _secrets, POST на restore — поднимется plaintext-конфиг, потом руками впишешь пароли через UI.

Что не входит в backup

  • EEPROM-наработка дозаторов (runtime_s в M24C16) — у каждого устройства своя.
  • NVS namespace ota* — состояние OTA-сессии, не нужно.
  • Лог и state-snapshots — изменчивые.

См. также: api/system.md, nvs-reference.md.