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
| Istilah | Definisi Sederhana | Analogi |
| REST API | Antarmuka standar yang memungkinkan perangkat berbeda (ESP32, Web, Mobile App) saling bertukar data menggunakan HTTP. | Pelayan internasional yang menjembatani tamu dari berbagai negara. |
| JSON | Format pertukaran data berbasis teks yang ringan, mudah dibaca manusia dan komputer. | Formulir isian dengan format Kunci: Nilai ("nama": "Budi"). |
| Parsing | Proses membaca dan menguraikan string teks biner/JSON menjadi variabel angka atau kata yang dapat dipakai program. | Menguraikan pesan sandi menjadi kalimat utuh. |
| Endpoint / URL API | Alamat 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)?
Apakah Anda siap lanjut ke Modul 11: Protokol MQTT Dasar (Publish, Subscribe, Broker, QoS)?