Tuesday, August 28, 2018

Fetching Data dari Web Server ke Rasberry Pi

Pendahuluan

Dalam project IoT Fetching atau mengambil data dari  server ke Raspberry Pi perlu dilakukan untuk memperbarui data atau untuk mengetahui apakah Raspberry Pi terkoneksi ke Server. 

untuk melakukan fetching atau pengambilan data, hal pertama yang dilakukan Raspbery Pi adalah hal yang sama ketika pengiriman data yaitu melakukan HTTP Request. bedanya saat pengiriman data respon dari web server diperlukan untuk mengetahui data terkirim atau tidak, biasanya didapat dari kode respon http (200 terkirim, 404 server tidak temukan dan lain lain), sedangkan untuk fetching atau pengambilan data, respon dari webserver adalah data yang ingin di ambil oleh Raspberry Pi itu sendiri.

kali ini, kita akan menggunakan script Python untuk mengambil data dari web server di Raspberry Pi. untuk mempermudah pemograman kita akan menggunakan module Requests di Python.

Mempersiapkan Script PHP di Server

kita akan membuat script php sederhana untuk memeriksa key yang dikirimkan agar lebih secure, dan memberikan respon data berformat Json. karena ini script php sederhana maka, tidak diperlukan sebuah framework php, kita gunakan pure native php.

pertama-tama kita periksa data key  yang dikirim dengan method GET, apabila data key benar baru dilanjutkan ke proses selanjutnya yaitu membuat respon data berformat Json. berikut script PHP-nya:

<?php
if ($_SERVER['REQUEST_METHOD'] == "GET") {

if ($_GET["key"] == 'asdqwe123') {
 $data = array('speedMotorA' => 4 ,
  'speedMotorB' => 5);

 header('Content-type: application/json');
 echo json_encode($data);
}

}

else {
 return;
}

?>

jika script php diatas, kita akses dengan browser (chrome atau firefox) dengan mengetikan alamat : http://alamat_url_anda.com/api.php?key=asdqwe123 akan ada respon berformat JSON seperti gambar dibawah ini (pada gambar menggunakan browser firefox) :


ketika ouputnya sudah seperti diatas, maka script PHP kamu sudah berkerja dengan semestinya. kemudian langkah selanjutnya yaitu membuat script dengan python untuk melakukan http request ke url server kemudian memparse atau mejabarkan dalam bentuk array respon berformat json diatas. 

Install modul Requests untuk Python

agar script python nantinya bisa melakukan http request ada beberapa package yang akan digunakan salah satunya yaitu requests package ini memungkinkan script python untuk melakukan http request sekaligus bisa mendapatkan responnya yang berformat json diatas. sekarang install package requests dengan perintah dibawah ini :

sudo apt-get update


pip install requests

setelah berhasil terinstall, kita buat script python untuk melakukan request http ke url server dan memparse respon datanya yang berformat json menjadi bentuk array. berikut script untuk python.

import requests
import json

url = "http://alamatserver.com/api.php?key=asdqwe123"

r = requests.get(url)
data= json.dumps(r.json())
data1 = json.loads(data)
print data1['speedMotorA']
print data1['speedMotorB']

ketik kode python diatas dan simpan dengan nama ambilData.py. perlu diperhatikan jangan memberi nama dengan requests.py karena akan membuat baris program import requests tidak akan berkerja dan mengeluarkan error. setelah script ditulis, kamu bisa jalankan dengan perintah dibawah ini di terminal :

python ambilData.py

program python akan melakukan request http dan mengambil data respon dalam format json yang diberikan oleh script php di server, kemudian memparsenya ke bentuk array. untuk melihat datanya diatas sudah diprint dalam bentuk per variable. berikut ini output dari script python saat selesai dijalankan.



ketika output script python kamu sudah seperti diatas. artinya script python kamu sudah bisa mengambil respon dari script PHP di server. kamu bisa mencobanya dengan memasukan variabel speedMotorA dan speedMotorB dengan angka yang berbeda. sehingga ketika script python dijalankan kembali akan menampilkan angka yang kamu masukan pada speedMotorA dan speedMotorB di script PHP.