Tuesday, August 28, 2018

Cara Kirim Data dari Raspberry Pi ke Web Server

Pendahuluan

Dalam dunia IoT pengiriman data ke web server merupakan hal yang penting. pengiriman data ini biasanya pengiriman data sensor atau data tertentu, sehingga kita bisa memonitor suatu nilai sensor atau data tersebut dari mana saja menggunakan web. kali ini saya akan mengupas tentang bagaimana mengirim data menggunakan teknik yang sederhana menggunakan python dan curl pada Raspberry Pi.

bagi penguna linux atau unix, kata curl tidak asing lagi. curl merupakan tool command line yang bagus untuk mendapatkan atau mengirimkan file lewat alamat URL. untuk mudah mengingatnya, kita bisa tulis dengan cURL. kamu dapat dengan mudah mengirimkan data hanya dengan 'change' (merubah) alamat URLnya.

Method GET

Method GET merupakan salah satu pengiriman data ke web server dengan melewatkan data pada alamat URLnya, sehingga data akan terlihat pada URL-nya.  panjang maksimal karakter terbatas hanya 3000 karakter, sehingga data yang dikirim juga terbatas. contohnya dapat dilihat pada URL query pencarian Google. contoh format data yang dilewatkan melalui URL dengan method GET yaitu seperti dibawah ini :

http://www.contohurl.com/phpSript.php?d1=val1&d2=val2&d3=val3

pada URL ditas kita bisa menemukan tiga variable yaitu d1bernilai val1, d2 bernilai val2 dan d3 bernilai val3. variable ini akan di kirim ke srcript PHP di server dan diterima sebagai variable GET.  dengan begini kita bisa mengirimkan variable dan nilai ke server untuk diolah selanjutnya.

HTTP Request dengan cURL

untuk melakukan Http Request kita bisa dengan mudah melakukannya melalui terminal dengan mengetikan perintah curl. seperti berikut ini :

curl http://www.contohurl.com/phpSript.php?d1=val1&d2=val2&d3=va

output perintah tersebut adalah kode html yang dihasilkan oleh URL web server tersebut. jika alamat URLnya tidak ada maka akan menghasilkan output 'could not be resolve host'. itu merupakan bentuk sederhananya saja.  jika ingin lebih detail tentang paramater apa saja yang bisa digunakan dapat mengunjungi https://ec.haxx.se/http-requests.html 

Python dan cURL

karena cURL merupakan tools command line, maka untuk menjalankan cURL dengan Python kita perlu impor modul os.
untuk script Pythonnya, akan terdapat string berupa alamat URL. string tersebut akan ditambahkan data variable untuk dikirim via method GET. untuk lebih detailnya kita bisa lihat script Python dibawah ini :

import os

s1 = 1
s2 = 2
s3 = 3

http_address = "http://contoh_alamat_url.com/testcurl.php?"
request_string = http_address + "d1=" + str(s1) + "&d2=" + str(s2) + "&d3=" + str(s3)

os.system('curl ' + '"' + request_string + '"')

untuk melakukan pengtest-an, kita bisa coba untuk membuat php script di webserver untuk menangkap data-data tersebut dan ditampilkan kembali sebagai respon request. berikut script phpnya :


<?php

 if ($_SERVER['REQUEST_METHOD'] == "GET") {
               $data1 = $_GET["d1"];
               $data2 = $_GET["d2"];
               $data3 = $_GET["d3"];
}

echo "data 1 : ".$data1." data 2: ".$data2." data 3: ".$data3."\n";

?>

oke sekarang kita akan mulai melakukan pengetesan apakah data yang dikirim. untuk membuktikannya akan keluar kembali data yang dikirim, karena seperti pada script php diatas, data yang diambil di echo kan lagi sebagai respon dari http request. untuk menjalankan script python dapat diketik perintah berikut pada terminal :

python curltest.py

jika semua sudah benar, maka seharusnya output program akan seperti gambar dibawah ini. jika belum bisa dicek kembali mungkin ada yang miss. atau kalau ada pertanyaan bisa bertanya pada kolom komentar. terima kasih, selamat bereksperimen.