esp32-workbench-otalisted
Install: claude install-skill majiayu000/claude-skill-registry-data
# 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
```bash
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
```bash
curl -s http://192.168.0.87:8080/api/firmware/list |