Kembali ke Katalog Modul
MODUL 10 DEEP DIVE

REST API Architecture & Parsing Data JSON

MODUL 10 (SPESIALIS IOT): REST API & PARSING DATA JSON


๐Ÿ“Œ META MODUL & PRASYARAT

  • Bidang Spesialisasi: Web Services, REST Architecture & Data Formats.
  • Target Pembaca: Pembelajar yang sudah menguasai HTTP Server (Modul 09).
  • Learning Outcome:
  • Memahami arsitektur REST (Representational State Transfer) API.
  • Mampu membuat dan mengurai format data JSON (JavaScript Object Notation) di C++.
  • Menguasai penggunaan library ArduinoJson 6/7 pada ESP32 tanpa buffer overflow.
  • Mampu mengambil data cuaca/waktu dari API publik (OpenWeatherMap / NTP Server) ke ESP32.
  • Estimasi Waktu Belajar: 120 Menit.
  • Tingkat Kesulitan: ๐ŸŸก Menengah (Level 10 / 40).
  • Prasyarat: Modul 09 (Protokol HTTP & Embedded Web Server).

๐Ÿ“š GLOSARIUM & DAFTAR ISTILAH BARU

IstilahDefinisi SederhanaAnalogi
REST APIAntarmuka standar yang memungkinkan perangkat berbeda (ESP32, Web, Mobile App) saling bertukar data menggunakan HTTP.Pelayan internasional yang menjembatani tamu dari berbagai negara.
JSONFormat pertukaran data berbasis teks yang ringan, mudah dibaca manusia dan komputer.Formulir isian dengan format Kunci: Nilai ("nama": "Budi").
ParsingProses membaca dan menguraikan string teks biner/JSON menjadi variabel angka atau kata yang dapat dipakai program.Menguraikan pesan sandi menjadi kalimat utuh.
Endpoint / URL APIAlamat spesifik tempat data API dapat diakses (misal: https://api.weather.com/v1/today).Nomor loket khusus layanan tertentu di bank.

10. REST API & Parsing Data JSON pada ESP32

๐Ÿง  STRUKTUR DATA JSON UNTUK IOT TELEMETRY

{
"device_id": "esp32_tanaman_01",
"uptime_seconds": 3600,
"sensors": {
"temperature": 28.5,
"humidity": 65,
"soil_moisture": 42
},
"actuators": [
{ "name": "relay_pump", "status": true },
{ "name": "led_green", "status": false }
]
}

โšก CHEAT SHEET KODE ARDUINOJSON ESP32

#include <ArduinoJson.h>

// 1. MEMBUAT (SERIALIZE) STRING JSON:
void createJsonPayload() {
StaticJsonDocument<256> doc;
doc["device_id"] = "esp32_node1";
doc["temp"] = 29.4;
doc["humidity"] = 72;

String output;
serializeJson(doc, output);
Serial.println("JSON Output: " + output);
// Result: {"device_id":"esp32_node1","temp":29.4,"humidity":72}
}

// 2. MENGURAI (DESERIALIZE) STRING JSON MASUK:
void parseJsonInput(String inputJson) {
StaticJsonDocument<512> doc;
DeserializationError error = deserializeJson(doc, inputJson);

if (error) {
Serial.print("Gagal parse JSON: ");
Serial.println(error.c_str());
return;
}

const char* devId = doc["device_id"];
float temp = doc["temp"];
int hum = doc["humidity"];

Serial.printf("Device: %s | Suhu: %.1f C | Lembap: %d%%\n", devId, temp, hum);
}



Latihan & Quiz Evaluasi Modul

Progres Quiz: 0 / 2 Soal
SOAL #1
Format pertukaran data berbasis teks manakah yang menjadi standar utama pada arsitektur REST API modern karena ukurannya yang sangat ringan?
SOAL #2
Library C++ manakah yang paling populer dan efisien digunakan untuk mengurai (*deserialize*) data JSON pada mikroprosesor ESP32/Arduino?

Kunci Jawaban & Pembahasan

Kunci Jawaban: 1. c. JSON, 2. b. ArduinoJson.


Apakah Anda siap lanjut ke Modul 11: Protokol MQTT Dasar (Publish, Subscribe, Broker, QoS)?