Belajar IoT Engineer - IoT Platforms & Cloud
Episode 7 of 28

Belajar IoT Engineer - IoT Platforms & Cloud

Mengenal IoT platform cloud: AWS IoT Core, Azure IoT Hub, dan GCP, konsep device registry, device shadow dan twin, kebijakan kredensial perangkat, serta praktik mendaftarkan dan menghubungkan ESP32 ke cloud pertama kali.

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

Pendahuluan

Sejauh ini perangkat kalian hanya berbicara ke broker MQTT di jaringan lokal. Pada episode ini, data itu kita kirim ke cloud — tempat perangkat terdaftar, data diterima dalam skala besar, dan aplikasi mengambilnya dari mana saja.

Mengapa cloud penting? Karena broker lokal tidak bisa: menerima jutaan perangkat, menyimpan riwayat data, mengatur identitas perangkat, atau menyalurkan data ke analitik. IoT platform cloud menangani semua itu sebagai layanan terkelola — kalian fokus pada perangkat dan aplikasi, bukan membangun infrastruktur sendiri.

Tiga Platform Utama

PlatformLayananFree TierBahasa Pengembangan
AWS IoT CoreDevice registry, MQTT, shadows, rules250K pesan/bulanAWS CLI, SDK, Terraform
Azure IoT HubDevice registry, twins, device-to-cloud8.000 pesan/hari (F1)Azure CLI, SDK, Terraform
Google Cloud IoT CoreDihentikan; alternatif partner & Vertex AI

Posisi Google unik: IoT Core dihentikan dan pengguna diarahkan ke partner + layanan lain (mis. Cloud Pub/Sub atau solusi dari vendor). Karena itu series ini fokus pada AWS IoT Core sebagai platform utama — plus konsep yang identik di Azure.

Note

Konsep IoT platform sangat portabel: kalian belajar satu platform, yang lain tinggal beda istilah. "Thing" di AWS ≈ "device" di Azure, "Device Shadow" di AWS ≈ "Device Twin" di Azure. Fokus pada konsep, bukan hafalan nama layanan.

Konsep Inti IoT Platform

Device Registry

Semua perangkat yang boleh terhubung harus terdaftar di registry — daftar identitas perangkat beserta sertifikat/kredensialnya. Registry berfungsi seperti daftar tamu gedung: hanya yang namanya tercatat yang boleh masuk.

Daftarkan perangkat di AWS IoT (CLI)
aws iot create-thing --thing-name sensor-ruang-01
aws iot create-keys-and-certificate --set-as-active \
  --certificate-pem-outfile device.pem.crt \
  --public-key-outfile device.public.key \
  --private-key-outfile device.private.key
aws iot attach-thing-principal --thing-name sensor-ruang-01 \
  --principal arn:aws:iot:ap-southeast-1:ACCOUNT:cert/...CERT

Perintah ini membuat perangkat sensor-ruang-01, lalu membuat sertifikat X.509 sebagai identitasnya. device.private.key adalah kunci rahasia yang hanya boleh ada di perangkat — jangan pernah commit ke repository.

Device Shadow / Twin

Device shadow adalah copy terakhir dari state perangkat di cloud — bayangkan cermin digital. Saat perangkat offline, aplikasi tetap bisa membaca/menulis state; saat perangkat online kembali, shadow disinkronkan. Ini memisahkan aplikasi dari ketersediaan fisik perangkat.

Document shadow perangkat
{
  "state": {
    "reported": { "temp": 26.5, "relay": "OFF" },
    "desired":  { "relay": "ON" }
  },
  "version": 42
}

Aplikasi menulis desired (yang diinginkan), perangkat membaca dan melaporkan hasilnya di reported (yang tercapai). Contoh: kalian ingin menyalakan relay dari aplikasi — tulis desired.relay = ON, perangkat yang online akan menerima dan mengeksekusi.

Rules / Routes

Platform bisa meneruskan pesan ke layanan lain berdasarkan aturan. Di AWS, Rule Engine memakai SQL sederhana:

Rule: hanya suhu yang diteruskan
SELECT deviceid, temperature, timestamp() AS ts
FROM 'sensor/+/telemetry'
WHERE temperature > 30

Rule ini menangkap pesan dari topik sensor/+/telemetry, hanya pesan dengan suhu di atas 30, dan meneruskannya (mis. ke InfluxDB, S3, atau Lambda). Detail pipeline data kita bahas di episode 8.

Praktik: Menghubungkan ESP32 ke AWS IoT

Firmware perlu tiga hal: endpoint, certificate, dan private key. Endpoint didapat dari AWS:

Cari endpoint akun
aws iot describe-endpoint --endpoint-type iot:Data-ATS
Output
"endpointAddress": "xxxxxxxxxxxxx-ats.iot.ap-southeast-1.amazonaws.com"

Bungkus sertifikat dan kunci ke dalam satu file:

Gabungkan cert + key untuk ESP32
cat device.pem.crt device.private.key > device.pem
src/main.cpp - publish ke AWS IoT
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include "secrets.h"   // ENDPOINT, CERT, KEY, WIFI_SSID, WIFI_PASS
 
WiFiClientSecure espClient;
PubSubClient mqtt(espClient);
 
void setup() {
    Serial.begin(115200);
    WiFi.begin(WIFI_SSID, WIFI_PASS);
    while (WiFi.status() != WL_CONNECTED) delay(500);
 
    espClient.setCACert(AWS_CERT_CA);
    espClient.setCertificate(AWS_CERT_CRT);
    espClient.setPrivateKey(AWS_CERT_PRIVATE);
 
    mqtt.setServer(ENDPOINT, 8883);
    mqtt.connect("sensor-ruang-01");
}
 
void loop() {
    mqtt.loop();
    mqtt.publish("sensor/ruang-01/telemetry",
                 "{\"temperature\":26.5,\"humidity\":61}");
    delay(10000);
}

Perhatikan perbedaan dari episode 5: koneksi memakai port 8883 (TLS) dan tiga sertifikat — CA root AWS, sertifikat perangkat, dan private key. Kredensial disimpan terpisah di secrets.h yang di-gitignore.

secrets.h (jangan commit)
const char *WIFI_SSID = "NAMA_WIFI";
const char *WIFI_PASS = "PASSWORD_WIFI";
const char *ENDPOINT  = "xxxxxxxxxxxxx-ats.iot.ap-southeast-1.amazonaws.com";
const char *AWS_CERT_CA    = "-----BEGIN CERTIFICATE-----...";
const char *AWS_CERT_CRT   = "-----BEGIN CERTIFICATE-----...";
const char *AWS_CERT_PRIVATE = "-----BEGIN RSA PRIVATE KEY-----...";

Caution

File secrets.h berisi kredensial live — wajib masuk .gitignore. Untuk produksi skala besar, lihat episode 19 (PKI & zero-touch provisioning): sertifikat dibuat di pabrik dan ditanam ke perangkat, bukan di-embed di source code.

Verifikasi Data Masuk

Pantau apakah pesan benar-benar sampai ke cloud:

Subscribe langsung ke topic AWS IoT
aws iot-data publish --topic "sensor/ruang-01/telemetry" \
  --payload '{"temperature":27.0}' --cli-binary-format raw-in-base64-out

Atau pakai MQTT test client di konsol AWS IoT — kalian akan melihat telemetry masuk real-time dari ESP32.

Kesalahan Umum

  1. Endpoint salah region/type — gunakan endpoint Data-ATS (bukan Data-ATS-OLD/legacy) agar TLS modern berfungsi.
  2. Cert tidak digabung benar — urutan certificate lalu private key dalam satu file PEM wajib benar.
  3. Kebijakan (policy) perangkat terlalu longgar — sertakan policy minimal: hanya boleh publish ke topik sendiri. Default yang mengizinkan semua topik adalah celah keamanan besar.
  4. Shadow tidak dipakai — aplikasi langsung menunggu perangkat online; pakai shadow agar desain terpisah dari ketersediaan fisik.
  5. Biaya tidak dipantau — free tier habis; set budget alert sejak hari pertama.

Penutup

Inti yang harus dibawa pulang:

  • IoT platform cloud mengelola registry, kredensial, shadow, dan rules untuk skala jutaan perangkat.
  • AWS IoT Core, Azure IoT Hub, dan GCP — konsepnya identik; Google IoT Core sudah dihentikan.
  • Device shadow memisahkan state aplikasi dari ketersediaan fisik perangkat.
  • ESP32 terhubung ke AWS lewat MQTT over TLS (8883) dengan sertifikat X.509.
  • Jangan pernah commit kredensial; batasi policy perangkat seminimal mungkin.

Di episode 8 selanjutnya, kita akan mengikuti perjalanan data setelah masuk cloud: data ingestion & pipeline — bagaimana telemetry diterima, dialirkan lewat streaming, dan disimpan, plus praktik membangun pipeline data dari IoT platform ke storage. Data kalian akan mulai "mengalir"!