From 1c686fa842b12756c156edfbbd407384f8f196b8 Mon Sep 17 00:00:00 2001 From: dadaloop82 Date: Wed, 15 Apr 2026 21:17:34 +0000 Subject: [PATCH] feat(gateway): auto-reconnect to scale after disconnect (scale auto-off) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the scale turns off by itself (auto-off after inactivity), onDisconnected() now automatically restarts BLE scan after 5 s, with enableAutoConnect() set so the saved scale is connected as soon as it starts advertising again. The hint text shows 'šŸ”„ Reconnecting to saved scale in 5 s…' during the wait. --- .../it/dadaloop/evershelf/scalegate/MainActivity.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/evershelf-scale-gateway/app/src/main/kotlin/it/dadaloop/evershelf/scalegate/MainActivity.kt b/evershelf-scale-gateway/app/src/main/kotlin/it/dadaloop/evershelf/scalegate/MainActivity.kt index 3cccabc..eaadecd 100644 --- a/evershelf-scale-gateway/app/src/main/kotlin/it/dadaloop/evershelf/scalegate/MainActivity.kt +++ b/evershelf-scale-gateway/app/src/main/kotlin/it/dadaloop/evershelf/scalegate/MainActivity.kt @@ -243,6 +243,19 @@ class MainActivity : AppCompatActivity(), BleScaleListener, ServerEventListener override fun onDisconnected() { wsServer?.publishStatus("disconnected", null, null) updateUiDisconnected() + // Auto-reconnect: if a saved device exists, restart scan after a short delay. + // This handles the scale turning off by itself (auto-off) — when it powers + // back on it will start advertising again and we will pick it up. + if (bleManager.getSavedDeviceAddress() != null && bleManager.hasRequiredPermissions()) { + binding.tvScanHint.visibility = View.VISIBLE + binding.tvScanHint.text = "šŸ”„ Reconnecting to saved scale in 5 s…" + binding.root.postDelayed({ + if (!bleManager.isConnected) { + bleManager.enableAutoConnect() + bleManager.startScan() + } + }, 5_000L) + } } override fun onWeightReceived(reading: WeightReading) {