Project_SylDa/AGENTS.md
eddy 5fe5879873
All checks were successful
CI / firmware (pull_request) Successful in 1m4s
CI / android (pull_request) Successful in 11s
docs: document version.txt as single source of truth for firmware versions
2026-08-02 18:30:22 +02:00

3 KiB

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 (epenelab.io), actief HIGH, geen pullup nodig.
  • 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