From 81d1b84a7db93e03d3e81395730af545e162fa63a662e8960ddbc2a16b16aab1 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Sat, 13 Jun 2026 15:08:53 +0400 Subject: [PATCH] =?UTF-8?q?ESP32:=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D1=82=D1=8C=20homeserver=20sessionType=20=D0=B2=20?= =?UTF-8?q?SHiNE=20auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6-06-13_1450_esp32_session_type_homeserver.md | 16 ++++++++++++++++ .../shine_homeserver_main.ino | 5 +++++ .../reference/shine_homeserver_ui_spec.md | 11 +++++++++++ VERSION.properties | 4 ++-- 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 Dev_Docs/Pending_Features/2026-06-13_1450_esp32_session_type_homeserver.md diff --git a/Dev_Docs/Pending_Features/2026-06-13_1450_esp32_session_type_homeserver.md b/Dev_Docs/Pending_Features/2026-06-13_1450_esp32_session_type_homeserver.md new file mode 100644 index 0000000..000438f --- /dev/null +++ b/Dev_Docs/Pending_Features/2026-06-13_1450_esp32_session_type_homeserver.md @@ -0,0 +1,16 @@ +# ESP32 sessionType homeserver + +- краткое описание: + - `ESP32` homeserver теперь должен отправлять в `CreateAuthSession` и `SessionLogin` поля `sessionType = 100` и `clientPlatform = "ESP32"`. + +- что проверять: + - после перепрошивки устройство должно заново подключиться к `SHiNE`; + - в списке устройств у этой сессии должен отображаться тип `Homeserver` и платформа `ESP32`; + - детальная страница сеанса должна показывать те же значения. + +- ожидаемый результат: + - сервер принимает homeserver-сеанс без ошибки `SESSION_TYPE_MISMATCH`; + - UI сервера/клиента показывает `Homeserver · ESP32`. + +- статус: + - in_progress diff --git a/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino b/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino index 48791dd..8a0a921 100644 --- a/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino +++ b/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino @@ -81,6 +81,7 @@ static const uint8_t kBlockTypeAccessServers = 40; static const uint8_t kBlockTypeSessions = 50; static const uint8_t kBlockTypeTrustedState = 70; static const uint8_t kSessionTypeHomeserver = 100; +static const char *kSessionClientPlatformEsp32 = "ESP32"; enum Screen { SCREEN_HOME, @@ -3192,6 +3193,8 @@ static bool ensureShineSessionAuthenticated(String &errorOut) { + "\",\"sessionKey\":\"" + jsonEscape(sessionKey) + "\",\"timeMs\":" + String((unsigned long long)timeMs) + ",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64)) + + ",\"sessionType\":" + String((unsigned int)kSessionTypeHomeserver) + + ",\"clientPlatform\":\"" + jsonEscape(kSessionClientPlatformEsp32) + "\",\"clientInfo\":\"ESP32 homeserver\"}"; String loginResp; if (shineWsRequest(gShineWs, "SessionLogin", loginReq, loginResp)) { @@ -3257,6 +3260,8 @@ static bool ensureShineSessionAuthenticated(String &errorOut) { + ",\"authNonce\":\"" + jsonEscape(authNonce) + "\",\"deviceKey\":\"" + jsonEscape(bytesToBase64String(devicePub, 32)) + "\",\"signatureB64\":\"" + jsonEscape(bytesToBase64String(signature, 64)) + + ",\"sessionType\":" + String((unsigned int)kSessionTypeHomeserver) + + ",\"clientPlatform\":\"" + jsonEscape(kSessionClientPlatformEsp32) + "\",\"clientInfo\":\"ESP32 homeserver\"}"; String createResp; if (!shineWsRequest(gShineWs, "CreateAuthSession", createReq, createResp)) { diff --git a/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/reference/shine_homeserver_ui_spec.md b/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/reference/shine_homeserver_ui_spec.md index 348d4d4..7a900c9 100644 --- a/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/reference/shine_homeserver_ui_spec.md +++ b/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/reference/shine_homeserver_ui_spec.md @@ -30,6 +30,7 @@ - PIN-блокировка (в текущей временной сборке вход по PIN отключён, устройство открывает `HOME` сразу после старта); - базовые настройки, статус и главный экран; - сохранение `PDA` и `tx signature` после успешной регистрации. +- создание и возобновление серверной сессии `SHiNE` через WebSocket с `sessionType = 100` и `clientPlatform = "ESP32"`. Что пока считается именно прототипом, а не финальной интеграцией: @@ -70,6 +71,16 @@ - флаги: `wifiReady`, `serversReady`, `secretReady`, `registered`, `online`. +## Правило серверной сессии SHiNE + +При подключении к серверу `SHiNE` устройство должно авторизовываться как homeserver-сеанс: + +- `sessionType = 100` +- `clientPlatform = "ESP32"` +- `clientInfo = "ESP32 homeserver"` + +Это относится и к `CreateAuthSession`, и к `SessionLogin`. + ## Правила готовности к регистрации Кнопка регистрации доступна только если одновременно выполнены условия: diff --git a/VERSION.properties b/VERSION.properties index f418b9b..26cb229 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.181 -server.version=1.2.170 +client.version=1.2.182 +server.version=1.2.171