Project_SylDa/AGENTS.md
eddy 3b17f1fe50
Some checks failed
CI / build (push) Has been cancelled
touch: INPUT_PULLUP, !t1Active logica (sensor actief LOW)
2026-08-04 01:20:47 +02:00

50 lines
3.1 KiB
Markdown

# Project_SylDa
M5Stack Atom S3 Lite (ESP32-S3), 2 relais, 2 touch sensors (HS-S43A), BLE, Android app USB OTG.
## Hardware
- **Board:** M5Stack Atom S3 Lite (ESP32-S3)
- **Pinnen:** G1=RELAY1, G2=RELAY2, G8=TOUCH1, G6=TOUCH2, G41=BUTTON (active low), G46=LED
- **Touch:** HS-S43A Digital Capacitive Switch Module (openelab.io), actief HIGH. Pin mode: `INPUT_PULLUP` (pullup voor veiligheid zonder sensor; sensor overrulet de pullup bij aanraking).
- **BLE:** "SylDa_Server", service `4fafc201-1fb5-459e-8fcc-c5c9c331914b`
- **BLE cmds:** 0x00=relay1 OFF, 0x01=ON, 0x02=relay2 ON, 0x03=OFF, HMAC_PKT_SIZE=37 (1 cmd + 4 seq + 32 hmac)
- **NVS:** namespace `hmac`, key `key` — HMAC key 32 bytes, NVS op 0x9000-0xDFFF (partitie tabel)
## Workspace
`/home/eddy/src/Project_SylDa/` — Atom S3 Lite firmware (server + client) + Android app
## Firmware — `src/main.cpp`
- PlatformIO, `platform = espressif32@6.7.0`, board `esp32-s3-devkitc-1`
- CDC USB serial (`ARDUINO_USB_CDC_ON_BOOT=1`), QIO QSPI flash
- **Upload:** `pio run -t upload` (via `--no-stub`). Poort: **NOOIT `/dev/ttyACM0`** (dat is het Atreus toetsenbord). ESP32 herkennen via `ls /dev/serial/by-id/ | grep -i espressif` en die poort gebruiken. PlatformIO: pas `upload_port` in `platformio.ini` aan naar de gevonden poort.
- **Direct flashen (handmatig):** `~/.platformio/packages/tool-esptoolpy/esptool.py --no-stub --chip esp32s3 --port /dev/ttyACM1 --baud 115200 --before default_reset --after hard_reset write_flash --flash_mode keep --flash_size keep 0x0 .pio/build/s3lite-server/bootloader.bin 0x8000 .pio/build/s3lite-server/partitions.bin 0xE000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin 0x10000 .pio/build/s3lite-server/firmware.bin`
- NVS: namespace "hmac", key "key" (32 bytes HMAC)
- BLE advertising "SylDa_Server", HMAC-verified relay commands
## Android app — `android/`
- CDC key exchange (geen FTDI), 2 relay knoppen (touch-to-hold), byte commands
- Key exchange: SettingsActivity via USB CDC (`UsbSerialTransport`)
- Flash: EspFlasher via USB CDC, `eraseFlash()` VERWIJDERD (NVS blijft behouden)
- Partitie layout flash: bootloader 0x0, partitions 0x8000, boot_app0 0xE000, firmware 0x10000
- BLE scan: 30s timeout, auto-retry 3x, reconnect na disconnect
- `deviceId` = UUID van ESP, `hmacKey` = HMAC key uit key exchange
- Bestanden: `MainActivity.kt`, `SettingsActivity.kt`, `EspFlasher.kt`, `UsbSerialTransport.kt`, `PrefsHelper.kt`, `UsbUtils.kt`
- Assets: `firmware/bootloader.bin`, `partitions.bin`, `boot_app0.bin`, `firmware.bin`
## Versiebeheer
- **Single source of truth:** `version.txt` (regels `server=N` en `client=N`)
- `src/version.h` wordt **automatisch gegenereerd** uit `version.txt` door PlatformIO pre-build script
- Nooit `version.h` handmatig bewerken — altijd `version.txt` aanpassen en `pio run` laten regenereren
- Firmwareversie ophogen: bump het nummer in `version.txt`, commit, rebuild firmware, kopieer `.bin` naar Android assets
## ADB — telefoon
```
adb connect 192.168.1.43:5555
adb -s 192.168.1.43:5555 install -r app/build/outputs/apk/debug/app-debug.apk
```