feat: add device UUID pairing — unique identity per ESP-phone pair
- Firmware: auto-generate 16-byte UUID on first boot (NVS), new READ characteristic - BLE name: AtomS3R-Relay → SylDa_Server - KEY? now returns DEVICE_ID + HMAC_KEY, SET_ID command for UUID provisioning - App: UUID+HMAC loaded from prefs, scan by service UUID, verify UUID after connect - UUID mismatch → disconnect + skip address + rescan - Key conflict dialog: keep ESP keys, overwrite ESP (with checkbox confirm), or cancel - NO_KEY with existing app keys: send existing pair instead of generating new - Added design spec doc
This commit is contained in:
parent
73b3c0eaa0
commit
348c55d830
3 changed files with 527 additions and 106 deletions
|
|
@ -13,14 +13,31 @@
|
|||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:contentDescription="Instellingen" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/relayButton"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="200dp"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="HOLD"
|
||||
android:textSize="24sp"
|
||||
android:enabled="false" />
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center">
|
||||
|
||||
<Button
|
||||
android:id="@+id/relay1Button"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="200dp"
|
||||
android:text="1"
|
||||
android:textSize="24sp"
|
||||
android:enabled="false" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/relay2Button"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="200dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="2"
|
||||
android:textSize="24sp"
|
||||
android:enabled="false" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/statusText"
|
||||
|
|
|
|||
21
android/app/src/main/res/layout/dialog_overwrite_confirm.xml
Normal file
21
android/app/src/main/res/layout/dialog_overwrite_confirm.xml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="20dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/msg_overwrite_warning"
|
||||
android:textSize="14sp"
|
||||
android:paddingBottom="16dp" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/confirmCheckBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/checkbox_confirm_overwrite" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -15,6 +15,7 @@
|
|||
<string name="status_bluetooth_disabled">Bluetooth not enabled</string>
|
||||
<string name="status_scanning">Scanning…</string>
|
||||
<string name="status_device_not_found">Device not found</string>
|
||||
<string name="status_wrong_device">Verkeerd apparaat — opnieuw scannen…</string>
|
||||
<string name="button_retry_scan">Opnieuw scannen</string>
|
||||
|
||||
<!-- MainActivity UI -->
|
||||
|
|
@ -29,6 +30,20 @@
|
|||
<string name="key_exchange_failed">Sleutel uitwisselen mislukt - probeer opnieuw</string>
|
||||
<string name="flash_failed">Flashen mislukt: %s</string>
|
||||
|
||||
<!-- Key conflict dialog -->
|
||||
<string name="title_key_conflict">Sleutels komen niet overeen</string>
|
||||
<string name="msg_key_conflict">De ESP (SylDa_Server) heeft andere sleutels dan deze app. Wat wil je doen?</string>
|
||||
<string name="button_keep_esp_keys">ESP sleutels overnemen</string>
|
||||
<string name="button_overwrite_esp">App sleutels overzetten</string>
|
||||
<string name="button_confirm">Bevestigen</string>
|
||||
|
||||
<!-- Overwrite confirmation dialog -->
|
||||
<string name="title_overwrite_confirm">ESP sleutels overschrijven?</string>
|
||||
<string name="msg_overwrite_warning">Dit vervangt de sleutels van de ESP. De ESP kan daarna niet meer met de oorspronkelijke app communiceren.</string>
|
||||
<string name="checkbox_confirm_overwrite">Ik weet het zeker</string>
|
||||
<string name="title_overwriting_keys">Sleutels overschrijven</string>
|
||||
<string name="msg_writing_keys">Sleutels schrijven naar ESP…</string>
|
||||
|
||||
<!-- SettingsActivity dialogs -->
|
||||
<string name="title_key_exchange">Sleutel Uitwisselen</string>
|
||||
<string name="title_firmware_flash">Firmware Flashen</string>
|
||||
|
|
|
|||
Loading…
Reference in a new issue