Ой, логотип кудато делся

ESP32SVX получил облачное управление, PWA и безопасное восстановление доступа

ESP32SVX получил облачное управление, PWA и безопасное восстановление доступа
SVXLINK / Новости / Галерея идей / Кухня / Аналоговая радио связь / Блог
19:51, 04 сентябрь 2026
1
0

ESP32SVX продолжает развиваться. В новом крупном обновлении основной акцент сделан на удобстве повседневного использования: появилось удалённое управление через Интернет, практически realtime-отображение состояния устройства, PWA-версия Cloud-интерфейса, синхронизация учётных данных и безопасное восстановление забытого пароля.


Текущие версии:

ESP32SVX Firmware — 0.3.64
ESP32SVX Cloud — 0.1.7

Главное изменение — теперь управлять своей ESP32 можно не только из локальной сети, но и из любой точки, где есть Интернет.

ESP32SVX Cloud

Для удалённого доступа появился отдельный сервис:

https://esp.free-svx.link/

При этом пользователю не нужен белый IP-адрес, VPN, статический IP или проброс портов на домашнем роутере.

ESP32 самостоятельно устанавливает лёгкое исходящее соединение с ESP32SVX Cloud. Благодаря этому удалённое управление работает и за обычным NAT, и за CGNAT мобильных или домашних провайдеров.

Особенно важно, что Cloud никак не привязан к конкретному SvxReflector.

Можно подключить ESP32 к любому настроенному reflector-серверу, а управление устройством всё равно будет доступно через ESP32SVX Cloud.

То есть соединение со SvxReflector отвечает за радиосвязь, а ESP32SVX Cloud — за удалённое управление устройством. Эти две части работают независимо друг от друга.

Один интерфейс дома и через Интернет

Мы постарались сохранить привычную логику локальной Web-панели.

Через Cloud можно просматривать состояние ESP32 и изменять большинство тех же параметров, которые доступны при прямом подключении к устройству по локальному IP.

В удалённой панели доступны параметры подключения, TalkGroup, RX/TX, reflector-профили, Wi-Fi, настройки трансивера, RX/TX частоты, CTCSS, SQL, мощность, bandwidth, параметры аудио, DSP, Node Info и другая информация об устройстве.

Изменения передаются непосредственно на вашу ESP32.

При этом локальная Web-панель никуда не исчезла. Если компьютер или телефон находится в той же сети, что и устройство, можно продолжать пользоваться локальным IP точно так же, как раньше.

Cloud — это дополнительный способ доступа, а не замена локального управления.

Как войти в ESP32SVX Cloud

У каждой ESP32 теперь есть собственный уникальный Cloud Device ID, сформированный на основе MAC-адреса устройства.

Например:

SVX-007007A1E678

Device ID отображается в локальной Web-панели. На него можно нажать, чтобы скопировать в буфер обмена.

После этого достаточно открыть:

https://esp.free-svx.link/

и ввести Device ID, обычный логин ESP32 и обычный пароль ESP32.

Создавать отдельную учётную запись специально для Cloud не требуется.

Локальный Web и Cloud используют одни и те же credentials.

Синхронизация логина и пароля

В процессе разработки мы отдельно уделили внимание ситуации, когда пароль локального Web уже был изменён, а Cloud по какой-либо причине ещё знает старые данные.

Теперь ESP32 и сервер умеют согласовывать состояние учётной записи.

Если пользователь меняет логин или пароль на устройстве, новые credentials синхронизируются с Cloud.

Также добавлен механизм восстановления рассинхронизированных учётных данных через уже установленную защищённую сессию устройства.

При этом неправильный пароль по-прежнему не принимается, а защита от перебора продолжает работать.

Для устройств, которые были настроены ещё до появления Cloud, после обновления прошивки рекомендуется один раз войти в локальную Web-панель своим действующим логином и паролем. После этого устройство при необходимости синхронизирует данные с Cloud.

Практически realtime без постоянного polling

Ещё одна важная часть обновления — новая схема передачи текущего состояния.

Раньше самый простой вариант реализации удалённой панели был бы очевидным: браузер постоянно спрашивает ESP32 о состоянии. Но для небольшой ESP32 это лишняя нагрузка на Wi-Fi, процессор, RAM и сервер.

Поэтому сделано наоборот.

Когда меняется RX, TX, TalkGroup или другое важное runtime-состояние, ESP32 сама отправляет небольшое обновление в Cloud.

Браузер получает его через SSE.

В результате RX/TX/TG отображаются практически в реальном времени, но ESP32 не опрашивается каждую секунду.

Когда устройство находится в состоянии покоя, оно отправляет только небольшой служебный STATUS примерно один раз в 30 секунд. В нём передаются IP, SSID, RSSI, версия firmware, информация о времени и другие служебные параметры.

Это позволяет получить живой интерфейс без постоянной лишней нагрузки.

Часы тоже больше не нагружают ESP32

Изменена и работа часов.

Локальный Web и Cloud показывают время с обновлением каждую секунду, но это не означает, что браузер каждую секунду спрашивает время у ESP32.

Устройство передаёт синхронизированное время и timezone, после чего часы продолжают тикать непосредственно в браузере.

Небольшая деталь, но именно из таких оптимизаций и складывается стабильная работа ESP32 под нагрузкой.

ESP32SVX Cloud можно установить как приложение

Cloud-интерфейс теперь является PWA.

На Android его можно установить на главный экран и запускать почти как обычное приложение — отдельным окном, со своей иконкой и без необходимости каждый раз искать сайт в браузере.

Для установки достаточно открыть:

https://esp.free-svx.link/

и выбрать в меню браузера пункт «Установить приложение» или «Добавить на главный экран». Название зависит от конкретного браузера.

При этом приватные API и страницы настроек не сохраняются в offline-cache.

Безопасность Cloud

Пароль ESP32 не передаётся по device TCP-соединению открытым текстом.

Для подключения устройства используется challenge/auth механизм, а после авторизации управляющий канал защищается AES-256-GCM и имеет защиту от повторного воспроизведения пакетов.

ESP32 при этом не требует отдельного TLS-клиента, WebSocket или MQTT.

Внутренние запросы Cloud к локальному Web API также не считаются доверенными только по IP-адресу. Для них используется отдельный случайный token, который создаётся в RAM ESP32 при каждой загрузке.

На стороне сервера работает защита от перебора для пользовательского входа, административного интерфейса и device-auth.

Если забыли пароль

В этом обновлении появилась ещё одна функция, которая оказалась действительно необходимой на практике — восстановление забытого локального Web-пароля.

На странице входа теперь есть кнопка:

«Забыли пароль?»

Но одного нажатия недостаточно.

После запуска восстановления необходимо в течение ограниченного времени физически удерживать кнопку BOOT / GPIO0 примерно 5 секунд.

Это принципиально важно: сброс пароля нельзя выполнять только HTTP-запросом, иначе любой пользователь локальной сети мог бы попытаться захватить управление чужим устройством.

После физического подтверждения ESP32 временно отключается от домашней Wi-Fi сети и поднимает отдельную открытую Recovery-точку:

ESP32SVX-Recovery-XXXXXX

Телефон подключается к этой сети и автоматически получает адрес из диапазона 192.168.4.x.

После подключения нужно вручную открыть браузер и перейти по адресу:

http://192.168.4.1/

Откроется отдельная страница восстановления, на которой можно задать новый логин и новый пароль.

Recovery сделан специально для смартфона

Для восстановления используется не уменьшенная копия обычного desktop-интерфейса, а отдельная mobile-first страница.

На смартфоне она занимает весь экран, имеет крупные поля, большие сенсорные кнопки, подтверждение пароля и возможность показать или скрыть введённый пароль.

Пользователю не нужно масштабировать мелкое окно пальцами.

После сохранения новых credentials ESP32 возвращается в обычный STA-режим, снова подключается к домашней сети, SvxReflector и Cloud.

При этом Recovery не делает factory reset.

Wi-Fi сети, reflector-профили, RX/TX частоты, CTCSS, SQL, TalkGroup, параметры трансивера, DSP, аудио, Node Info и остальные настройки сохраняются.

Меняются только данные для входа.

Почему мы отказались от автоматического открытия Recovery-страницы

Изначально тестировался captive portal: идея была в том, чтобы после подключения к Recovery Wi-Fi смартфон сам предложил открыть страницу настройки.

На практике Android, iOS и различные прошивки смартфонов ведут себя по-разному. Где-то системное окно появляется, где-то только уведомление, где-то сеть просто подключается без каких-либо действий.

Мы протестировали DNS hijack, captive probes и DHCP CAPPORT-механизмы, но пришли к выводу, что для ESP32 гораздо лучше оставить простой и предсказуемый сценарий:

подключиться к Recovery Wi-Fi → открыть браузер → ввести 192.168.4.1.

Заодно это позволило удалить лишний DNS task, дополнительные HTTP handlers и код captive portal, освободив часть RAM и flash.

Для ESP32 это куда полезнее, чем держать сложный механизм, который всё равно не гарантируется операционной системой телефона.

Исправления стабильности

Во время разработки последних версий был обнаружен и устранён stack overflow задачи svx_client, который мог проявляться после успешной авторизации на SvxReflector.

Симптом выглядел как:

Stack canary watchpoint triggered (svx_client)

и приводил к перезагрузке устройства.

Стек задачи был увеличен, использование крупных локальных структур уменьшено, а проверки Recovery переведены на более компактные структуры.

Также убраны бессмысленные reconnect-попытки SvxReflector во время активного Recovery.

Что дальше

ESP32SVX Cloud и PWA — это не конечная точка.

В ближайших планах — полноценное Android-приложение ESP32SVX.

Идея в том, чтобы сделать управление устройствами ещё удобнее: отдельное приложение с быстрым доступом к своим ESP32, состоянию RX/TX/TG, настройкам и Cloud-функциям без необходимости каждый раз открывать браузер.

PWA уже позволяет пользоваться Cloud почти как приложением, но отдельный Android-клиент даст больше возможностей для дальнейшего развития интерфейса и мобильных функций.

Также продолжится работа над Cloud, OTA-обновлениями через Интернет, оптимизацией нагрузки и дальнейшим расширением возможностей ESP32SVX.

Полезные ссылки

Если вы уже используете ESP32SVX, или только планируете собрать — присоединяйтесь к Telegram-чату. Там можно обсудить работу прошивки, сообщить об ошибке, предложить новую функцию, показать свою сборку или просто пообщаться с другими пользователями проекта.

ESP32SVX Firmware 0.3.64
ESP32SVX Cloud 0.1.7

Проект развивается дальше. Следующий большой шаг — сделать удалённую работу с ESP32 ещё удобнее, в том числе через отдельное Android-приложение.

Ctrl
Enter
Заметили ошЫбку
Выделите текст и нажмите Ctrl+Enter
Комментарии (0)
Топ из этой категории
ESP32SVX получил облачное управление, PWA и безопасное восстановление доступа ESP32SVX получил облачное управление, PWA и безопасное восстановление доступа
ESP32SVX продолжает развиваться. В новом крупном обновлении основной акцент сделан на удобстве повседневного...
04.09.26
6
0
Настройка коллинеарной базовой антенны VS-406, 400-470МГц, 6.8dbi, 560mm, 3х5/8 λ,1,1 kg, SO239 Настройка коллинеарной базовой антенны VS-406, 400-470МГц, 6.8dbi, 560mm, 3х5/8 λ,1,1 kg, SO239
Для коллинеарных базовых UHF-антенн диапазона 400-470 МГц (таких как серия VS-406V/BS-406V) точная настройка на...
31.08.26
67
0