Logo Universitas

Universitas ASA Indonesia


Program Studi: Teknologi Informasi
Mata Kuliah: Internet of Things
SKS: 4 (2 teori, 2 praktikum)
Dosen Pengampu: Istiqomah Sumadikarta, S.T., M.Kom.
Beranda Mundur Maju

Pertemuan 13: Pengenalan dan Praktikum REST API pada IoT

Tujuan Pembelajaran

1. Pengenalan API

API (Application Programming Interface) adalah sekumpulan aturan yang memungkinkan satu aplikasi berinteraksi dengan aplikasi lain. Dalam IoT, API digunakan untuk menghubungkan perangkat dengan server atau layanan cloud.

Penggunaan API bertujuan untuk saling berbagi data antar aplikasi yang berbeda, mempercepat proses pengembangan aplikasi dengan cara menyediakan sebuah function yang terpisah.

Cara Kerja API

2. Cara Kerja API

API bekerja sebagai perantara antara klien dan server. Klien mengirimkan request ke server melalui endpoint tertentu, dan server memberikan response berisi data atau hasil yang diminta.

API secara eksplisit memanfaatkan metodologi HTTP yang ditentukan oleh protokol RFC 2616. Permintaan ke API bisa menggunakan method GET untuk mengambil sumber daya, PUT untuk mengubah status atau memperbarui sumber daya, yang dapat berupa objek, file, atau blok, POST untuk membuat sumber daya itu, dan DELETE untuk menghapusnya.

Cara Kerja API

3. REST API

a. Pengenalan REST API

REST (Representational State Transfer) adalah arsitektur API yang menggunakan protokol HTTP. REST API memanfaatkan metode HTTP seperti GET, POST, PUT, dan DELETE.

REST API adalah salah satu bentuk gaya arsitektural perangkat lunak yang didalamnya mendefinisikan beberapa aturan untuk membuat web service. REST API berisi aturan atau batasan yang dapat membatasi programmer untuk mengakses atau melakukan tindakan-tindakan tertentu pada sebuah database. Jadi REST API adalah sebuah Batasan arsitektur, bukan suatu protocol atau standar.

Cara Kerja API

b. Komponen dalam REST API

Endpoint (URL Design)

RESTful API diakses menggunakan protokol HTTP. Penamaan dan struktur URL yang konsisten akan menghasilkan API yang baik dan mudah untuk dimengerti developer. URL API biasa disebut endpoint dalam pemanggilannya.

Cara Kerja API

Method (HTTP Verbs)

Setiap request yang dilakukan terdapat metode yang dipakai agar server mengerti apa yang sedang di request client:

Header

Header adalah metadata yang dikirimkan bersama request atau response dalam HTTP/REST API.


POST /api/sensor HTTP/1.1
Host: iot.example.com
Content-Type: application/json
Authorization: Bearer abc123token
User-Agent: ESP32/1.0
Content-Length: 27

{"temperature":28,"humidity":65}
    

HTTP Response Code

HTTP Response Code adalah kode standarisasi dalam menginformasikan hasil request kepada client. Secara umum terdapat 3 kelompok yang biasa kita jumpai pada RESTful API yaitu :

Kode Arti
200 OK - Permintaan berhasil diproses.
201 Created - Data berhasil dibuat.
400 Bad Request - Permintaan tidak valid.
401 Unauthorized - Autentikasi diperlukan.
404 Not Found - Endpoint tidak ditemukan.
500 Internal Server Error - Kesalahan pada server.

Body (Format Response)

Response dari REST API biasanya dalam format JSON atau XML. JSON lebih banyak digunakan karena ringan dan mudah dipahami.

{
  "status": "success",
  "temperature": 28,
  "humidity": 65
}

c. Cara Kerja REST API pada IoT

  1. Perangkat IoT mengirimkan request ke server REST API.
  2. Server memproses permintaan sesuai metode HTTP.
  3. Server mengirimkan response berupa data (misalnya JSON).
  4. Perangkat IoT menampilkan atau memanfaatkan data tersebut.

4. Praktik REST API dengan Thingspeak

ThingSpeak merupakan platform open source IoT dan API untuk menyimpan dan mengambil data dari berbagai perangkat menggunakan protokol HTTP melalui Internet. ThingSpeak didukung perangkat lunak komputasi numberik yaitu Matlab. Menyediakan visualisasi data secara realtime dan dengan dukungan Matlab, memungkinkan untuk menambahkan data untuk keperluan analisis data dan pemrosesan. Website: https://thingspeak.com

Cara Kerja API

Membuat Channel di Thingspeak

1. Buat akun MathWork

Gunakan alamat email kampus milik kalian.

Cara Kerja API

2. Sign in ke Thingspeak

Cara Kerja API

3. Membuat Channel

  1. Setelah sign in, klik New Channel
  2. Masukan nama dan deskripsi
  3. Cara Kerja API
  4. Tambahkan field seperti Suhu.
  5. Scroll ke bawah dan klik Save

Mengirim Data ke Thingspeak

  1. Buatlah Rangkaian ESP32 dan DHT22 seperti berikut ini:
  2. Cara Kerja API
  3. Tambahkan kode program untuk koneksi wifi dan mengirim data suhu dan kelembaban ke Thingspeak
  4. #include <WiFi.h>
    #include "HTTPClient.h"
    #include "DHTesp.h"
    
    WiFiClient client;
    const int DHT_PIN = 15;
    DHTesp dhtSensor;
    
    String thingSpeakAddress = "api.thingspeak.com";
    String writeAPIKey;
    String tsfield1Name;
    String request_string;
    
    void setup()
    {
      Serial.begin(9600);
      WiFi.disconnect();
      WiFi.begin("Wokwi-GUEST", "");
      while ((!(WiFi.status() == WL_CONNECTED))) {
        delay(300);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
    }
    
    void loop()
    {
      delay(2000);
      TempAndHumidity  data = dhtSensor.getTempAndHumidity();
    
      float t = data.temperature;
      float h = data.humidity;
    
      kirim_thingspeak(t, h);
    
      if (isnan(h) || isnan(t) ) {
        Serial.println("Failed to read from DHT sensor!");
        return;
      }
    }
    
    void kirim_thingspeak(float suhu, float hum) {
      if (client.connect("api.thingspeak.com", 80)) {
        request_string = "/update?";
        request_string += "key=";
        request_string += "7NZLPX4HWGWWPHDS";
        request_string += "&";
        request_string += "field1";
        request_string += "=";
        request_string += suhu;
        request_string += "&";
        request_string += "field2";
        request_string += "=";
        request_string += hum;
    
        Serial.println(String("GET ") + request_string + " HTTP/1.1\r\n" +
                     "Host: " + thingSpeakAddress + "\r\n" +
                     "Connection: close\r\n\r\n");
                     
        client.print(String("GET ") + request_string + " HTTP/1.1\r\n" +
                     "Host: " + thingSpeakAddress + "\r\n" +
                     "Connection: close\r\n\r\n");
        unsigned long timeout = millis();
        while (client.available() == 0) {
          if (millis() - timeout > 5000) {
            Serial.println(">>> Client Timeout !");
            client.stop();
            return;
          }
        }
    
        while (client.available()) {
          String line = client.readStringUntil('\r');
          Serial.print(line);
        }
    
        Serial.println();
        Serial.println("closing connection");
      }
    }
    
    Cara Kerja API
  5. Tambahkan library DHT ESP32 di Library Manager
  6. Jalankan simulator
  7. Cara Kerja API

Daftar Pustaka

  1. Fielding, R. (2000). Architectural Styles and the Design of Network-based Software Architectures.
  2. ThingSpeak Documentation
  3. Random Nerd Tutorials

Glosarium Istilah

API
Antarmuka pemrograman aplikasi untuk komunikasi antar sistem.
REST API
API berbasis HTTP dengan prinsip Representational State Transfer.
Endpoint
URL yang menyediakan akses ke fungsi API tertentu.
Response
Balasan server terhadap permintaan API.
Beranda Mundur Maju