Belajar IoT Engineer - Device Management
Episode 9 of 28

Belajar IoT Engineer - Device Management

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Tiga Pilar Device Management

PilarFungsiContoh
ProvisioningMendaftarkan & memberi identitas perangkat baruKlaim perangkat, zero-touch provisioning
OTA UpdateMemperbarui firmware/konfigurasi dari jarak jauhFix bug, tambah fitur
Fleet ManagementMemantau & mengelola banyak perangkatHealth check, grup, deployment

Ketiganya saling terkait: provisioning menentukan siapa perangkat itu, OTA memperbarui apa yang berjalan, fleet management mengawasi bagaimana kondisinya.

Provisioning: Daftar Tamu untuk Perangkat

Provisioning adalah proses memberi identitas dan izin perangkat sebelum ia bergabung ke jaringan. Dua pendekatan utama:

PendekatanAlurCocok Untuk
ManualDaftarkan satu per satu, buat cert, upload ke perangkatPrototype, puluhan unit
Bulk/Zero-touchPerangkat klaim identitasnya sendiri dengan cert produksiRibuan 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 Update: Memperbarui Perangkat di Lapangan

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:

  1. Build firmware baru, tanda tangani secara digital.
  2. Upload ke storage (S3, server) dan buat manifest versi.
  3. Notify perangkat: ada versi baru (lewat MQTT topik command).
  4. Download & verify — perangkat mengunduh, memverifikasi signature, dan menulis ke partisi baru (A/B partition).
  5. Switch & rollback — perangkat reboot ke partisi baru; jika gagal boot, kembali ke partisi lama.
Alur OTA update
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.

Firmware OTA di ESP32

ESP32 dengan Arduino mendukung OTA via library ArduinoOTA (jaringan lokal) atau HTTPS download. Untuk produksi, pola HTTPS + verifikasi signature lebih aman:

src/main.cpp - cek dan download firmware baru
#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: Mengelola Ribuan Perangkat

Fleet management adalah operasional harian: memantau semua perangkat, mengelompokkannya, dan melakukan deployment bertahap.

PraktikDeskripsi
Health checkHeartbeat berkala + metrik (uptime, RSSI, versi firmware, memori)
GroupingKelompok per grup (lokasi, versi, model) untuk deployment bertarget
Gradual rolloutUpdate 10% → 50% → 100%; hentikan jika error meningkat
Remote diagnoseLog & command jarak jauh untuk perangkat bermasalah

Contoh heartbeat di firmware:

Payload heartbeat perangkat
{
  "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.

Praktik: Alur OTA Sederhana

Untuk praktik lokal tanpa cloud penuh, uji alur OTA dengan ESP32 di jaringan yang sama:

  1. Host file firmware.bin di server lokal (atau python3 -m http.server 8080).
  2. Firmware lama memeriksa topik MQTT ota/command.
  3. Kirim UPDATE → perangkat download dari http://192.168.1.10:8080/firmware.bin → verifikasi ukuran → restart.
Simulasi notifikasi OTA
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.

Kesalahan Umum

  1. OTA tanpa rollback — satu firmware rusak = satu perangkat rusak permanen. Siapkan fallback.
  2. Update semua perangkat sekaligus — satu bug kecil jadi bencana seluruh fleet. Pakai gradual rollout.
  3. Tanpa verifikasi signature — update jadi vector serangan.
  4. Firmware tidak versi — tanpa manifest versi, kalian tidak tahu apa yang berjalan di setiap perangkat.
  5. Mengabaikan fleet health — baru tahu perangkat mati saat user komplain; aktifkan heartbeat dan alerting.

Penutup

Inti yang harus dibawa pulang:

  • Device management punya tiga pilar: provisioning, OTA update, dan fleet management.
  • Provisioning manual untuk prototype; zero-touch untuk produksi skala besar.
  • OTA wajib: download → verify signature → tulis slot baru → rollback jika gagal.
  • Fleet management: heartbeat, grouping, gradual rollout, dan remote diagnose.
  • Jangan pernah update tanpa rollback, dan jangan update semua sekaligus.

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!