Ana içeriğe geç

OTA Firmware Güncelleme

Tetikleme

MQTT komutu ile tetiklenir:

  • Tenant-level: tenant/{tid}/gw/{gid}/cmd/ota (online cihazlar)
  • Device-level: zeus/devices/{mac}/ota/command (offline, retained mesaj)

Güncelleme Akışı

1. MQTT OTA command alınır
2. Firmware URL'den indirilir (MinIO signed URL)
3. SHA-256 checksum doğrulanır
4. ECDSA P-256 imza doğrulanır (opsiyonel)
5. esp_ota_begin() ile yazma başlar
6. esp_ota_write() ile flash'a yazılır
7. esp_ota_end() ile tamamlanır
8. Boot partition değiştirilir (ota_0 veya ota_1)
9. Progress raporlanır: zeus/devices/{mac}/ota/progress
10. ESP32 yeniden başlatılır
11. Post-boot doğrulama yapılır
12. Başarısızsa otomatik rollback

Progress Raporlama

Topic: zeus/devices/{mac}/ota/progress
Payload: {"progress": 45, "stage": "downloading"}

Aşamalar: downloadingflashingverifyingrebooting

Güvenlik

  • ECDSA P-256 imzalama: scripts/generate_firmware_signing_key.py ile anahtar çifti oluşturulur
  • SHA-256 checksum: Her firmware binary'si için zorunlu
  • Signed URL: MinIO'dan zamanlı indirme bağlantısı
  • Rollback: Boot doğrulama başarısız olursa önceki firmware'e dönüş