Mengelola perangkat IoT dari jarak jauh: provisioning perangkat baru, pembaruan firmware over-the-air (OTA) dengan verifikasi dan rollback, hingga fleet management untuk ribuan perangkat, plus praktik membuat alur OTA update sederhana.

Di episode 7 dan 8 perangkat kalian sudah terdaftar di cloud dan datanya mengalir. Kini muncul masalah dunia nyata: bagaimana mengelola ratusan bahkan ribuan perangkat yang tersebar? Firmware punya bug? Perlu update fitur? Satu perangkat rusak dan butuh diagnosis?
Ini wilayah device management — dan perbedaannya sangat terasa: demo dengan 3 perangkat di meja tidak pernah menyentuh masalah ini, tapi produksi dengan 10.000 perangkat mustahil tanpa manajemen yang baik.
| Pilar | Fungsi | Contoh |
|---|---|---|
| Provisioning | Mendaftarkan & memberi identitas perangkat baru | Klaim perangkat, zero-touch provisioning |
| OTA Update | Memperbarui firmware/konfigurasi dari jarak jauh | Fix bug, tambah fitur |
| Fleet Management | Memantau & mengelola banyak perangkat | Health check, grup, deployment |
Ketiganya saling terkait: provisioning menentukan siapa perangkat itu, OTA memperbarui apa yang berjalan, fleet management mengawasi bagaimana kondisinya.
Provisioning adalah proses memberi identitas dan izin perangkat sebelum ia bergabung ke jaringan. Dua pendekatan utama:
| Pendekatan | Alur | Cocok Untuk |
|---|---|---|
| Manual | Daftarkan satu per satu, buat cert, upload ke perangkat | Prototype, puluhan unit |
| Bulk/Zero-touch | Perangkat klaim identitasnya sendiri dengan cert produksi | Ribuan unit, pabrik |
Di episode 7 kita provisioning manual via AWS CLI. Untuk produksi, perangkat diprogram di pabrik dengan identitas khusus yang memungkinkan klaim otomatis — misalnya Just-in-Time Provisioning (JITP) di AWS: perangkat datang dengan sertifikat, platform mendaftarkannya otomatis saat koneksi pertama. Detail lengkap PKI kita bahas di episode 19.
OTA (Over-The-Air) adalah pembaruan firmware tanpa menyentuh perangkat fisik. Tanpa OTA, update 10.000 perangkat berarti kirim teknisi ke lapangan — mahal dan lambat.
Alur OTA yang benar:
Build firmware v1.3 → sign → upload S3
→ MQTT notify "versi baru tersedia"
→ device download + verify signature
→ tulis ke slot B → reboot → verifikasi
→ sukses: mark v1.3 aktif / gagal: boot slot A (rollback)Pola A/B partition (dual slot) adalah standar industri: dua partisi firmware. Pembaruan menulis ke slot cadangan; jika boot gagal, perangkat otomatis kembali ke slot lama — tidak pernah "bricked" oleh update buruk.
ESP32 dengan Arduino mendukung OTA via library ArduinoOTA (jaringan lokal) atau HTTPS download. Untuk produksi, pola HTTPS + verifikasi signature lebih aman:
#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <Update.h>
void checkForUpdate(const char *version) {
HTTPClient http;
http.begin("https://ota.example.com/firmware.bin");
int code = http.GET();
if (code == HTTP_CODE_OK) {
int total = http.getSize();
if (Update.begin(total)) {
size_t written = Update.writeStream(http.getStream());
if (Update.end() && written == total) {
Serial.println("firmware OK, reboot...");
ESP.restart();
} else {
Serial.println("update gagal, tetap di versi lama");
}
}
}
http.end();
}
void loop() {
// subscribe topik "ota/command": terima "UPDATE" → panggil checkForUpdate
}Warning
OTA tanpa verifikasi signature adalah pintu masuk serangan: penyerang yang bisa menulis ke server OTA akan mengendalikan semua perangkat. Wajib tanda tangani firmware dan verifikasi di perangkat sebelum dijalankan. Detail keamanan update kita bahas di episode 11.
Fleet management adalah operasional harian: memantau semua perangkat, mengelompokkannya, dan melakukan deployment bertahap.
| Praktik | Deskripsi |
|---|---|
| Health check | Heartbeat berkala + metrik (uptime, RSSI, versi firmware, memori) |
| Grouping | Kelompok per grup (lokasi, versi, model) untuk deployment bertarget |
| Gradual rollout | Update 10% → 50% → 100%; hentikan jika error meningkat |
| Remote diagnose | Log & command jarak jauh untuk perangkat bermasalah |
Contoh heartbeat di firmware:
{
"device_id": "ruang-01",
"firmware": "v1.2.1",
"uptime_s": 86400,
"rssi": -58,
"free_heap": 189632
}Dengan data ini, dashboard fleet langsung menunjukkan: berapa perangkat online, versi mana yang tersebar, dan perangkat mana yang sinyalnya lemah.
Gradual rollout adalah kunci produksi: jangan update semua perangkat sekaligus. Mulai dari grup kecil, pantau metrik error, baru perluas. Jika batch pertama gagal, hentikan deployment sebelum kerusakan menyebar.
Untuk praktik lokal tanpa cloud penuh, uji alur OTA dengan ESP32 di jaringan yang sama:
firmware.bin di server lokal (atau python3 -m http.server 8080).ota/command.UPDATE → perangkat download dari http://192.168.1.10:8080/firmware.bin → verifikasi ukuran → restart.mosquitto_pub -h 192.168.1.10 -t "ruang-01/ota/command" -m "UPDATE"Tip
Mulai dengan OTA berbasis HTTPS + version check sebelum mencoba pola A/B yang kompleks. Urutan kematangan: 1) OTA HTTP lokal, 2) OTA HTTPS + signature, 3) A/B partition + gradual rollout. Jangan langsung lompat ke tingkat 3 di produk pertama.
Inti yang harus dibawa pulang:
Di episode 10 selanjutnya, kita akan menggeser sebagian beban ke dekat perangkat: edge computing — gateway edge, pemrosesan lokal, dan mode offline — plus praktik memindahkan sebagian pipeline ke perangkat kalian. Data tidak lagi selalu harus naik ke cloud!