ESP32: добавить Solana и SHiNE статусы на HOME
This commit is contained in:
parent
9e6ff07136
commit
940dc855cf
@ -3,14 +3,31 @@
|
|||||||
- Краткое описание: минимальный UI-прототип для сабсервера на базе `LVGL + subserver touch`, с Wi-Fi flow, серверными адресами и общим экраном редактирования текста.
|
- Краткое описание: минимальный UI-прототип для сабсервера на базе `LVGL + subserver touch`, с Wi-Fi flow, серверными адресами и общим экраном редактирования текста.
|
||||||
- Что проверять:
|
- Что проверять:
|
||||||
- стартует экран `HOME`;
|
- стартует экран `HOME`;
|
||||||
- на `HOME` видны реальное значение сабсервера или `subserver not set`, реальное значение логина или `login not set`, при отсутствии секрета строка `secret not set`, а также `STATUS`, верхний правый блок с процентом батареи, иконкой батареи и индикатором Wi-Fi, кнопка баланса, кнопка `SETTINGS` уменьшенной ширины у правого края и нижняя подпись `SHiNE subserver (v.0.18)`;
|
- на `HOME` видны реальное значение сабсервера или `subserver not set`, реальное значение логина или `login not set`, при отсутствии секрета строка `secret not set`, а также `STATUS`, верхний правый блок с процентом батареи, иконкой батареи и индикатором Wi-Fi, кнопка баланса, строка `SHiNE: ...`, кнопка `SETTINGS` уменьшенной ширины у правого края и нижняя подпись `SHiNE subserver (v.0.18)`;
|
||||||
|
- справа от строки логина виден индикатор статуса Solana-аккаунта:
|
||||||
|
- зелёный, если ключи совпали;
|
||||||
|
- красный, если mismatch;
|
||||||
|
- белый контур, если пользователь не найден;
|
||||||
|
- если статус не зелёный, рядом выводится краткое текстовое пояснение;
|
||||||
- строка Wi-Fi на `HOME` корректно показывает одно из состояний:
|
- строка Wi-Fi на `HOME` корректно показывает одно из состояний:
|
||||||
- `Wi-Fi (not configured) not configured`
|
- `Wi-Fi (not configured) not configured`
|
||||||
- `Wi-Fi (<saved_ssid>) disconnected`
|
- `Wi-Fi (<saved_ssid>) disconnected`
|
||||||
- `Wi-Fi (<current_ssid>) connected`
|
- `Wi-Fi (<current_ssid>) connected`
|
||||||
|
- строка `SHiNE:` корректно показывает одно из состояний:
|
||||||
|
- `connected`
|
||||||
|
- `account not configured`
|
||||||
|
- `unavailable`
|
||||||
- пока открыт `HOME`, статус сам обновляется без перехода на другие экраны;
|
- пока открыт `HOME`, статус сам обновляется без перехода на другие экраны;
|
||||||
|
- баланс обновляется кнопкой по нажатию;
|
||||||
|
- если логин зарегистрирован и секрет/сабсервер заданы, устройство:
|
||||||
|
- читает `user_pda` через Solana RPC;
|
||||||
|
- сверяет `root`, `blockchain`, `device` и `subserver` session type `100`;
|
||||||
|
- поднимает WebSocket-сессию с сервером SHiNE;
|
||||||
|
- шлёт `Ping` раз в минуту;
|
||||||
- кнопка `SETTINGS` открывает `SETTINGS_MENU`;
|
- кнопка `SETTINGS` открывает `SETTINGS_MENU`;
|
||||||
- свайп влево на `HOME` открывает `SETTINGS_MENU`;
|
- свайп влево на `HOME` открывает `SETTINGS_MENU`;
|
||||||
|
- если пользователь не найден в Solana PDA, слева снизу появляется `REGISTER ACCOUNT`;
|
||||||
|
- `REGISTER ACCOUNT` открывает экран-заглушку;
|
||||||
- в `SETTINGS_MENU` сначала видны только `Wi-Fi` и `Server`;
|
- в `SETTINGS_MENU` сначала видны только `Wi-Fi` и `Server`;
|
||||||
- обе видимые карточки меню одного цвета;
|
- обе видимые карточки меню одного цвета;
|
||||||
- свайп вверх показывает `Server` и `Account`;
|
- свайп вверх показывает `Server` и `Account`;
|
||||||
@ -83,4 +100,5 @@
|
|||||||
- свайп вправо из `ACCOUNT_SUBSERVER_SCREEN` и `ACCOUNT_SECRET_SCREEN` возвращает в `ACCOUNT_SCREEN`;
|
- свайп вправо из `ACCOUNT_SUBSERVER_SCREEN` и `ACCOUNT_SECRET_SCREEN` возвращает в `ACCOUNT_SCREEN`;
|
||||||
- если во время реального свайпа палец проходит по кнопке, это не должно открывать кнопку как обычный `click`.
|
- если во время реального свайпа палец проходит по кнопке, это не должно открывать кнопку как обычный `click`.
|
||||||
- Ожидаемый результат: новый скетч даёт чистый навигационный каркас и уже умеет настраивать Wi-Fi и серверные адреса на самой ESP32.
|
- Ожидаемый результат: новый скетч даёт чистый навигационный каркас и уже умеет настраивать Wi-Fi и серверные адреса на самой ESP32.
|
||||||
|
- Дополнительно ожидается: `HOME` уже показывает реальный Solana/WS-статус сабсервера, а отсутствие пользователя в Solana заметно сразу без перехода в настройки.
|
||||||
- Статус: pending
|
- Статус: pending
|
||||||
|
|||||||
@ -7,19 +7,17 @@
|
|||||||
Этот прототип проверяет базовую механику экранов, крупных кнопок, свайпов, первичную настройку Wi-Fi и настройку серверных адресов через общий экран редактирования текста.
|
Этот прототип проверяет базовую механику экранов, крупных кнопок, свайпов, первичную настройку Wi-Fi и настройку серверных адресов через общий экран редактирования текста.
|
||||||
|
|
||||||
На этом этапе отсутствуют:
|
На этом этапе отсутствуют:
|
||||||
- логика серверной проверки доступности;
|
|
||||||
- логин/пароль учётной записи SHiNE;
|
- логин/пароль учётной записи SHiNE;
|
||||||
- PIN;
|
- PIN;
|
||||||
- кошелёк;
|
- кошелёк;
|
||||||
- QR;
|
- QR;
|
||||||
- баланс;
|
|
||||||
- регистрация;
|
- регистрация;
|
||||||
- PDA и транзакции;
|
- PDA update/create транзакции;
|
||||||
- входящие запросы.
|
- входящие запросы.
|
||||||
|
|
||||||
## Экраны
|
## Экраны
|
||||||
|
|
||||||
Прототип содержит 8 экранов:
|
Прототип содержит 10 экранов:
|
||||||
- `HOME`
|
- `HOME`
|
||||||
- `SETTINGS_MENU`
|
- `SETTINGS_MENU`
|
||||||
- `WIFI_SCREEN`
|
- `WIFI_SCREEN`
|
||||||
@ -27,13 +25,21 @@
|
|||||||
- `ACCOUNT_SCREEN`
|
- `ACCOUNT_SCREEN`
|
||||||
- `ACCOUNT_SUBSERVER_SCREEN`
|
- `ACCOUNT_SUBSERVER_SCREEN`
|
||||||
- `ACCOUNT_SECRET_SCREEN`
|
- `ACCOUNT_SECRET_SCREEN`
|
||||||
|
- `SECRET_SHOW_SCREEN`
|
||||||
|
- `SECRET_GENERATE_*`
|
||||||
- `TEXT_EDIT_SCREEN`
|
- `TEXT_EDIT_SCREEN`
|
||||||
|
- `REGISTER_ACCOUNT_PLACEHOLDER`
|
||||||
|
|
||||||
## HOME
|
## HOME
|
||||||
|
|
||||||
Показывает:
|
Показывает:
|
||||||
- сверху слева значение сабсервера или `subserver not set`;
|
- сверху слева значение сабсервера или `subserver not set`;
|
||||||
- ниже значение логина или `login not set`;
|
- ниже значение логина или `login not set`;
|
||||||
|
- справа от строки логина индикатор статуса Solana-аккаунта:
|
||||||
|
- зелёный — все ключи совпадают;
|
||||||
|
- красный — есть mismatch;
|
||||||
|
- белый контур — пользователь не найден в Solana PDA;
|
||||||
|
- рядом с индикатором краткий текст ошибки, если статус не зелёный;
|
||||||
- третьей строкой `secret not set`, если секрет ещё не помечен как установленный;
|
- третьей строкой `secret not set`, если секрет ещё не помечен как установленный;
|
||||||
- сверху справа один ряд индикаторов:
|
- сверху справа один ряд индикаторов:
|
||||||
- процент батареи;
|
- процент батареи;
|
||||||
@ -42,6 +48,8 @@
|
|||||||
- по центру крупный текст `STATUS`;
|
- по центру крупный текст `STATUS`;
|
||||||
- одна строка Wi-Fi вида `Wi-Fi (<ssid>) connected/disconnected`;
|
- одна строка Wi-Fi вида `Wi-Fi (<ssid>) connected/disconnected`;
|
||||||
- кнопка баланса вида `Balance: <value SOL>` или `Balance: failed to load`, по нажатию выполняет повторный запрос;
|
- кнопка баланса вида `Balance: <value SOL>` или `Balance: failed to load`, по нажатию выполняет повторный запрос;
|
||||||
|
- строка `SHiNE: <server> connected/account not configured/unavailable`;
|
||||||
|
- при отсутствии пользователя в Solana PDA слева снизу появляется кнопка `REGISTER ACCOUNT`;
|
||||||
- снизу кнопку `SETTINGS`, уменьшенную примерно до половины ширины экрана и сдвинутую к правому краю.
|
- снизу кнопку `SETTINGS`, уменьшенную примерно до половины ширины экрана и сдвинутую к правому краю.
|
||||||
- внизу на тёмной полосе подпись `SHiNE subserver (v.0.18)`.
|
- внизу на тёмной полосе подпись `SHiNE subserver (v.0.18)`.
|
||||||
|
|
||||||
@ -51,9 +59,20 @@
|
|||||||
- `Wi-Fi (<current_ssid>) connected`
|
- `Wi-Fi (<current_ssid>) connected`
|
||||||
|
|
||||||
Переходы:
|
Переходы:
|
||||||
|
- кнопка `REGISTER ACCOUNT` -> `REGISTER_ACCOUNT_PLACEHOLDER`, только если пользователь не найден;
|
||||||
- кнопка `SETTINGS` -> `SETTINGS_MENU`;
|
- кнопка `SETTINGS` -> `SETTINGS_MENU`;
|
||||||
- свайп влево -> `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
|
## SETTINGS_MENU
|
||||||
|
|
||||||
Показывает вертикальное меню из 3 пунктов:
|
Показывает вертикальное меню из 3 пунктов:
|
||||||
@ -217,6 +236,15 @@
|
|||||||
- кнопки `SAVE`, `CANCEL`, `DEL`, `CLR`;
|
- кнопки `SAVE`, `CANCEL`, `DEL`, `CLR`;
|
||||||
- большую экранную клавиатуру.
|
- большую экранную клавиатуру.
|
||||||
|
|
||||||
|
## REGISTER_ACCOUNT_PLACEHOLDER
|
||||||
|
|
||||||
|
Временный экран-заглушка регистрации.
|
||||||
|
|
||||||
|
Показывает:
|
||||||
|
- заголовок `REGISTER ACCOUNT`;
|
||||||
|
- сообщение, что регистрационный flow пока не реализован;
|
||||||
|
- кнопку `BACK`.
|
||||||
|
|
||||||
## Клавиатура
|
## Клавиатура
|
||||||
|
|
||||||
Клавиатура единая для всех текстовых вводов.
|
Клавиатура единая для всех текстовых вводов.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,2 +1,2 @@
|
|||||||
client.version=1.2.152
|
client.version=1.2.153
|
||||||
server.version=1.2.144
|
server.version=1.2.145
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user