ESP32 HTTP GET dan HTTP POST dengan Arduino IDE (JSON, URL Encoded, Text)

Dalam panduan ini, Anda akan belajar cara membuat permintaan HTTP GET dan HTTP POST dengan papan ESP32 dengan Arduino IDE. Kami akan membahas contoh tentang cara mendapatkan nilai, memposting objek JSON, permintaan yang disandikan URL, dan banyak lagi.

Metode Permintaan HTTP: GET vs POST

Hypertext Transfer Protocol (HTTP) berfungsi sebagai protokol permintaan-tanggapan antara klien dan server. Berikut ini contohnya :

    • ESP32 (klien) mengirimkan permintaan HTTP ke Raspberry Pi yang menjalankan Node-RED (server);

    • Server mengembalikan respons ke ESP32 (klien);

    • Terakhir, respons berisi informasi status tentang permintaan dan mungkin juga berisi konten yang diminta.

DAPATKAN HTTP

GET digunakan untuk meminta data dari sumber daya tertentu. Ini sering digunakan untuk mendapatkan nilai dari API.

Misalnya, Anda dapat memiliki :

Perhatikan bahwa string kueri (nama = suhu dan nilai = nilai1) dikirim dalam URL permintaan HTTP GET.

Atau Anda dapat menggunakan permintaan sederhana untuk mengembalikan nilai atau objek JSON, misalnya:

(Dengan HTTP GET, data dapat dilihat oleh semua orang di permintaan URL.)

POSTING HTTP

POST digunakan untuk mengirim data ke server untuk membuat/memperbarui sumber daya. Misalnya, publikasikan pembacaan sensor ke server.

Data yang dikirim ke server dengan POST disimpan di badan permintaan permintaan HTTP:

Dalam permintaan isi, Anda juga dapat mengirim objek JSON:

(Dengan HTTP POST, data tidak terlihat di permintaan URL. Namun, jika tidak dienkripsi, data masih terlihat di badan permintaan.)

HTTP GET/POST dengan ESP32

Dalam panduan ini, kita akan menjelajahi skenario berikut:

    ESP32 HTTP GET: Nilai atau Kueri di URL

    ESP32 HTTP GET: Objek Data JSON atau TeksBiasa

    ESP32 HTTP POST: URL Encoded, Objek DataJSON, Teks Biasa

Prasyarat

Sebelum melanjutkan dengan tutorial ini, pastikan Anda melengkapi prasyarat berikut.

Arduino IDE

Kami akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32.

    Memasang Board ESP32 di Arduino IDE(Windows, Mac OS X, Linux)

Library Arduino_JSON

Anda juga perlu menginstal library Arduino_JSON. Anda dapat menginstal perpustakaan ini di Manajer Perpustakaan Arduino IDE. Masuk saja ke Sketch > Include Library > Manage Libraries dan cari nama library sebagai berikut :

Bagian yang Diperlukan

Untuk tutorial ini Anda memerlukan bagian-bagian berikut :

    ESP32 (baca papan pengembangan ESP32terbaik)

    Papan Raspberry Pi (baca Kit PemulaRaspberry Pi Terbaik)

    Kartu MicroSD – Kelas 16GB10

    Catu Daya Raspberry Pi (5V 2.5A)

    Kabel Jumper

    Breadboard

Mempersiapkan Node-RED (opsional)

Sebagai contoh, kami akan membuat layanan web dengan Raspberry Pi dan Node-RED untuk bertindak sebagai layanan web (seperti API). Pada dasarnya, Anda akan membuat permintaan HTTP GET dan HTTP POST ke Raspberry Pi Anda untuk mendapatkan nilai atau memperbaruinya. Anda dapat menggunakan layanan web lainnya.

Jika Anda belum menginstal Node-RED, ikuti tutorial berikutnya:

    Memulai dengan Node-RED di Raspberry Pi

    Memasang dan Memulai Dasbor Node-RED

Setelah Node-RED berjalan di Raspberry Pi Anda, buka alamat IP Raspberry Pi Anda diikuti oleh :1880.

Antarmuka Node-RED akan terbuka. Anda cukup mengimpor aliran akhir:

Buka Menu > Impor dan salin yang berikut ke Clipboard Anda untuk membuat aliran Node-RED Anda.




Layanan Web atau API lainnya

Dalam panduan ini, ESP32 melakukan permintaan HTTP ke Node-RED, tetapi Anda dapat menggunakan contoh ini dengan layanan lain seperti ThingSpeak, IFTTT.com (layanan Web Hooks), OpenWeatherMap.org, server PHP, dll… Semua contoh disajikan dalam panduan ini juga akan bekerja dengan API lain.

Singkatnya, untuk membuat panduan ini kompatibel dengan layanan apa pun, Anda perlu mencari dokumentasi API layanan. Kemudian, Anda memerlukan nama server (URL atau alamat IP), dan parameter untuk mengirim permintaan (jalur URL atau badan permintaan). Terakhir, ubah contoh kami untuk diintegrasikan dengan API apa pun yang ingin Anda gunakan.

1. ESP32 HTTP GET: Nilai atau Kueri di URL

Pada contoh pertama, ESP32 akan membuat permintaan HTTP GET untuk memperbarui pembacaan dalam suatu layanan. Jenis permintaan ini juga dapat digunakan untuk memfilter nilai, meminta nilai, atau mengembalikan objek JSON.

Kode ESP32 HTTP DAPATKAN dengan Arduino IDE

Setelah menginstal pengaya dan pustaka papan yang diperlukan, salin kode berikut ke Arduino IDE Anda, tetapi jangan mengunggahnya dulu. Anda perlu membuat beberapa perubahan untuk membuatnya bekerja untuk Anda.






Mengatur Kredensial Jaringan Anda

Ubah baris berikutnya dengan kredensial jaringan Anda: SSID dan kata sandi. Kode dikomentari dengan baik di mana Anda harus membuat perubahan.

Menyetel Nama Server Anda

Anda juga perlu mengetikkan nama domain atau alamat IP Node-RED, sehingga ESP memublikasikan pembacaan ke server Anda sendiri.

Sekarang, unggah kode ke papan Anda dan itu akan langsung berfungsi.

Baca bagian selanjutnya, jika Anda ingin mempelajari cara membuat permintaan HTTP GET.

Permintaan GET HTTP

Di loop() adalah tempat Anda benar-benar membuat permintaan HTTP GET setiap 5 detik dengan data sampel:

ESP32 membuat permintaan baru di URL berikut untuk memperbarui bidang sensor dengan suhu baru.

Kemudian, baris kode berikut menyimpan respons HTTP dari server.

Demonstrasi

Dengan papan Anda menjalankan sketsa baru, buka jendela debug Node-RED. Anda akan melihat bahwa nilai sampel berhasil dicetak (24,37).

2. ESP32 HTTP GET: Objek Data JSON atau Teks Biasa

Contoh berikut ini menunjukkan cara membuat permintaan HTTP GET untuk mendapatkan objek JSON dan mendekodekannya dengan ESP32. Banyak API mengembalikan data dalam format JSON.

Salin sketsa berikutnya ke Arduino IDE Anda (ketik SSID dan kata sandi Anda):








Menyetel Nama Server Anda

Masukkan nama domain atau alamat IP Node-RED Anda, sehingga ESP meminta pembacaan sensor yang akan diambil di objek JSON.

Sekarang, unggah kode ke papan Anda.

Permintaan GET HTTP (Objek JSON)

Di loop(), panggil fungsi httpGETRequest() untuk membuat permintaan HTTP GET :

Fungsi httpGETRequest() membuat permintaan ke alamat Node-RED http://192.168.1.106:1880/get-sensor dan mengambil string dengan objek JSON

Decoding Objek JSON

Untuk mendapatkan akses ke nilai, dekode objek JSON dan simpan semua nilai dalam larik sensorReadingsArr.

HTTP GET Demonstrasi

Setelah mengupload kode, buka Arduino IDE dan Anda akan melihat bahwa ia menerima data JSON berikut:

Kemudian, Anda mencetak objek JSON yang telah didekodekan di Arduino IDE Serial Monitor.

Untuk tujuan debugging, informasi yang diminta juga dicetak di jendela debug Node-RED.

3. ESP32 HTTP POST: URL Encoded, Objek Data JSON, Teks Biasa

Terakhir, Anda akan mempelajari cara membuat permintaan HTTP POST dengan ESP32.

Dengan contoh ini, ESP32 Anda dapat membuat permintaan HTTP POST menggunakan tiga jenis permintaan isi yang berbeda: URL yang disandikan, objek JSON, atau teks biasa. Ini adalah metode yang paling umum dan harus diintegrasikan dengan sebagian besar API atau layanan web.

Salin sketsa berikutnya ke Arduino IDE Anda (ketik SSID dan kata sandi Anda):






Menyetel Nama Server Anda

Masukkan nama domain atau alamat IP Node-RED Anda, sehingga ESP memposting pembacaan sensor sampel.

Sekarang, unggah kode ke papan Anda.

URL POSTING HTTP Dikodekan

Untuk membuat permintaan HTTP POST dari jenis URL yang dikodekan, seperti ini

Anda perlu menjalankan yang berikut ini dalam kode Arduino Anda:

Objek JSON HTTP POST

Atau jika Anda lebih suka membuat permintaan HTTP POST dengan objek JSON :

Gunakan cuplikan berikutnya :

Teks Biasa HTTP

Jika Anda ingin mengirim teks biasa atau nilai, gunakan yang berikut ini :

Catatan: alur Node-RED yang kami gunakan (layanan web) tidak disiapkan untuk menerima teks biasa, tetapi jika API yang Anda rencanakan untuk integrasikan hanya menerima teks biasa atau nilai, Anda dapat menggunakan cuplikan sebelumnya.

Demonstrasi HTTP POST

Di jendela debug Node-RED, Anda dapat melihat bahwa ESP Anda membuat permintaan HTTP POST setiap 5 detik.

Dan dalam contoh ini, nilai-nilai tersebut juga dikirim ke 3 Pengukur dan ditampilkan di Dasbor Node-RED:


Membungkus

Dalam tutorial ini Anda telah belajar bagaimana mengintegrasikan ESP32 Anda dengan layanan online menggunakan permintaan HTTP GET dan HTTP POST.

HTTP GET dan HTTP POST biasanya digunakan di sebagian besar layanan web dan API. Ini dapat berguna dalam proyek Anda untuk: mempublikasikan pembacaan sensor Anda ke layanan web seperti IFTTT, ThingSpeak; ke server web ESP32 atau Raspberry Pi atau ke server Anda sendiri; untuk meminta data dari internet atau dari database Anda, dan banyak lagi.

Jika Anda menggunakan papan ESP8266, baca: Panduan untuk ESP8266 NodeMCU HTTP GET dan HTTP Post Requests.

Anda mungkin juga suka membaca:

    [Kursus] Belajar ESP32 dengan Arduino IDE

    ESP32/ESP8266 Mengirim Notifikasi Emailmenggunakan Skrip PHP

    Visualisasikan Pembacaan Sensor Anda dariMana Saja di Dunia (ESP32/ESP8266 + MySQL + PHP) menggunakan Bagan

    Server Web Modul Relay ESP32

    Pemrograman MicroPython dengan ESP32 danESP8266

Sumber : randomnerdtutorials.com  

Posting Komentar

0 Komentar