ESP32 OTA & Gestion de Firmware

VérifiéSûr

Téléchargement, gestion et mise à jour OTA (over-the-air) de firmware pour ESP32. Inclut upload, listing, suppression de fichiers et workflow complet de mise à jour sans fil.

Spar Skills Guide Bot
DeveloppementIntermédiaire
3002/06/2026
Claude CodeCopilot
#ota#firmware#esp32#over-the-air#workbench

Recommandé pour

Notre avis

Cette compétence permet de gérer les mises à jour OTA (over-the-air) pour l'ESP32 Workbench : téléversement, listage, suppression de binaires et déclenchement de la mise à jour.

Points forts

  • Automatisation complète du flux OTA via API REST
  • Gestion centralisée des fichiers firmware sur le workbench
  • Intégration avec les logs UDP pour un suivi non bloquant
  • Support des téléversements multipart et des requêtes HTTP relayées

Limites

  • Nécessite que le dispositif soit déjà sur le réseau WiFi
  • Ne fonctionne pas pour des dispositifs vierges ou brickés
  • Dépend de la disponibilité du workbench à l'adresse IP fixe 192.168.0.87
Quand l'utiliser

À utiliser pour des mises à jour de firmware sans contact série, lors de cycles de développement itératifs avec un workbench ESP32.

Quand l'éviter

Évitez cette compétence si l'ESP32 n'a pas de support OTA intégré ou si une interface série est nécessaire (ex. flash de bootloader).

Analyse de sécurité

Sûr
Score qualité90/100

The skill uses curl to interact with a local HTTP API for firmware management. No destructive file operations, exfiltration, or code execution beyond the intended OTA update workflow.

Aucun point d'attention détecté

Exemples

Upload and trigger OTA update
Upload the file build/firmware.bin to the workbench under project 'sensor', then trigger an OTA update on the ESP32 and monitor progress via UDP logs.
List and delete firmware files
List all uploaded firmware files on the workbench, then delete the file 'old.bin' from project 'sensor'.
Troubleshoot failed OTA
After triggering an OTA update on the ESP32, I see no progress in UDP logs. Help me diagnose and fix the issue.

name: esp32-workbench-ota description: OTA firmware upload, listing, deletion, and over-the-air update for the Universal ESP32 Workbench. Triggers on "OTA", "firmware", "update", "upload", "binary", "over-the-air".

ESP32 OTA & Firmware Repository

Base URL: http://192.168.0.87:8080

When to Use OTA (vs Serial Flashing)

Use OTA when:

  • Device already runs firmware with an OTA HTTP endpoint
  • Device is on the WiFi network (connected to workbench's AP or same LAN)
  • You want to update firmware without blocking the serial port
  • You're doing iterative development (build → upload → trigger → monitor cycle)

Do NOT use OTA when:

  • Device is blank/bricked — use serial flashing (see esp32-workbench-serial-flashing)
  • Device firmware has no OTA support — use serial flashing
  • Device has no WiFi connectivity — use serial flashing
  • You need to flash a bootloader or partition table — only esptool can do this

Endpoints

| Method | Path | Purpose | |--------|------|---------| | POST | /api/firmware/upload | Upload firmware binary (multipart/form-data) | | GET | /api/firmware/list | List all uploaded firmware files | | DELETE | /api/firmware/delete | Delete a firmware file | | GET | /firmware/<project>/<file> | Download URL (ESP32 fetches from here during OTA) |

End-to-End OTA Workflow

Step 1: Upload firmware to workbench

curl -X POST http://192.168.0.87:8080/api/firmware/upload \
  -F "project=my-project" \
  -F "file=@build/firmware.bin"

Response: {"ok": true, "project": "my-project", "filename": "firmware.bin", "size": 456789}

Step 2: Verify upload

curl -s http://192.168.0.87:8080/api/firmware/list | jq .

Step 3: Ensure device is on the network

The device must be able to reach http://192.168.0.87:8080. Use enter-portal to provision if needed (see esp32-workbench-wifi).

Step 4: Clear UDP log buffer (for clean monitoring)

curl -X DELETE http://192.168.0.87:8080/api/udplog

Step 5: Trigger OTA on the ESP32 via HTTP relay

OTA_BODY=$(echo -n '{"url":"http://192.168.0.87:8080/firmware/my-project/firmware.bin"}' | base64)

curl -X POST http://192.168.0.87:8080/api/wifi/http \
  -H 'Content-Type: application/json' \
  -d "{\"method\": \"POST\", \"url\": \"http://192.168.4.2/ota\", \"headers\": {\"Content-Type\": \"application/json\"}, \"body\": \"$OTA_BODY\", \"timeout\": 30}"

Step 6: Monitor OTA progress

# Via UDP logs (preferred — non-blocking)
curl "http://192.168.0.87:8080/api/udplog?limit=50"

# Or via serial monitor (see esp32-workbench-logging)
curl -X POST http://192.168.0.87:8080/api/serial/monitor \
  -H 'Content-Type: application/json' \
  -d '{"slot": "slot-1", "pattern": "OTA.*complete", "timeout": 60}'

Managing Firmware Files

# List all uploaded firmware
curl http://192.168.0.87:8080/api/firmware/list

# Delete a firmware file
curl -X DELETE http://192.168.0.87:8080/api/firmware/delete \
  -H 'Content-Type: application/json' \
  -d '{"project": "my-project", "filename": "firmware.bin"}'

# The download URL for ESP32 to fetch:
# http://192.168.0.87:8080/firmware/<project>/<filename>

Troubleshooting

| Problem | Fix | |---------|-----| | Upload returns "expected multipart/form-data" | Use -F flags (not -d) for multipart upload | | File not in list after upload | Check project/filename; .. and / are rejected | | ESP32 can't download firmware | Device must reach workbench at 192.168.0.87:8080; check WiFi | | OTA trigger times out | Check device's OTA endpoint URL; increase HTTP relay timeout | | No progress in UDP logs | Device may not send UDP logs — check serial monitor instead (see esp32-workbench-logging) | | OTA trigger returns error | Verify device firmware has OTA endpoint; check relay response body |

Skills similaires