From 477ab3b58043ccdb7e5c4a36b5be9c560f0e3e3923651827b4467315587cf9de Mon Sep 17 00:00:00 2001 From: AidarKC Date: Sat, 13 Jun 2026 12:53:40 +0400 Subject: [PATCH] =?UTF-8?q?ESP32:=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20homeserver=20=D0=B8=20=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=8C=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-06-13_1545_esp32_homeserver_pda_update.md | 1 + .../shine_homeserver_main.ino | 28 +++++++++++++++++-- VERSION.properties | 4 +-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Dev_Docs/Pending_Features/2026-06-13_1545_esp32_homeserver_pda_update.md b/Dev_Docs/Pending_Features/2026-06-13_1545_esp32_homeserver_pda_update.md index b007af3..1d4068f 100644 --- a/Dev_Docs/Pending_Features/2026-06-13_1545_esp32_homeserver_pda_update.md +++ b/Dev_Docs/Pending_Features/2026-06-13_1545_esp32_homeserver_pda_update.md @@ -16,6 +16,7 @@ 6. Если действие завершается ошибкой, проверить, что: - текст ошибки показан на экране результата; - команда `last_error` по USB возвращает полный сохранённый payload. + 7. Во временной диагностической сборке после старта устройства подождать 15 секунд и проверить, что при наличии жёлтой homeserver-кнопки устройство само делает попытку `ADD/FIX HOMESERVER`, а результат пишет в USB-диагностику. - ожидаемый результат: устройство после обычной регистрации пользователя способно отдельной транзакцией добавить или исправить homeserver-сессию в `shine_users` PDA, а ошибки этого шага сохраняются в ту же USB/NVS-диагностику. 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 a964ada..a2c5aa8 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 @@ -304,6 +304,10 @@ static String gLastRegisterDiagSummary; static String gLastRegisterDiagDetails; static String gLastRegisterDiagTime; static String gRegisterTriggerSource = "manual"; +static unsigned long gBootMillis = 0; +static bool gAutoHomeserverTestArmed = true; +static bool gAutoHomeserverTestStarted = false; +static unsigned long gLastAutoHomeserverAttemptMs = 0; static String gSerialCommandBuffer; static String gShineSessionId; static String gShineSessionKey; @@ -2349,7 +2353,7 @@ static bool updateHomeserverSessionOnSolana(bool requireExisting, String &messag if (session.sessionType == kSessionTypeHomeserver && session.sessionName == gHomeserverValue) { foundSession = true; memcpy(session.sessionPubKey32, homeserverPub, 32); - session.sessionVersion = 0; + session.sessionVersion = 1; break; } } @@ -2359,7 +2363,7 @@ static bool updateHomeserverSessionOnSolana(bool requireExisting, String &messag } ShinePdaSessionRecord rec; rec.sessionType = kSessionTypeHomeserver; - rec.sessionVersion = 0; + rec.sessionVersion = 1; rec.sessionName = gHomeserverValue; memcpy(rec.sessionPubKey32, homeserverPub, 32); nextState.sessions.push_back(rec); @@ -5049,6 +5053,7 @@ static void handleSwipe(SwipeDirection swipe) { void setup() { Serial.begin(115200); sodium_init(); + gBootMillis = millis(); Wire.begin(PIN_I2C_SDA, PIN_I2C_SCL); initPowerManagement(); @@ -5110,6 +5115,25 @@ void loop() { manageAccountPdaRefresh(); manageShineConnection(); + if (gAutoHomeserverTestArmed + && !gTouchDown + && millis() - gBootMillis >= 15000UL + && millis() - gLastAutoHomeserverAttemptMs >= 45000UL + && gShowHomeserverPdaActionButton + && (gHomeserverPdaCanAdd || gHomeserverPdaCanFix)) { + gAutoHomeserverTestStarted = true; + gLastAutoHomeserverAttemptMs = millis(); + gRegisterTriggerSource = gHomeserverPdaCanFix ? "auto-boot-fix-homeserver" : "auto-boot-add-homeserver"; + String updateMessage; + Serial.println("AUTO_HOMESERVER_PDA_BEGIN"); + if (!updateHomeserverSessionOnSolana(gHomeserverPdaCanFix, updateMessage)) { + gHomeserverPdaResultSuccess = false; + gHomeserverPdaResultMessage = updateMessage; + gHomeserverPdaResultDetails = ""; + } + Serial.println("AUTO_HOMESERVER_PDA_END"); + } + static unsigned long lastHomeRefreshMs = 0; if (gCurrentScreen == SCREEN_HOME && !gTouchDown && millis() - lastHomeRefreshMs >= HOME_REFRESH_MS) { lastHomeRefreshMs = millis(); diff --git a/VERSION.properties b/VERSION.properties index 516881a..18a6233 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.176 -server.version=1.2.165 +client.version=1.2.177 +server.version=1.2.166