ESP32: добавить NAV v8 с account и Wi-Fi reconnect

This commit is contained in:
AidarKC
2026-06-09 16:14:24 +04:00
parent e385bb6bf9
commit f4e7210a40
4 changed files with 386 additions and 35 deletions
@@ -19,19 +19,22 @@
## Экраны
Прототип содержит 6 экранов:
Прототип содержит 8 экранов:
- `HOME`
- `SETTINGS_MENU`
- `WIFI_SCREEN`
- `SERVER_SCREEN`
- `ACCOUNT_SCREEN`
- `ACCOUNT_SUBSERVER_SCREEN`
- `ACCOUNT_SECRET_SCREEN`
- `TEXT_EDIT_SCREEN`
## HOME
Показывает:
- сверху слева `login`;
- ниже `subserver1`;
- сверху слева значение логина или `login not set`;
- ниже значение сабсервера или `subserver not set`;
- третьей строкой `secret not set`, если секрет ещё не помечен как установленный;
- сверху справа простые индикаторы `W BAT`;
- по центру крупный текст `STATUS`;
- статус Wi-Fi;
@@ -128,12 +131,44 @@
## ACCOUNT_SCREEN
Показывает:
- `Account`
- `Account screen`
- заголовок `ACCOUNT`;
- статусное сообщение;
- кнопку `Login (<value|not set>)`;
- кнопку `Subserver (<value|not set>)`;
- кнопку `Secret (<*****|not set>)`.
Переходы:
- свайп вправо -> `SETTINGS_MENU`
- кнопка `BACK` -> `SETTINGS_MENU`
- `Login` -> `TEXT_EDIT_SCREEN`
- `Subserver` -> `ACCOUNT_SUBSERVER_SCREEN`
- `Secret` -> `ACCOUNT_SECRET_SCREEN`
## ACCOUNT_SUBSERVER_SCREEN
Показывает:
- текущий `subserver`;
- рекомендацию оставить `subserver1`, если устройство одно;
- кнопку `USE SUBSERVER1`;
- кнопку `EDIT MANUALLY`;
- кнопку `BACK`.
Переходы:
- `USE SUBSERVER1` -> сохраняет `subserver1` и возвращает в `ACCOUNT_SCREEN`
- `EDIT MANUALLY` -> `TEXT_EDIT_SCREEN`
- свайп вправо -> `ACCOUNT_SCREEN`
## ACCOUNT_SECRET_SCREEN
Пока это заглушка.
Показывает:
- текущий статус секрета `set/not set`;
- сообщение, что настройка секрета пока не реализована;
- кнопку `BACK`.
Переходы:
- свайп вправо -> `ACCOUNT_SCREEN`
- `BACK` -> `ACCOUNT_SCREEN`
## TEXT_EDIT_SCREEN
@@ -147,7 +182,9 @@
Показывает:
- заголовок;
- поле ввода, уже заполненное старым значением;
- курсор установлен в конец текста;
- новые символы всегда добавляются только в конец текста;
- визуальный курсор не показывается;
- пароль Wi-Fi показывается открыто, без маскировки точками;
- кнопки `SAVE`, `CANCEL`, `DEL`, `CLR`;
- большую экранную клавиатуру.
@@ -161,6 +198,8 @@
- переключение страниц выполняется свайпом влево/вправо внутри `TEXT_EDIT_SCREEN`;
- страница 1 содержит в основном буквы и базовые URL-символы;
- страница 2 содержит цифры и дополнительные URL/символьные кнопки;
- переключение `ABC/123` и `SHIFT` не должно очищать уже введённый текст;
- переключение страниц клавиатуры свайпом тоже не должно очищать уже введённый текст, включая цифры, символы и уже набранные заглавные буквы;
- есть специальные действия `DEL` и `CLR`.
## Хранение Wi-Fi
@@ -168,29 +207,45 @@
Используется `Preferences` (NVS памяти ESP32):
- `wifi_ssid`
- `wifi_pass`
- `wifi_known_good`
При старте устройства, если сохранён SSID, выполняется попытка подключения к сохранённой сети.
Если сеть раньше уже была успешно подключена и помечена как валидная:
- после потери связи устройство автоматически пытается переподключиться;
- первые повторные попытки идут раз в `10` секунд;
- если связи нет долго, интервал увеличивается до `30` секунд.
## Хранение серверов
Используется `Preferences` (NVS памяти ESP32):
- `solana_rpc`
- `shine_server`
## Хранение аккаунта
Используется `Preferences` (NVS памяти ESP32):
- `login`
- `subserver`
- `secret_set`
## Детали клавиатуры
- клавиатура занимает примерно `2/3`-`3/4` высоты экрана;
- сверху остаются только заголовок, подсказка и поле ввода;
- сверху остаются только заголовок и поле ввода;
- буквы занимают 3 ряда;
- половина букв находится на левой странице, половина на правой;
- на правой странице кнопки тоже стоят в ровных колонках, без сдвига рядов вправо;
- отдельный режим `symbols` тоже разделён на 2 страницы;
- 3 основных ряда клавиш и нижний служебный ряд увеличены по высоте;
- клавиши дополнительно увеличены по высоте по сравнению с предыдущим промежуточным вариантом;
- четвёртый ряд содержит:
- переключение `ABC/123`
- `SHIFT`
- `DEL`
- `SAVE`
- `CANCEL`
- ниже рамки клавиатурного блока остаётся отдельная тёмная полоса с версией `NAV v7`.
## Жесты
@@ -207,6 +262,8 @@
- `WIFI_SCREEN`: свайп вправо -> `SETTINGS_MENU`
- `SERVER_SCREEN`: свайп вправо -> `SETTINGS_MENU`
- `ACCOUNT_SCREEN`: свайп вправо -> `SETTINGS_MENU`
- `ACCOUNT_SUBSERVER_SCREEN`: свайп вправо -> `ACCOUNT_SCREEN`
- `ACCOUNT_SECRET_SCREEN`: свайп вправо -> `ACCOUNT_SCREEN`
- `TEXT_EDIT_SCREEN`: свайп влево/вправо -> переключение страниц клавиатуры
- переключение страниц клавиатуры срабатывает только если свайп начался в зоне самой клавиатуры, а не по всему экрану редактора