Rest Web Service Codeigniter Bagian Ketiga (Database)

Bagian Pertama

Bagian Kedua

Pada bagian ini kita akan mensetting koneksi ke database yang akan kita gunakan sebagai lokasi penyimpanan data hasil pembacaan sensor.

Langkah pertama, kita akan membuat koneksi ke database yang kita buat dengan mengedit config/database.php.

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',//host
	'username' => 'root',//username
	'password' => 'root',//password
	'database' => 'iot_db',//nama database
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

Kemudian kita tambahkan library database ke config/autoload.php.

$autoload['libraries'] = array('database');

Setelah setup sudah selesai, sekarang kita buat table di database yang sudah kita buat tadi. Kita akan membuat dua buah table, yaitu table unit_client dan monitor_client.

CREATE TABLE `unit_client` (
  `id_unit` int(11) NOT NULL,
  `unit` varchar(16) DEFAULT NULL,
  `unit_create` datetime DEFAULT NULL,
  `unit_update` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `monitor_client` (
  `id_monitor` int(11) NOT NULL,
  `unit_id` int(11) DEFAULT NULL,
  `output` varchar(12) DEFAULT NULL,
  `monitor_created` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Setelah selesai membuat table, masukkan data ke table unit_client secara manual dengan nilai id_unit = 1, dan unit = “LM35”.

 

Tabel sudah siap, sekarang kita buat model untuk table tersebut.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Model_unit extends CI_Model{

    public function getAll(){
        $query = $this->db->get('unit_client');
        return $query;
    }
    public function getMonitorByUnit($id){
        $this->db->select('*');
        $this->db->from('monitor_client');
        $this->db->where('unit_id', $id);
        $this->db->limit('100');
        $this->db->order_by('id_monitor','desc');
        $this->db->join('unit_client', 'unit_client.id_unit = monitor_client.unit_id');
        $query = $this->db->get('');
        return $query;
    }

}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Model_monitor extends CI_Model{

    public function create($unit,$output){
        $data = array('unit_id' => $unit,
        'output'=>$output,
        'monitor_created'=>date('Y-m-d H-i-s'));
        $query = $this->db->insert('monitor_client', $data);
        return $query;
    }
    public function getByUnitId($id){
        $this->db->where('unit_id', $id);
        $query = $this->db->get('monitor_client');
        return $query;
    }

}

Dan terakhir kita edit controller dengan nama Monitor.php menjadi seperti berikut :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

require APPPATH . '/libraries/REST_Controller.php';//lokasi library rest

class Monitoring extends REST_Controller{
    public function __construct(){
      parent::__construct();
      $this->load->model(array('model_monitor'));
    }

    function unit_get(){
        $data = array('respon : '.$this->get('id'));
        $this->response($data);
    }
    function unit_put(){
        $intruksi = $this->model_monitor->create($this->put('unit_id'),$this->put('output'));
        if ($intruksi==FALSE) {
            $this->set_response(array('status'=>'error'));
        }else{
            $this->set_response(REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
        }
    }
    function unit_post(){
        $data = array('respon : '.$this->post('id'));
        $this->response($data);
    }
    function unit_delete(){
        $data = array('respon : '.$this->delete('id'));
        $this->response($data);
    }

}

Setelah selesai, sekarang kita coba akses menggunakan postman. Responnya harus seperti ini.

Postman response
Postman response

Sampe bagian ini harusnya sudah cukup untuk membuat server IoT untuk monitoring.

Oke, selamat mencoba. Kalo bermanfaat silahkan share, kalo ada yang error silahkan tanya-tanya di kolom komentar. 😀

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.