Rancangan Bagian Hardware Pengukuran Jarak MaksimumKontroler ke Hostspot

36

3.4 Rancangan Bagian Hardware

Pada bagian hardware, sistem Home Automation yang dirancang terdiri dari sebuah Wemos D1 ESP8266 yang merupakan sebuah clone dari Board Arduino yang dilengkapi sebuah modul Wi-Fi ESP8266. Wemos D1 akan menjadi pengendali bagi setiap yang terhubung ke pin-pinnya. Dalam hal ini perangkat yang terhubung ke Wemos D1 adalah sebuah modul relay 4 kanal yang digunakan untuk mengontrol sebuah stop contact 4 lubang. Untuk mendapatkan kemampuan otomasi, dua buah sensor juga disambungkan ke Wemos D1. Sensor tersebut adalah sensor passive infrared dan sensor suhu. Agar stop contact dapat dikendalikan oleh BoardController maka harus dilakukan modifikasi pada pengkabelannya hingga menjadi seperti yang terlihat pada Gambar 3.9. Gambar 3.9Modifikasi pengkabelan stop contact Ke modul relay Universitas Sumatera Utara 37 Bentuk keterhubungan seluruh perangkat yang ada pada sistem Home Automaton yang dirancang adalah seperti yang terlihat pada Gambar 3.10. Gambar 3.10 Keterhubungan perangkat – perangkat menjadi sistem Home Automation

3.5 Rancangan SoftwareControler

Controller sistem Home Automation yang merupakan sebuah Wemos D1, diprogram dengan menggunakan bahasa C++. Program pada ControllerHome Automation yang dirancang terdiri dari beberapa sub bagian yang dibagi menjadi class – class program. Class tersbut adalah classController, classScheduler, classCollection , classBoard , classDevice , class Sensor, dan classGateway .Hubungan antar class yang ada pada program controller adalah seperti yang terlihat pada Gambar 3.11. Universitas Sumatera Utara 38 Board -services -devices -sensors +initialize +automate Service -interval +service Device -pin +behavior Sensor -pin +readMeasurementValue HttpClient +service PingLogger +service TemperatureLogger +service Lampu +behavior AirConditioner +behavior Ds18B20 +readMeasurementValue PirSensor +readMeasurementValue Controller +setup +loop -memberName ServiceContract +getId +service +setLogger +getLogger DeviceContract +turnOn +turnOff +toggle +behavior +getId +setLogger +getLogger SensorContract +getId +readMeasurementValue +setLogger +getLogger Gambar 3.11 Diagram hubungan antar class program controller

3.5.1 ControllerClass

ControllerClass merupakanclassutama dimana fungsi setup dan fungsi dari class ini akan menjadi fungsi setup dan fungsi loop yang akan dijalankan oleh Wemos D1. Class ini meng-extendsclass BaseController yang merupakan sebuah classcontract untuk seluruh classController, dimana class Base Controller mempunyai fungsi virtual yang harus diimplementasikan oleh setiap anak class yang meng-extends class ini. Isi dari class Base Controller adalah seperti yang terlihat pada Gambar 3.12. Universitas Sumatera Utara 39 1 c l as s Bas eCont r ol l er 2 { 3 publ i c : 4 Boar dCont r ac t boar d; 5 v i r t ual v oi d s et up = ; 6 v i r t ual v oi d l oop = ; 7 } ; Gambar 3.12 Kode Program class BaseController ClassController sendiri berisi implementasi dari fungsi virtual yang ada di class Base Controller. Fungsi – fungsi virtual tersebut adalah fungsi setup dan fungsi loop. Pada fungsi setup berisi statement untuk inisialisasi Wemos D1 serta inisialisasi modul Wi-Fi. Pada fungsi loop berisi perintah untuk melakukan eksekusi untuk setiap event yang didaftarkan pada classScheduler. Isi dari classController tersebut seperti yang ditunjukkan pada Gambar 3.13. 1 c l as s Cont r ol l er : publ i c v i r t ual Bas eCont r ol l er 2 { 3 publ i c : 4 v oi d s et up 5 { 6 Debug: : i s DebugMode = t r ue ; 7 Wi Fi . c onf i g env : : wi f i : : i p, env : : wi f i : : gat eway , env : : wi f i : : s ubnet , env : : wi f i : : dns 1, env : : wi f i : : dns 2 ; 8 boar d- i ni t i al i z e ; 9 boar d- aut omat e ; 10 } 11 12 v oi d l oop 13 { 14 Sc hedul er : : handl eEv ent s ; 15 } 16 } ; Gambar 3.13 Kode program classController

3.5.2 Collection Class

CollectionClass merupakan sebuah class yang bertanggung jawab untuk manajemen kumpulan beberapa object. ClassCollectionyang digunakan pada Universitas Sumatera Utara 40 Sistem Home Automation yang dirancang pada dasarnya adalah sebuah wrapper untuk Class std::vector. ClassCollection harus meng-extends classCollection Contract dengan kode seperti yang ditunjukkan pada Gambar 3.14. 1 names pac e Nugr aha { names pac e Cont r ac t s { names pac e Col l ec t i ons { 2 3 t empl at e c l as s Member s Ty pe 4 c l as s Col l ec t i onCont r ac t 5 { 6 publ i c : 7 v i r t ual v oi d add Member s Ty pe newMember = ; 8 v i r t ual v oi d r emov eAt i nt i ndex = ; 9 v i r t ual i nt c ount = ; 10 v i r t ual Member s Ty pe get Member At i nt i ndex = ; 11 } ; 12 13 } } } Gambar 3.14 Kode program classCollectionContract Terdapat empat fungsi virtual yang harus diimplementasikan oleh Class yang meng-extends classCollectionContract yaitu: fungsi add yang merupakan fungsi untuk menambahkan anggota baru ke koleksi; fungsi removeAt yang merupakan fungsi untuk menghapus anggoa koleksi pada indeks tertentu; fungsi count yang merupakan fungsi untuk mendapatkan total jumlah anggota yang ada di dalam koleksi;fungsi getMemberAt yang merupakan sebuah fungsi untuk mendapatkan anggota koleksi pada indeks tertentu. ClassCollectionContract diimplementasikan pada classCollection seperti yang terlihat pada Gambar 3.15. Universitas Sumatera Utara 41 1 c l as s Col l ec t i on : publ i c v i r t ual Col l ec t i onMember s Ty pe { 2 pr ot ec t ed : 3 s t d: : v ec t or Member s Ty pe member s ; 4 5 publ i c : 6 i nt c ount 7 { 8 r et ur n member s . s i z e ; 9 } 10 11 v oi d add Member s Ty pe newMember 12 { 13 member s . pus h_bac k newMember ; 14 } 15 16 v oi d r emov eAt i nt i ndex 17 { 18 member s . er as e member s . begi n + i ndex ; 19 } 20 21 Member s Ty pe get Member At i nt i ndex 22 { 23 i f i ndex = i ndex member s . s i z e { 24 r et ur n member s [ i ndex ] ; 25 } 26 r et ur n NULL ; 27 } 28 } ; Gambar 3.15 Kode program class koleksi Vector

3.5.3 SchedulerClass

SchedulerClass merupakan sebuah class yang bertanggung jawab untuk pengeksekusian events yang dieksekusi berdasarkan interval waktu. Penggunaan fungsi delay bisa saja digunakan untuk mendapatkan hasil yang serupa, namun pada penggunaan delay, Wemos D1 akan benar – benar tidak melakukan apa – apa selama selang delay tersebut. Hal ini sangat tidak efisien karena Wemos D1 tidak akan dapat mengontrol perangkat yang lain selama periode delay tersebut. ClassScheduler mempunyai sebuah koleksi event dan beberapa fungsi pendukung. Fungsi – fungsi tersebuat antara lain: fungsi every yang berguna Universitas Sumatera Utara 42 untuk mendaftarkan sebuah perintah dan mengeksekusi perintah tersebut setiap interval tertentu, fungsi handleEvents yang bertanggung jawab untuk mengupdate timer setiap event dan mengeksekusi event tersebut jika waktu ketika fungsi ini dipanggil di kurang dengan waktu yang direkam sebelumnya lebih besar atau sama dengan interval yang ditentukan untuk event tersebut. Kerangka ClassScheduler yang digunakan pada sistemHome Automationyang dirancang dapat dilihat pada Gambar 3.16. 1 c l as s Sc hedul er 2 { 3 pr ot ec t ed : 4 s t at i c Col l ec t i onBas eEv ent Ev ent Col l ec t i on; 5 6 publ i c : 7 t empl at e t y pename Cal l bac k 8 s t at i c v oi d ev er y uns i gned l ong i nt er v al , Cal l bac k c al l bac k , i nt r epeat Count = - 1 9 { 10 Ev ent Col l ec t i on- add new St at i c Ev ent Cal l bac k i nt er v al , c al l bac k ; 11 } 12 13 t empl at e t y pename Cal l bac k , t y pename Obj ec t Ty pe 14 s t at i c v oi d ev er y uns i gned l ong i nt er v al , Obj ec t Ty pe obj ec t , Cal l bac k c al l bac k , i nt r epeat Count = - 1 15 { 16 Ev ent Col l ec t i on- add new Ev ent Cal l bac k , Obj ec t Ty pe i nt er v al , c al l bac k , obj ec t ; 17 } 18 19 s t at i c v oi d handl eEv ent s 20 { 21 f or i nt i = ; i Ev ent Col l ec t i on- c ount ; i ++ 22 { 23 Ev ent Col l ec t i on- get Member At i - updat e mi l l i s ; 24 } 25 } 26 } ; Gambar 3.16 Kode program classScheduler Universitas Sumatera Utara 43 Class Event yang ada pada classScheduler adalah sebuah class yang meng- extends class BaseEvent dan EventContract. Class tersebut mempunyai fungsi executeCallback yang akan mengesekusi callback yang telah ditentukan. Class Event dapat dilihat pada Gambar 3.17. 1 t empl at e c l as s Cal l bac k 2 c l as s St at i c Ev ent : publ i c v i r t ual Bas eEv ent 3 { 4 pr ot ec t ed : 5 Cal l bac k c al l bac k ; 6 7 publ i c : 8 St at i c Ev ent uns i gned l ong i nt er v al , Cal l bac k c al l bac k : ___________ c al l bac k c al l bac k 9 { 10 t hi s - i nt er v al = i nt er v al ; 11 } 12 13 v oi d ex ec ut eCal l bac k 14 { 15 t hi s - c al l bac k ; 16 } 17 } ; Gambar 3.17 Kode program class StaticEvent

3.5.4 BoardClass

BoardClass merupakanclass yang memodelkan perangkat Wemos D1. Pada class ini sebuah fungsi attach dapat digunakan untuk menyambungkan instance dari ClassGateway, ClassDevice atau Class Sensor pada instance classBoard seperti yang terlihat pada Kode Program berikut. ClassWemos D1 merupakan extend dari classBoardContract. Class WemosD1 harus mengimplementasikan tiga fungsi virtual yang ada pada classBoardContract. Ketiga fungsi tersebut adalah fungsi fungsi Gateways, fungsi Devices dan fungsi sensors. Dimana fungsi Gateway s adalah fungsi dimana seluruh Gateway yang ingin disambungkan ke Wemos D1 didaftarkan, fungsi Devices adalah fungsi dimana seluruh perangkat Universitas Sumatera Utara 44 yang ingin disambungkan ke WemosD1 didaftarkan, begitu juga dengan fungsi sensors yang merupakan tempat dimana seluruh sensor yang ingin disambungkan ke WemosD1 didaftarkan. Class WemosD1 lebih jelasnya dapat dilihat pada Gambar 3.18. 1 c l as s Wemos D1 : publ i c v i r t ual Boar d { 2 pr ot ec t ed : 3 v oi d gat eway s 4 { 5 t hi s - at t ac hGat eway new Per s i s t ent Ht t p s t d: : map St r i ng , St r i ng { 6 { hos t , env : : ht t pCl i ent : : hos t } , 7 { mode , env : : ht t pCl i ent : : mode } , 8 { publ i s hKey , env : : ht t pCl i ent : : publ i s hKey } , 9 { s ubs c r i beKey , env : : ht t pCl i ent : : s ubs c r i beKey } , 10 { s i gnat ur e , env : : ht t pCl i ent : : s i gnat ur e } , 11 { c hannel Name , env : : ht t pCl i ent : : c hannel Name } , 12 { c al l bac k , env : : ht t pCl i ent : : c al l bac k } 13 } ; 14 } 15 v oi d dev i c es 16 { 17 t hi s - at t ac hDev i c e new Ai r Condi t i oner D13, NULL ; 18 t hi s - at t ac hDev i c e new Led BUI LTI N_LED, NULL ; 19 } 20 v oi d s ens or s 21 { 22 t hi s - at t ac hSens or new Sens or Suhu D12 ; 23 } 24 } ; Gambar 3.18 Kode program class Wemos D1

3.5.5 DeviceClass

DeviceClass merupakanclass yang memodelkan perangkat yang terhubung ke WemosD1. Class ini memungkinkan proses manipulasi perangkat menjadi lebih mudah. Class ini merupakan extend dari classDeviceContract, dimana pada classcontract tersebut terdapat 7 fungsi virtual yang harus diimplementasikan oleh classDevice. ClassDeviceContract ditunjukkan pada Gambar 3.19. Universitas Sumatera Utara 45 1 c l as s Dev i c eCont r ac t 2 { 3 publ i c : 4 v i r t ual v oi d t ur nOn = ; 5 v i r t ual v oi d t ur nOf f = ; 6 v i r t ual v oi d behav i or = ; 7 v i r t ual v oi d i ni t i al i z e = ; 8 v i r t ual i nt get Pi n = ; 9 v i r t ual v oi d s et Logger Logger Cont r ac t l ogger = ; 10 v i r t ual Logger Cont r ac t get Logger = ; 11 } ; Gambar 3.19 Kode program classDeviceContract Fungsi tersebut antara lain: fungsi turnOn, bertanggung jawab untuk logika menghidupkan perangkat; fungsi turnOff, bertanggung jawab untuk logika mematikan perangkat; fungsi behavior, adalah fungsi yang mengatur perilaku dari perangkat; fungsi initialize, adalah fungsi yang bertanggung jawab untuk inisialisasi perangkat; fungsi getPin, berfungsi untuk mendapatkan nomor pin perangkat dimana perangkat tersebut terhubung ke WemosD1; fungsi setLogger, adalah fungsi yang berguna untuk men-set Logger yang digunakan oleh perangkat; fungsi getLogger, adalah fungsi yang berguna untuk mendapatkan Logger yang digunakan. ClassDevice mempunyai beberapa properti seperti driver dan sensor. Properti driver merupakan sebuah instance dari class yang meng-extends class DriverContract. Driver bertanggung jawab pada logika yang dibutuhkan untuk menghidupkan dan mematikan perangkat. Properti berikutnya adalah sensor yang berguna untuk mendapatkan nilai pembacaan tertentu, kemudian fungsi behavior dapat menggunakan nilai pembacaan tersebut untuk menjadi pertimbangan perilaku dari perangkat. Universitas Sumatera Utara 46 Instance dari classDevice tidak dapat langsung didaftarkan pada ClassBoard . Hanya instance dari class yang meng-extends classDevice yang dapat didaftarkan pada classBoard. Anak class dari classDevice dapat berupa perangkat yang lebih spesifik seperti LED, lampu, remote AC dan sebagainya.

3.5.6 SensorClass

SensorClassmerupakanclass yang memodelkan perangkat sensor yang terhubung ke WemosD1. Class ini memungkin proses pembacaan dapat dilakukan dengan lebih mudah. Class ini juga mempermudah mengaitkan sebuah sensor dengan sebuah perangkat, sehingga perangkat tersebut dapat mempunyai perilaku berdasarkan pada pembacaan sensor. Class Sensor meng-extends class SensorContract dimana pada class tersebut terdapat empat fungsi virtual yang harus diimplementasikan oleh class Sensor. Fungsi tersebut antara lain: fungsi initialize, merupakan fungsi yang bertanggung jawab untuk melakukan inisialisasi sensor; fungsi readMeasurementValue, merupakan fungsi yang bertanggung jawab untuk mendapatkan nilai pembacaan sensor; fungsi setLogger, merupakan fungsi yang berguna untuk men-set object sensor yang digunakan; fungsi getLogger, merupakan fungsi yang berguna untuk mendapatkan Logger yang sedang digunakan. Class SensorContract untuk lebih jelasnya dapat dilihat pada Gambar 3.20. Universitas Sumatera Utara 47 1 c l as s Sens or Cont r ac t 2 { 3 publ i c : 4 v i r t ual v oi d i ni t i al i z e = ; 5 v i r t ual doubl e r eadMeas ur ement Val ue = ; 6 v i r t ual v oi d s et Logger Logger Cont r ac t l ogger = ; 7 v i r t ual Logger Cont r ac t get Logger = ; 8 } ; Gambar 3.20 Kode program class SensorContract

3.5.7 LoggerClass

LoggerClass merupakan sebuah class yang bertanggung jawab untuk mengumpulkan notifikasi perangkat dan pembacaan sensor yang terhubung ke Wemos D1. ClassLogger meng-extends classLoggerContract yang berisi fungsi virtual yang harus diimplementasikan oleh classLogger. ClassLoggerContract dapat dilihat pada Gambar 3.21. 1 c l as s Logger Cont r ac t 2 { 3 publ i c : 4 v i r t ual v oi d addNot i f i c at i on i nt c ode, St r i ng mes s age = ; 5 v i r t ual v oi d addSens or Meas ur ement St r i ng s ens or Name, St r i ng __________ meas ur ement Val ue = ; 6 v i r t ual St r i ng get LogMes s age = ; 7 v i r t ual v oi d pr i nt ToSer i al = ; 8 } ; Gambar 3.21 Kode program classLoggerContract Implementasi dari classLoggerContract yang dituliskan pada classLogger pada dasarnya akan mengambil notifikasi pada setiap perangkat dan pembacaan pada setiap sensor dan menyatukan semua data tersebut menjadi sebuah teks dalam format JSON. Kemudian ClassGateway akan mengambil teks tersebut dan menggabungkannya dengan teks alamat server, publish key, subscribe key dan beberapa teks informasi uri lainnya menjadi sebuah alamat resources locator. Universitas Sumatera Utara 48 Setelah itu classGateway akan melakukan http get ke server menggunakan uri tersebut.

3.5.8 GatewayClass

GatewayClass merupakanclass yang memodelkan modul Wi-Fi yang ada pada Wemos D1. Class ini memungkinkan proses melakukan http request menjadi lebih mudah. Pengaturan Wi-Fi seperti SSID, password, alamat IP, Subnet, Gateway dan DNS dengan class ini juga menjadi lebih mudah karena sebuah file configurasi khusus telah disiapkan untuk pengaturan classGateway ini seperti yang dapat dilihat pada Gambar 3.22. 1 names pac e env { 2 3 names pac e wi f i { 4 St r i ng s s i d = Fugue2 ; 5 St r i ng pas s wor d = s ec r et ; 6 I PAddr es s i p 192 , 168 , 137 , 69 ; 7 I PAddr es s s ubnet 255 , 255 , 255 , ; 8 I PAddr es s gat eway 192 , 168 , 137 , 1 ; 9 I PAddr es s dns 1 8 , 8 , 8 , 8 ; 10 I PAddr es s dns 2 8 , 8 , 4 , 4 ; 11 } 12 13 } Gambar 3.22 kode configurasi Wi-Fi Kemudian untuk menggunakan nilai – nilai tersebut pada konfigurasi Wi-Fi dapat dilakukan dengan menggunakan syntax seperti yang terlihat pada Gambar 3.23 1 Wi Fi . c onf i g env : : wi f i : : i p, env : : wi f i : : gat eway , 2 env : : wi f i : : s ubnet , env : : wi f i : : dns 1, env : : wi f i : : dns 2 ; Gambar 3.23Setting Wi-Fi menggunakan nilai dari file konfigurasi Universitas Sumatera Utara 49 Reques HTTP dapat dilakukan dengan menggunakan class khusus yang meng-extends classGatewayContract. Class ini mempunyai fungsionalitas konfigurasi seperti yang dijelaskan sebelumnya. Class ini dibagi menjadi dua, yaitu class HTTPClient yang menggunakan koneksi HTTP Persistent dan dan class HTTPClient yang menggunakan koneksi HTTP Non-persistent. Koneksi HTTP persistent dapat dilakukan dengan memberikan kode “keep-alive” pada header yang dikirimkan ke server seperti yang ditunjukkan Gambar 3.24. 1 i f _r eus e { 2 header += F k eep- al i v e ; per s i s t ent 3 } el s e { 4 header += F c l os e ; non- per s i s t ent 5 } Gambar 3.24Pengaturan koneksi persistent dan non-persistent ClassGateway juga bertanggung jawab untuk mengirimkan data ke server dan menerima perintah dari server. Hal itu dapat dilakukan dengan melakukan HTTP get ke server dengan menggunakan uri yang terdiri dari beberapa sub- bagian seperti: mode, merupakan Mode yang digunakan, dalam hal ini mode yang digunakan adalah publish; Publish Key dan Subscribe Key, merupakan string acak sepanjang 42 karakter yang berguna untuk melindungi uri dari akses yang tidak diinginkan; signature, merupakan parameter tambahan yang berguna untuk memberikan tanda khusus dari data yang dikirimkan; Channel Name, merupakan nama kanal yang digunakan untuk berkomunikasi dengan server; Callback, merupakan fungsi yang akan dipanggil dibagian server setelah data diterima. Parameter – parameter tersebut juga dapat diatur melalui file config seperti pada Gambar 3.25. Universitas Sumatera Utara 50 1 names pac e env { 2 3 names pac e ht t pCl i ent { 4 St r i ng hos t = www. wahy unugr aha. c om ; 5 St r i ng mode = publ i s h ; 6 St r i ng publ i s hKey = pub- w- 3e5de365- 5d57- 48c 7- a317- 366ef 2846eb4 ; 7 St r i ng s ubs c r i beKey = s ub- n- c c a59b64- d972- 11e5- bdd5 - _______________ 02ee2ddab7f e ; 8 St r i ng s i gnat ur e = ; 9 St r i ng c hannel Name = r umah1 ; 10 St r i ng c al l bac k = ; 11 } 12 13 } Gambar 3.25 Kode konfigurasi uri yang akan di-request oleh Wemos D1

3.6 Rancangan Aplikasi Web

Aplikasi untuk sistem Home Automation yang dirancang dibangun menggunakan bahasa PHP pada bagian back-end server. Pada bagian front-end UserInterface digunakan Javascript dan HTML. Aplikasi web yang dirancang menggunakan pola desain Model-View- Controller MVC. Model yang dimaksud adalah model dari data yang disimpan di database. Model akan dimanipulasi oleh user menggunakan Controller, kemudian Model yang telah dimanipulasi akan meng-update View UserInterface yang akan dapat dilihat oleh pengguna. Pola MVC lebih jelasnya dapat dilihat pada Gambar 3.26. Universitas Sumatera Utara 51 Gambar 3.26 Desain Model-View-Controller

3.6.1 Back-end Server

Bagian server dari aplikasi web sistem Home Automation dibangun dengan menggunakan bahasa PHP. Sebuah framework PHP yang bernama Laravel digunakan untuk mempermudah proses pembuatan aplikasi web. Dengan Menggunakan framework Laravel penyimpanan data ke database tidak perlu menggunakan sintaks sql murni, namun hal ini telah diabstraksikan kedalam beberapa method dari class Model. Sehingga ketika untuk melakukan penyimpanyan data ke database cukup dilakukan dengan pemanggilan fungsi save. 3.6.1.1Routes Pada aplikasi web yang dirancang terdapat beberapa route yang mengarah sebuah request ke Controller tertentu. Route – route tersebut dapat dilihat pada Gambar 3.27. Universitas Sumatera Utara 52 1 ?php 2 3 Rout e: : get , HomeCont r ol l er i ndex ; 4 Rout e: : aut h ; _ 5 _ Rout e: : get publ i s h { publ i s hKey } { s ubs c r i beKey } { s i gnat ur e} { c hannel Name} { c al l bac k } { mes s age} , Publ i s hCont r ol l er handl e ; 6 Rout e: : get manage das hboar d , Das hboar dCont r ol l er i ndex ; 7 Rout e: : get manage das hboar d c ons ol e , Cons ol eCont r ol l er i ndex ; 8 Rout e: : get not i f i c at i ons , Not i f i c at i ons Cont r ol l er i ndex ; 9 Rout e: : get not i f i c at i ons { not i f i c at i ons } s een , Not i f i c at i ons Cont r ol l er s een ; 10 Rout e: : get meas ur ement s , Meas ur ement s Cont r ol l er i ndex ; 11 Rout e: : get meas ur ement s { meas ur ement s } s een , Meas ur ement s Cont r ol l er s een ; 12 Rout e: : get c ommands 1 { pi n} , Commands Cont r ol l er t ur nOn ; 13 Rout e: : get c ommands 0 { pi n} , Commands Cont r ol l er t ur nOf f ; Gambar 3.27Routes yang digunakan di dalam aplikasi web Route ‘’ merupakan route untuk halaman awal. Misalnya ketika user mengakses www.wahyunugraha.com maka route yang dikunjungi adalah route ‘’ dan server akan meneksekusi fungsi index yang ada pada classHomeController. Route ’auth’ merupakan route yang menangani login dan registeruser. Route ini merupakan route bawaan framework Laravel. Route ini juga menyediakan halaman untuk melakukan login dan registrasi. Route ‘manage’ merupakan sebuah route untuk halaman manajemen aplikasi web. Route ini mempunya dua sub-route yaitu ‘dashBoard’ dan ‘dashBoardconsole’. Route ‘dashBoard’ akan menampilkan semua perangkat yang tersambung ke Wemos D1. Pada route ini juga ditampilkan tombol kendali untuk menghidupkan atau mematikan perangkat yang tersambung ke Wemos D1. Pada route ‘dashBoardconsole’ akan ditampilkan sebuah console terminal yang menampilkan aktivitas dari sistem Home Automation. Universitas Sumatera Utara 53 Route ‘notification’ merupakan route yang berguna untuk mengambil seluruh notifikasi yang belum dibaca dalam format JSON. Route ini mempunyai sebuah sub-route ‘notification{notifications}seen’ yang berfungsi untuk mendai suatu notifikasi sebagai notifikasi yang sudah dilihat. Route ‘measurement’ merupkan route yang berguna untuk menampilkan seluruh nilai pembacaan sensor yang belum dilihat. Sama seperti route notification, route ini juga mempunyai sebuah sub-route yang berfungsi untuk menandai sebuah measurement sebagai measurement yang telah dilihaat. Route ‘commands’ merupakan route yang berfungsi untuk mengirimkan perintah ke WemosD1. Angka 1 atau 0 pada route ini menyatakan perintah apa yang akan dikirimkan, jika 1 maka perintah yang dikirimkan adalah perintah untuk menghidupkan perangkat dan jika 0 maka perintah yang dikirim adalah perintah untuk mematikan perangkat.

3.6.1.2 Migrations dan Model

Migration pada framework laravel adalah sebuah class yang menangi pembuatan table pada database. Pada aplikasi web sistem Home Automation yang dirancang terdapat 3 buah tabel database. Tabel tersebut yaitu: tabel commands, merupakan tempat dimana semua perintah dari penggunan akan disimpan sementara sebelum dikirim ke Wemos D1; tabel notifications, merupakan tabel yang menyimpan seluruh notifikasi yang datang dari Wemos D1; tabel measurements , merupakan tabel yang menyimpan seluruh hasil pembacaan sensor yang terhubung ke Wemos D1. Universitas Sumatera Utara 54 Seluruh tabel yang dibuat di migrations kemudian dimodelkan kedalam class Model. Class modul setiap tabel merupakan anak class dari Illuminate\Database\Eloquent\Model, dimana pada class tersebut terdapat banyak sekali fungsi – fungsi yang membantu pen-query-an data dari database atau penyimpanan data ke database. 3.6.1.3Controllers Controller adalah class yang digunakan oleh user untuk memanipulasi Model. Pada aplikasi web yang dirancang terdapat tujuh buah Controller. Controller tersebuat antara lain: CommandController, ConsoleController, DashBoardController , HomeController , MeasurementsController , NotificationsController , dan PublishController. Masing – masing Controller tersebut mempunyai fungsi seperti yang dijelaskan pada bagian Routes.

3.6.2 Front-end UserInterface

Bagian userinterface dari applikasi web dibangun dengan menggunakan bahasa markup HTML dan Javascript. Aplikasi web yang dirancang terdiri dari 5 halaman, yaitu: landing page, halaman register, halaman login, halaman dashBoard dan halaman console. Landing page merupakan halaman awal yang akan dilihat oleh pengguna. Pada halaman ini pengguna bisa memilih aksi login atau register. Halaman ini diakses dari route ‘’ dan dikontrol oleh classHomeController. Halaman Register merupakan tempat dimana user mengisi data seperti nama, email, dan password untuk bergabung dengan sistem. Halaman ini diakses melalui route ‘auth’ dan dikontrol oleh class AuthController. Universitas Sumatera Utara 55 Halaman login merupakan tempat dimana pengguna memasukkan kredensialnya untuk masuk kedalam aplikasi web sistem Home Automation. Sama seperti halaman register, halaman ini juga diakses memalui route ‘auth’ dan dikontrol oleh class AuthController. Halaman dashBoard merupakan halaman kendali utama. Pada halaman ini ditampilkan seluruh perangkat yang tersambung ke Wemos D1. Pada halaman ini juga ditampilkan tombol yang berfungsi untuk menghidupkan perangkat dan mematikan perangkat. Halaman ini diakses melalui route ‘managedashBoard’, serta dikontrol oleh classDashBoardController. Halaman Console merupakan halaman yang dapat menampilkan aktivitas dari sistem Home Automation. Halaman ini diakses memalui route ‘managedashBoardconsole’ serta dikendalikan oleh classConsoleController. Universitas Sumatera Utara 56 BAB 4 HASIL DAN PEMBAHASAN

4.1 Hasil Rancangan Model Sistem Home Automation

Sistem Home Automation yang dirancang terdiri dari dua bagian, yaitu bagian Kontroler dan bagian aplikasi web. Kedua bagian tersebut dijelaskan sebagai berikut.

4.1.1 Kontroler

Bagian kontroler dari sistem Home Automatin yang dirancang terdiri dari sebuah Wemos D1 yang terintegrasi dengan modul Wi-Fi ESP8266, modul relay 4 kanal, stop contact, sensor PIR dan sensor suhu. Wemos D1 dan modul relay di pasang di atas sebuah Boardakrilik. Penampang ketiga komponen ini setelah dipasang di atas Board akrilik seperti yang terlihat pada Gambar 4.1. Gambar 4.1 Penampang komponen – komponen setelah dipasang diatas Board akrilik. Universitas Sumatera Utara 57 Stop contact harus dimodifikasi terlebih dahulu sebelum dapat dikendalikan oleh Wemos D1 melalui modul relay. Stop contact yang telah dimodifikasi memiliki skematik seperti yang ditunjukkan pada Gambar 4.2. Bentuk modifikasi dari stop contact yang telah selesai ditunjukkan pada gambar berikut. Gambar 4.2Bentuk modifikasi stop contact Stop contact yang telah dimodifikasi kemudian disambungkan ke modul relay . Kabel power positif diparalelkan menjadi empat dan masing – masingnya masuk ke input tengah pada masing – masing relay yang ada di modul relay. Kabel power negatif disambungkan ke rail negatif masing – masing lubang masukan stop contact . Kemudian setiap rail negatif disambungkan ke lubang masukan normally open setiap relay. Dengan demikian stop contact sudah dapat dikendalikan oleh Wemos D1 melalui modul relay. Bentuk stop contact yang telah terhubung dengan modul relay diperlihatkan pada Gambar 4.3. Universitas Sumatera Utara 58 Gambar 4.3 Bentuk Stop contact yang terhubung ke relay Kemudian Wemos D1 dengan dihubungkan dengan menggunakan kabel jumper. Pin GND, D2, D3, D4, D5, danVcc 5V Wemos D1 dihubungkan ke pin GND, IN1, IN2, IN3, IN4 dan VCC modul relay. Pin D13 dan GND Wemos D1 disambungkan ke remote AC yang telah dimodifikasi. Pin GND, D6, dan Vcc 5V Wemos D1 disambungkan ke sensor PIR dan yang terakhir pin D7 Wemos D1 disambungkan ke sensor suhu. Bentuk dari semua komponen yang telah dihubungkan adalah seperti yang terlihat pada Gambar 4.4. Universitas Sumatera Utara 59 Gambar 4.4 Bentuk semua komponen yang telah dihubungkan

4.1.2 Aplikasi Web

Bagian userinterface dari applikasi web dibangun dengan menggunakan bahasa markup HTML dan Javascript. Aplikasi web yang dirancang terdiri dari 5 halaman, yaitu: landing page, halaman register, halaman login, halaman dashBoard dan halaman console. 4.1.2.1Landing page Landing page merupakan halaman awal yang akan dilihat oleh pengguna. Pada halaman ini pengguna bisa memilih aksi login atau register. Halaman ini diakses dari route ‘’ dan dikontrol oleh classHomeController. Tampilan halaman ini dapat dilihat pada Gambar 4.5. Layout dari halaman ini akan dibuat dengan menggunakan HTML. Untuk membuat tombol login dan register lebih atraktif, Javascript akan digunakan untuk melakukan hal tersebut. Tombol Register yang ada pada halaman ini ditautkan dengan alamat ke halaman login yaitu www.wahyunugraha.comregister. Begitu juga dengan login, tombol ini akan ditautkan ke halaman login dengan alamat www.wahyunugraha.comregister. Universitas Sumatera Utara 60 Gambar 4.5 Tampilan landing page

4.1.2.2 Halaman Register

Halaman Register merupakan tempat dimana user mengisi data seperti nama, email, dan password untuk bergabung dengan sistem. Halaman ini diakses melalui route ‘auth’ dan dikontrol oleh class AuthController. Tampilan dari halaman ini adalah seperti yang terlihat pada Gambar 4.6. Pada halaman register terdapat 4 textfields yang harus diisi oleh pengguna yaitu: nama, alamat email, password dan konfirmasi password. Data dari halaman ini akan diproses oleh Controller Auth. Gambar 4.6 Tampilan halaman register Universitas Sumatera Utara 61

4.1.2.3 Halaman Login

Halaman login merupakan tempat dimana pengguna memasukkan kredensialnya untuk masuk kedalam aplikasi web sistem Home Automation. Sama seperti halaman register, halaman ini juga diakses memalui route ‘auth’ dan dikontrol oleh class AuthController. Tampilan dari halaman ini adalah seperti yang terlihat pada Gambar 4.7. Pada halaman login terdapat 2 text fields yang harus diisi oleh pengguna, yaitu: alamat email dan password. ControllerAuth akan memproses data dari halaman ini. Jika data yang dimasukkan cocok dengan data yang ada di database, maka penggunakan akan diizinkan untuk masuk ke halaman DashBoard. Gambar 4.7 Tampilan halaman login

4.1.2.4 Halaman DashBoard

Halaman dashBoard merupakan halaman kendali utama. Pada halaman ini ditampilkan seluruh perangkat yang tersambung ke Wemos D1. Pada halaman ini juga ditampilkan tombol yang berfungsi untuk menghidupkan perangkat dan mematikan perangkat. Halaman ini diakses melalui route ‘managedashBoard’, serta dikontrol oleh classDashBoardController. Tampilan dari halaman ini seperti yang ditunjukkan oleh Gambar 4.8. Universitas Sumatera Utara 62 Gambar 4.8 Tampilan halaman dashBoard

4.1.2.5 Halaman Console

Halaman Console merupakan halaman yang dapat menampilkan aktivitas dari sistem Home Automation. Halaman ini diakses memalui route ‘managedashBoardconsole’ serta dikendalikan oleh classConsoleController. Tampilan dari halaman ini seperti yang ditunjukkan pada Gambar 4.9. Gambar 4.9 Tampilan halaman console yang menampilkan notifikasi dari perangkat

4.1.3 Integrasi Kontroler Dengan Aplikasi Web

Tahap pertama yang harus dilakukan sebelum melakukan integrasi antara kontroler dan aplikasi web adalah memastikan kontroler sudah bisa melakukan request ke server. Untuk melakukan pengecekan tersebut sebuah kode seperti yang ada pada Gambar 4.10 dibuat untuk melakukan ping dari kontroler ke server. Universitas Sumatera Utara 63 1 c ons t c har s s i d = Fugue2 ; 2 c ons t c har pas s wor d = f ugue123 ; 3 4 c l as s Pi ngTes t : publ i c v i r t ual Bas eCont r ol l er 5 { 6 publ i c : 7 i nt pi ngCount = 15 ; 8 c har hos t = www. wahy unugr aha. c om ; 9 v oi d s et up 10 { 11 i f env : : wi f i : : obt ai nI pAddr es s Aut omat i c al l y { 12 Wi Fi . c onf i g env : : wi f i : : i p, env : : wi f i : : gat eway , env : : wi f i : : s ubnet , env : : wi f i : : dns 1, env : : wi f i : : dns 2 ; 13 } 14 Wi Fi . begi n s s i d, pas s wor d ; 15 16 whi l e Wi Fi . s t at us = WL_CONNECTED { 17 del ay 100 ; 18 Ser i al . pr i nt . ; 19 } 20 21 Sc hedul er : : ev er y 1000 , [ =] { 22 i f Pi ng. pi ng hos t { 23 Ser i al . pr i nt Pi ng. av er ageTi me ; 24 Ser i al . pr i nt l n ms ; 25 } el s e { 26 Ser i al . pr i nt l n t i meout ; 27 } 28 } , pi ngCount ; 29 } 30 31 v oi d l oop 32 { 33 Sc hedul er : : handl eEv ent s ; 34 } 35 } ; Gambar 4.10 Kode program kontroler untuk melakukan ping ke server Keluaran jika kode diatas dijalankan adalah nilai delay ping dari kontroler ke server dan kembali ke kontroler. Nilai delay yang didapat dari kode ping diatas adalah seperti yang ditunjukkan pada Gambar 4.11. Rata – rata delay yang didpat adalah 99.6 ms. Hasil yang didapat menunjukkan bahwa kontroler sudah bisa berkomunikasi dengan server. Universitas Sumatera Utara 64 Gambar 4.11 Hasil uji ping dari kontroler ke server Integrasi antara program kontroler dan aplikasi web dilakukan oleh class HttpClient pada program kontroler dan classPublishController pada program aplikasi web. Class HttpClient setiap saatnya mengambil pesan yang dikumpulkan oleh classLogger. Pesan tersebut berisi informasi tentang keadaan perangkat – perangkat dan pembacaan sensor. Kemudian class HttpClient melakukan request dengan pesan requestnya berisi pesan yang diterima dari classLogger. Pada bagian server, request tersebut ditangani oleh classPublishController. Class PublishControler menyimpan data yang ada pada pesan request untuk dapat ditampilkan pada halaman DashBoard. Setelah itu classPublishController mengirimkan pesan respon yang berisi perintah dari user ke kontroler. Kontroler kemudian mengeksekusi perintah tersebut dan kembali mengirimkan request ke server dengan pesan yang didapat dari classLogger. Kode dari class HttpClient dapat dilihat pada Lampiran 1.5 dan Lampiran 1.6, kode dari classLogger dapat Universitas Sumatera Utara 65 dilihat pada Lampiran 1.14, dan kode untuk classPublishController dapat dilihat pada Lampiran 2.9.

4.2 Analis Pengaruh Penggunaan Persistent dan Non-persistent HTTP

HTTP bisa menggunakan koneksi persistent dan nonpersistent. Namun, koneksi persistent adalah mode default dari HTTP. Klien dan server HTTP juga bisa di konfigurasi untuk menggunakan koneksi non-persistent. Pada koneksi non-persistent, klien HTTP menginisialisasi sebuah koneksi TCP ke server pada port default HTTP nomor 80. Kemudian klien HTTP mendirim sebuah pesan HTTP request ke server. Pesan request juga terdiri dari nama path. Server HTTP memproses pesan request tersebut dan mengembalikan respon yang sesuai ke klien. Proses server HTTP kemudian memerintahkan TCP untuk menutup koneksi TCP. Namun, koneksi tidak benar-benar terputus sampai TCP yakin bahwa klien telah menerima pesan respon. Setelah klien HTTP menerima pesan respon dari server barulah koneksi TCP diakhiri. Pesan yang diterima dari server adalah sebuah file HTML. Klien kemudian akan mengekstrak isi pesan tersebut dan melakukan melakukan eksekusi yang khusus untuk object yang diekstrak dari pesan tersebut. Jika klien menggunakan web browser, maka aplikasi web browser akan menampilkan halaman berdasarkan pesan respon yang diterima. HTTP tidak memiliki tanggung jawab atas bagaimana halaman web diinterpretasikan oleh klien, HTTP hanya bertanggung jawab atas komunikasi antara program HTTP klien dan program HTTP server. Universitas Sumatera Utara 66 Dengan menggunakan koneksi persistent, server membiarkan koneksi TCP terbuka setelah mengirimkan respon. Sebuah halaman web atau beberapa halaman web yang berasal dari server yang sama dapat dikirimkan dari server ke klien yang sama melalui sebuah koneksi TCP persistent yang sama.

4.2.1 HTTP Persistent

Pengaturan Koneksi yang digunakan oleh Wemos D1 dapat dilakukan dengan membuat duah buah class koneksi HTTP yang mempunyai pengaturan set_reuse yang berbeda. Untuk koneksi persisten class yang digunakan adalah seperti yang terlihat pada Gambar 4.12. 1 c l as s Per s i s t ent Ht t p : publ i c v i r t ual Wi f i Ht t pCl i ent 2 { 3 publ i c : 4 Per s i s t ent Ht t p s t d: : map St r i ng , St r i ng s et t i ng : Wi f i Ht t pCl i ent s et t i ng { } 5 6 v oi d s er v i c e 7 { 8 Debug: : pr i nt l n Memul ai s er v i c e k onek s i HTTP Per s i s t ent . . . ; 9 10 i nt er v al = ; 11 ht t p. s et Reus e t r ue ; 12 13 Sc hedul er : : ev er y i nt er v al , [ =] { 14 updat eMes s age ; 15 ht t pGet gener at eUr i , [ =] { 16 boar d- ex ec ut eUs er Command r es pons e ; 17 } ; 18 } ; 19 } 20 } ; Gambar 4.12 Kode program class HTTP yang menggunakan koneksi persistent Penghitungan kinerja sistem Home Automation dengan menggunakan koneksi persistent dilakukan dengan membuat sebuah script pada bagian server yang mengimitasi perintah dari user. Script ini akan selalu mengirimkan perintah Universitas Sumatera Utara 67 ke Wemos D1 secara berkala. Pada bagaian Wemos beberapa baris kode ditambahkan untuk menghitung berapa lama jarak dari pertama kali Board tersebut mengirimkan data ke server hingga respon yang berisi perintah diterima. Script tersebut lebih jelasnya dapat dilihat pada Gambar 4.13. 1 f unc t i on k i r i mPer i nt ah { 2 t ur nOn6 . c l i c k f unc t i on { 3 . aj ax { ur l : c ommands 1 bui l t i n_l ed , s uc c es s : f unc t i on r es ul t { al er t Per i nt ah t er k i r i m ; } } ; 4 } ; 5 s et Ti meout k i r i mPer i nt ah, 1000 ; 6 } Gambar 4.13 Script pengujian koneksi Pada bagian Wemos D1, pesan request yang dikirmkan ke server berisi sebuah field notifikasi, pengukuran dan informasi Wemos D1. Panjang pesan request yang dikirimkan adalah 251 karakter. Isi pesan request tersebut seperti yang terlihat pada Gambar 4.14. 1 { 2 not i f i c at i ons : [ ] , 3 meas ur ement s : [ ] , 4 c onnec t i onI nf os : [ ] , 5 boar dI nf o : { 6 c hi pI d : 1005283 , 7 c puFr eqMHz : 80 , 8 s dk Ver s i on : 1. 5. 3 aec 24ac 9 , 9 boot Ver s i on : 31 , 10 boot Mode : 1 , 11 c y c l eCount : 20033772 , 12 f r eeHeap : 38560 , 13 s k et c hSi z e : 260568 , 14 f r eeSk et c hSpac e : 786432 15 } 16 } Gambar 4.14 Isi data yang dimasukkan pada pesan request Bentuk uri setelah parameter – parameter seperti alamat host, publish key, subscribe key, signature, channel name, callback dan pesan digabungkan menjadi: Universitas Sumatera Utara 68 www.wahyunugraha.compublishpub-w-3e5de365-5d57-48c7-a317- 366ef2846eb4sub-n-cca59b64-d972-11e5-bdd5- 02ee2ddab7fe0rumah10{notifications:[],measurements:[],BoardInfo:{c hipId:1005283,cpuFreqMHz:80,sdkVersion:1.5.3aec24ac9,bootVersion :31,bootMode:1,cycleCount:20326008,freeHeap:38856,sketchSize:2598 64,freeSketchSpace:786432}}. Ketika pesan request diterima oleh server, maka pesan tersebut akan diekstrak dan disimpan pada tabel database yang sesuai. Kemuidan server akan mengirimkan respon teks yang berisi perintah dalam format JSON yang harus dieksekusi oleh Wemos D1. Pada pengujian, respon tersubut setiap saatnya berisi satu perintah. Panjang pesan respon yang dikirimkan adalah 54 karakter. Isi pesan respon tersebut seperti yang terlihat pada Gambar 4.15. 1 { c ommands : [ { pi n : BUI LTI N_LED , ac t i on : t oggl e } ] } Gambar 4.15 Isi dari pesan respon yang dikirimkan server ke Wemos D1 Pengujian dilakukan sebanyak 5 kali. Satu kali pengujian dilakukan pengiriman perintah sebanyak 20 kali. Hasil dari pengujian dengan menggunakan koneksi HTTP persistent seperti yang terlihat pada Tabel 4.1. Tabel 4.1Waktu respon sistem Home Automation menggunakan koneksi HTTP persistent Perint ah Ke Waktu responPercob aan 1 ms Waktu responPercob aan 2 ms Waktu responPercob aan 3 ms Waktu responPercob aan 4 ms Waktu responPercob aan 5 ms 1 390 180 157 192 182 2 171 145 326 171 162 3 157 140 177 166 174 4 219 132 172 169 240 5 179 167 142 162 202 Universitas Sumatera Utara 69 6 169 160 132 261 182 7 166 239 181 184 172 8 161 277 153 260 172 9 171 178 202 211 202 10 549 163 222 222 261 11 186 168 191 234 201 12 173 143 172 192 163 13 152 172 244 270 212 14 1129 273 150 290 152 15 231 422 182 383 142 16 192 204 174 354 161 17 172 172 142 568 152 18 171 199 174 153 172 19 164 158 196 200 352 20 159 211 173 213 151 Bentuk grafik dari nilai – nilai waktu respon yang ada pada tabel diatas seperti yang ditunjukkan pada Gambar 4.16. Universitas Sumatera Utara 70 Gambar 4.16Grafik nilai waktu respon dengan menggunakan HTTP persistent Pada percobaan pertama nilai waktu respon minumnya adalah 152 ms dan nilai maksimumnya 1129 ms. Rata-rata waktu respon pada percobaan pertama adalah 253 ms. Pada percobaan kedua nilai waktu respon minumnya adalah 132 ms dan nilai maksimumnya 422 ms. Rata-rata waktu respon pada percobaan kedua adalah 195 ms. Pada percobaan ketiga nilai waktu respon minumnya adalah 132 ms dan nilai maksimumnya 326 ms. Rata-rata waktu respon pada percobaan ketiga adalah 183 ms. 200 400 600 800 1000 1200 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 W akt u R e sp on m s Perintah Ke Delay Percobaan 1 ms Delay Percobaan 2 ms Delay Percobaan 3 ms Delay Percobaan 4 ms Delay Percobaan 5 ms Universitas Sumatera Utara 71 Pada percobaan keempat nilai waktu respon minumnya adalah 153 ms dan nilai maksimumnya 568 ms. Rata-rata waktu respon pada percobaan keempat adalah 243 ms. Pada percobaan kelima nilai waktu respon minumnya adalah 142 ms dan nilai maksimumnya 352 ms. Rata-rata waktu respon pada percobaan kelima adalah 190 ms. Secara keseluruhan rata – rata waktu respon yang didapat adalah 213 ms. Nilai ini masih cukup besar karena waktu respon ideal yang diinginkan harus lebih kecil dari 100 ms.

4.2.2 HTTP Non-persistent

Pengujian waktu respon sistem Home Automation dengan menggunakan koneksi HTTP non-persistent memiliki metode yang sama dengan pengujian dnegan menggunakan koneksi HTTP persistent. Data yang dikirim oleh Wemos D1 ke server sama dengan data yang ada pada Gambar 4.14Dan pesan respon yang dikirim oleh server ke Wemos D1 sama dengan data yang ada pada Gambar 4.15. Pengujian dilakukan sebanyak 5 kali. Satu kali pengujian dilakukan pengiriman perintah sebanyak 20 kali. Hasil dari pengujian dengan menggunakan koneksi HTTP persistent seperti yang terlihat pada Tabel 4.2. Universitas Sumatera Utara 72 Tabel 4.2 Waktu respon sistem Home Automation menggunakan koneksi HTTP non-persistent Perint ah Ke Waktu responPerco baan 1 ms Waktu responPerco baan 2 ms Waktu responPerco baan 3 ms Waktu responPerco baan 4 ms Waktu responPerco baan 5 ms 1 1347 450 361 391 332 2 371 321 351 612 311 3 331 372 341 400 382 4 314 711 772 401 373 5 319 342 382 321 352 6 332 1372 381 330 391 7 373 352 352 501 342 8 370 341 451 451 321 9 421 351 391 408 322 10 451 331 412 355 312 11 382 362 391 391 292 12 411 411 382 321 361 13 342 351 382 611 352 14 343 374 391 361 301 15 330 319 352 322 311 16 413 331 442 312 331 17 341 332 402 351 361 18 351 332 391 321 343 19 321 401 372 301 331 20 331 412 371 341 362 Bentuk grafik dari nilai – nilai waktu respon yang ada pada tabel diatas seperti yang ditunjukkan pada Gambar 4.17. Universitas Sumatera Utara 73 Gambar 4.17 Grafik nilai waktu respon dengan menggunakan HTTP non- persistent Pada percobaan pertama nilai waktu respon minumnya adalah 314 ms dan nilai maksimumnya 1347 ms. Rata-rata waktu respon pada percobaan pertama adalah 410 ms. Pada percobaan kedua nilai waktu respon minumnya adalah 319 ms dan nilai maksimumnya 1372 ms. Rata-rata waktu respon pada percobaan kedua adalah 428 ms. Pada percobaan ketiga nilai waktu respon minumnya adalah 341 ms dan nilai maksimumnya 772 ms. Rata-rata waktu respon pada percobaan ketiga adalah 403 ms. Pada percobaan keempat nilai waktu respon minumnya adalah 301 ms dan nilai maksimumnya 612 ms. Rata-rata waktu respon pada percobaan keempat adalah 390 ms. 200 400 600 800 1000 1200 1400 1600 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 W akt u R e sp on m s Perintah Ke Delay Percobaan 1 ms Delay Percobaan 2 ms Delay Percobaan 3 ms Delay Percobaan 4 ms Delay Percobaan 5 ms Universitas Sumatera Utara 74 Pada percobaan kelima nilai waktu respon minumnya adalah 292 ms dan nilai maksimumnya 391 ms. Rata-rata waktu respon pada percobaan kelima adalah 190 ms. Secara keseluruhan rata – rata waktu respon yang didapat adalah 394 ms. Nilai ini juga masih cukup besar karena waktu respon ideal yang diinginkan harus lebih kecil dari 100 ms. Perbandingan rata – rata waktu respon untuk kedua koneksi diperlihatkan pada Gambar 4.18. Terlihat waktu respon lebih kecil dengan menggunakan koneksi persistent. Gambar 4.18 Perbandingan rata – rata waktu respon mengguanakan koneksi persistent dan non-persistent

4.3 Pengukuran Jarak MaksimumKontroler ke Hostspot

Pengukuran jarak maksimum kontroler ke access point dilakukan dengan cara melakukan ping dari Wemos D1 ke server setiap 5 meter. Sebuah laptop dengan perangkat Wi-Fi dijadikan sebagai access point. Pengukuran dilakukan di Jl. Tri Dharma atau lebih tepatnya di gerbang 4 USU. Hasil dari pengukuran adalah seperti yang terlihat pada 50 100 150 200 250 300 350 400 450 Persistent Non-persistent W akt u R e sp on m s Universitas Sumatera Utara 75 Tabel 4.3 Hasil pengukuran delay dari Wemos D1 ke server berdasarkan jarak Jarak m Percobaan 1 ms Percobaan 2 ms Percobaan 3 ms Percobaan 4 ms Percobaan 5 ms rata – rata ms 5 86 93 92 93 95 92 10 108 105 84 86 92 95 15 111 80 106 100 110 101 20 88 103 153 157 125 125 25 203 178 116 170 187 171 30 188 149 213 179 193 185 35 210 177 275 250 207 223 40 320 303 202 350 224 280 45 405 314 303 296 463 356 50 371 536 386 330 559 437 55 611 634 664 572 497 595 60 722 577 636 671 789 679 65 665 947 831 700 673 764 70 747 965 818 920 984 886 75 1207 1178 822 938 1199 1069 80 1527 1067 1421 1494 1514 1405 85 1770 1639 1586 1590 1507 1618 90 1849 1795 1961 1846 1566 1804 95 1883 2334 2364 2154 2259 2198 100 2666 2639 2100 2331 2639 2475 105 2607 2523 2724 2767 3079 2740 110 2694 3156 3255 3388 3197 3138 115 3509 3276 3782 3669 3854 3618 120 4431 3974 4214 4017 4264 4180 125 timeout timeout timeout timeout timeout timeout Universitas Sumatera Utara 76 Bentuk grafik dari data yang ada pada Tabel 4.3 adalah seperti yang terlihat pada Gambar 4.19. Gambar 4.19 Grafik besar delay terhadap perubahan jarak Pada Gambar 4.19 terlihat bahwa delay dari Kontroler ke Access point semakin besar seiring dengan pertambahan jarak. Pada jarak 5 sampai 55-meter delay yang didapat memiliki nilai yang yang lebih kecil dari 500 ms, jeda yang dibutuhkan dari pengiriman perintah dari server sampai dieksekusi oleh kontroler dengan delay sebesar ini tidak terlalu terasa. Pada jarak 60 meter keatas jeda dari perintah dikirim sampai dieksekusi sangat terasa. Jadi jarak yang ideal dari kontroler ke access point adalah 5 sampai 55 meter. 500 1000 1500 2000 2500 3000 3500 4000 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 D el a y ms Jarak m Universitas Sumatera Utara 77 BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan