ESP32: добавить Solana и SHiNE статусы на HOME

This commit is contained in:
AidarKC
2026-06-10 18:21:17 +04:00
parent 9e6ff07136
commit 940dc855cf
4 changed files with 1311 additions and 11 deletions
@@ -7,19 +7,17 @@
Этот прототип проверяет базовую механику экранов, крупных кнопок, свайпов, первичную настройку Wi-Fi и настройку серверных адресов через общий экран редактирования текста.
На этом этапе отсутствуют:
- логика серверной проверки доступности;
- логин/пароль учётной записи SHiNE;
- PIN;
- кошелёк;
- QR;
- баланс;
- регистрация;
- PDA и транзакции;
- PDA update/create транзакции;
- входящие запросы.
## Экраны
Прототип содержит 8 экранов:
Прототип содержит 10 экранов:
- `HOME`
- `SETTINGS_MENU`
- `WIFI_SCREEN`
@@ -27,13 +25,21 @@
- `ACCOUNT_SCREEN`
- `ACCOUNT_SUBSERVER_SCREEN`
- `ACCOUNT_SECRET_SCREEN`
- `SECRET_SHOW_SCREEN`
- `SECRET_GENERATE_*`
- `TEXT_EDIT_SCREEN`
- `REGISTER_ACCOUNT_PLACEHOLDER`
## HOME
Показывает:
- сверху слева значение сабсервера или `subserver not set`;
- ниже значение логина или `login not set`;
- справа от строки логина индикатор статуса Solana-аккаунта:
- зелёный — все ключи совпадают;
- красный — есть mismatch;
- белый контур — пользователь не найден в Solana PDA;
- рядом с индикатором краткий текст ошибки, если статус не зелёный;
- третьей строкой `secret not set`, если секрет ещё не помечен как установленный;
- сверху справа один ряд индикаторов:
- процент батареи;
@@ -42,6 +48,8 @@
- по центру крупный текст `STATUS`;
- одна строка Wi-Fi вида `Wi-Fi (<ssid>) connected/disconnected`;
- кнопка баланса вида `Balance: <value SOL>` или `Balance: failed to load`, по нажатию выполняет повторный запрос;
- строка `SHiNE: <server> connected/account not configured/unavailable`;
- при отсутствии пользователя в Solana PDA слева снизу появляется кнопка `REGISTER ACCOUNT`;
- снизу кнопку `SETTINGS`, уменьшенную примерно до половины ширины экрана и сдвинутую к правому краю.
- внизу на тёмной полосе подпись `SHiNE subserver (v.0.18)`.
@@ -51,9 +59,20 @@
- `Wi-Fi (<current_ssid>) connected`
Переходы:
- кнопка `REGISTER ACCOUNT` -> `REGISTER_ACCOUNT_PLACEHOLDER`, только если пользователь не найден;
- кнопка `SETTINGS` -> `SETTINGS_MENU`;
- свайп влево -> `SETTINGS_MENU`.
Фоновая логика:
- пока открыт `HOME`, экран сам обновляется примерно раз в секунду;
- при наличии `login + secret + subserver` и Wi-Fi устройство читает Solana `user_pda` напрямую через RPC;
- сравниваются `root key`, `blockchain key`, `device key` и `subserver` session-запись типа `100`;
- для строки `SHiNE:` устройство держит отдельную WebSocket-сессию с сервером SHiNE:
- авторизация через `AuthChallenge/CreateAuthSession` или `SessionChallenge/SessionLogin`;
- session key = публичный `subserver key`;
- подтверждение создания сессии подписывается `device key`;
- heartbeat выполняется `Ping` раз в минуту.
## SETTINGS_MENU
Показывает вертикальное меню из 3 пунктов:
@@ -217,6 +236,15 @@
- кнопки `SAVE`, `CANCEL`, `DEL`, `CLR`;
- большую экранную клавиатуру.
## REGISTER_ACCOUNT_PLACEHOLDER
Временный экран-заглушка регистрации.
Показывает:
- заголовок `REGISTER ACCOUNT`;
- сообщение, что регистрационный flow пока не реализован;
- кнопку `BACK`.
## Клавиатура
Клавиатура единая для всех текстовых вводов.