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: downloading → flashing → verifying → rebooting
Güvenlik
- ECDSA P-256 imzalama:
scripts/generate_firmware_signing_key.pyile 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üş