platformio.ini: hardcoded upload_port is niet portable #11
Labels
No labels
bug
bug
critical
documentation
duplicate
enhancement
enhancement
feature
good first issue
help wanted
invalid
question
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eddy/Project_SylDa#11
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
In
platformio.inistaat een hardcoded upload_port per environment:Problemen:
/dev/ttyACM*kan wisselen als andere USB-apparaten worden aangesloten/dev/ttyACM0" (Atreus toetsenbord), maar/dev/ttyACM2is even onbetrouwbaarOplossing
Verwijder
upload_portuitplatformio.inien laat PlatformIO de juiste poort automatisch detecteren, óf gebruik eenplatformio.local.ini(gitignored) met machine-specifieke instellingen.Optie A: Auto-detectie (aanbevolen)
Verwijder
upload_portuit beide environments. PlatformIO kan automatisch de ESP32 vinden als er maar één verbonden is. Bij meerdere ESP32s kan de gebruikerpio run -e s3lite-server --target upload --upload-port /dev/...gebruiken.Optie B: platformio.local.ini
platformio.local.initoe aan.gitignoreupload_portnaarplatformio.local.ini:platformio.local.iniautomatisch metplatformio.iniOptie B geeft het gemak van hardcoded poorten zonder de machine-specifieke paden in git te committen.
Oplossing
Verwijder
upload_portuitplatformio.inien vervang door een POST-script dat automatisch de juiste ESP32 detecteert via een nieuwID?serial commando.1. Firmware:
ID?commandoBeide firmwares krijgen een nieuw serial commando:
ID?→ antwoordtSylDa_ServerID?→ antwoordtSylDa_ClientDit past in de bestaande serial command chain naast
KEY?,VERSION?, etc.2. Script:
tools/pio_upload_port.py(POST)Gebaseerd op PlatformIO docs (geverifieerd):
env.AddPreAction("upload", callback)— hook vlak vóór uploadenv["UPLOAD_PORT"]— dynamisch poort instellenenv.IsIntegrationDump()— overslaan tijdens IDE queriesinput()— gebruiker prompt (officieel gedocumenteerd)Logic:
/dev/serial/by-id/usb-Espressif_*voor ESP32 poortenID?\nnaar elke poort, match met verwachte ID (s3lite-server→SylDa_Server,s3lite-client→SylDa_Client)3.
platformio.iniGeen
upload_portmeer. Poort wordt dynamisch bepaald per upload.Beperking
Bij eerste-flash (lege ESP32) kan geen
ID?query beantwoord worden → gebruiker kiest handmatig uit beschikbare poorten.Geïmplementeerd in PR #13.
Wat is er gedaan
ID?serial commando toegevoegd aan beide firmwares (server antwoordtSylDa_Server, clientSylDa_Client)tools/pio_upload_port.pyPOST-script gemaakt dat:/dev/serial/by-id/usb-Espressif_*ID?query sturen en matchen met verwachte identiteitupload_portverwijderd uitplatformio.iniextra_scriptsuitgebreid metpost:tools/pio_upload_port.pypyserial(graceful fallback als niet geïnstalleerd)env.AddPreAction("upload", ...),env["UPLOAD_PORT"],env.IsIntegrationDump(),input()