BAB 2 TEORI DASAR
2.1 Home Automation
Home Automation merupakan sebuah metode dari pengendalian perangkat –
perangkat yang ada dirumah secara otomatis untuk kemudahan dan kenyamanan dari penggunanya. Teknologi ini membuat kehidupan yang lebih mudah bagi penggunanya, dan dapat menghemat penggunaan energi dengan membatasi penggunaan perangkat-perangkat. Kontrol yang dilakukan dapat berupa kontrol sederhana berupa mematikan lampu dengan sebuah remote atau berupa menghubungkan beberapa perangkat yang ada dirumah kedalam sebuah jaringan perangkat – perangkat yang dapat diprogram menggunakan sebuah Controller utama atau bahkan pengendalian menggunakan ponsel dari mana saja[2].
Bagian – bagian Home Automation adalah seperti yang terlihat pada Gambar 2.1. Terdapat tiga layer utama pada sistem Home Automation yaitu:
Sensor/Inputlayer, merupakan bagian yang meliputi input jarak jauh dari user dan
sensor – sensor yang tehubung ke sistem Home Automation untuk mendapatkan nilai pengukuran beberapa parameter seperti suhu, cahaya dan sebagainya;
Control layer, merupakan bagian yang melakukan kendali berdasarkan program
Home Automation
Gambar 2.1 Tiga layer utama sistem Home Automation
2.2 Arduino
Arduino adalah sebuah BoardController yang bersifat open-source. Arduino banyak digunakan dengan tujuan edukasi diseluruh dunia, terutama oleh designer yang ingin membuat sebuah prarupa dengan mudah tapi tidak membutuhkan pemahaman yang mendalam dari detail - detail teknikal yang ada dibelakang desainnya. Arduino juga mempunyai banyak contoh kode untuk mendemostrasikan berbagai penggunaan board tersebut.
2.2.1 Software Arduino
Software dari arduino disebut dengan sketches, yang tulis dalam bahasa
pemprograman C++, dapat dibuat pada Arduino integrated development
environtment (IDE) atau dengan menggunakan text editor lainnya. Kemudian
1 v oi d s et up( ) {
2 pi nMode(LED_BUI LTI N, OUTPUT) ; 3 }
4
5 v oi d l oop( ) {
6 di gi t al Wr i t e(LED_BUI LTI N, LOW) ; 7 del ay(1000) ;
8 di gi t al Wr i t e(LED_BUI LTI N, HI GH) ; 9 del ay(2000) ;
10 }
Gambar 2.2 Contoh sebuah sketch Arduino
2.2.2 Hardware Arduino
Board Arduino adalah tempat dimana kode yang telah ditulis akan
dieksekusi. Board tersebut hanya bisa mengontrol dan merespon listrik, jadi beberapa komponen spesifik ditambahkan untuk membuatnya dapat berinteraksi dengan dunia nyata. Komponen ini dapat berupa sensor, yang mengkonversikan beberapa aspek dari dunia nyata ke dalam bentuk listrik sehingga Arduino dapat merasakannya, atau berupa aktuator, yang mendapatkan listrik dari Arduino dan mengkonversikannya ke dalam bentuk lain seperti gerakan, cahaya, dan sebagainya. Contoh dari sensor meliputi switch, passive infrared sensor, dan
ultrasound distance sensor. Aktuator merupakan komponen seperti LED, speaker,
Gambar 2.3BoardWemos D1
TCP/IP adalah gabungan dari protokol TCP dan IP sebagai sekelompok protokol yang mengatur satu komputer ke komputer lain di dalam jaringan pengiriman data sampai ke alamat yang dituju. sendiri, karena protokol ini berupa kumpulan protokol ini juga merupakan protokol yang paling banyak digunakan saat ini, karena protokol ini mampu bekerja dan dapat diimplementasikan pada lintas perangkat lunak ini adalah
2.3.1 Arsitektur Protokol TCP/IP
Interconnection (OSI). Standarini terdiri dari 7 lapisan protokol yang menjalankan
fungsi komunikasi antara 2 komputer. Dalam TCP/IP hanya terdapat 4 lapisan. Adapun perbandingan arsitektur OSI dan TCP/IP ini diperlihatkan pada Gambar 2.4.
Arsitektur OSI Arsitektur TCP/IP
Aplication Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Network Access Layer Aplication Layer
Transport Layer
Internet Layer
Physical Layer
Gambar 2.4Perbandingan arsitektur OSI dan TCP/IP.
Pada Gambar 2.4 dapat diperhatikan bahwa pada Layer OSI terdapat
7-layer yang dimulai dari physical 7-layer, data link 7-layer, network 7-layer, transport
layer, session layer, presentation layer dan application layer. Sedangkan pada
TCP/IP hanya terdapat 4 layer, network access layer, internet layer, transport
Walaupun jumlahnya berbeda, namun semua fungsi dari lapisan-lapisan arsitektur OSI telah tercakup oleh arsitektur TCP/IP. Adapun rincian fungsi masing-masing layer arsitektur TCP/IP adalah sebagai berikut:
a. Network Access Layer mempunyai fungsi yang mirip dengan Data Link layer pada OSI. Lapisan ini mengatur penyaluran data frame-frame data
pada media fisik yang digunakan secara handal. Lapisan ini biasanya memberikan servis untuk deteksi dan koreksi kesalahan dari data yang ditransmisikan. Beberapa contoh protokol yang digunakan pada lapisan ini adalah X.25 jaringan publik, Ethernet untuk jaringan Ethernet, AX.25 untuk jaringan Paket Radio dan sebagainya.
b. Internet Layer mendefinisikan bagaimana hubungan dapat terjadi antara
dua pihak yang berada pada jaringan yang berbeda seperti Network Layer pada OSI. Pada jaringan Internet yang terdiri atas puluhan juta host dan ratusan ribu jaringan lokal, lapisan ini bertugas untuk menjamin agar suatu paket yang dikirimkan dapat menemukan tujuannya dimana pun berada. Oleh karena itu, lapisan ini memiliki peranan penting terutama dalam mewujudkan internet working yang meliputi wilayah luas (worldwide
Internet). Beberapa tugas penting pada lapisan ini adalah:
i. Addressing, yakni melengkapi setiap datagram dengan alamat
Internet dari tujuan. Alamat pada protokol inilah yang dikenal dengan Internet ProtocolAddress (IP Address). Karena
ii. Routing, yakni menentukan kemana datagram akan dikirim agar
mencapai tujuan yang diinginkan. Fungsi ini merupakan fungsi terpenting dari IP. Sebagai protokol yang bersifat connectionless, proses routing sepenuhnya ditentukan oleh jaringan. Pengirim tidak memiliki kendali terhadap paket yang dikirimkannya untuk bisa mencapai tujuan. Router-router pada jaringan TCP/IP adalah hal yang sangat menentukan dalam penyampaian datagram dari penerima ke tujuan.
c. Transport Layer mendefinisikan cara-cara untuk melakukan pengiriman
data antara end-to-end host secara handal. Lapisan ini menjamin bahwa informasi yang diterima pada sisi penerima adalah sama dengan informasi yang dikirimkan pada pengirim. Untuk itu, lapisan ini memiliki beberapa fungsi penting antara lain:
i. Flow Control
Pengiriman data yang telah dipecah menjadi paket paket tersebut harus diatur sedemikian rupa agar pengirim tidak sampai mengirimkan data dengan kecepatan yang melebihi kemampuan penerima dalam menerima data.
ii. Error Detection
mengandung kesalahan tadi. Namun hal ini dapat menimbulkan
delay yang cukup berarti.
Pada TCP/IP, protokol yang dipergunakan adalah TCP atau UDP. TCP dipakai untuk aplikasi-aplikasi yang membutuhkan keandalan data, sedangkan UDP digunakan untuk aplikasi yang membutuhkan panjang paket yang pendek dan tidak menuntut keandalan yang tinggi. TCP memiliki fungsi flow control dan error detection dan bersifat connection oriented. Sebaliknya pada UDP yang bersifat connectionless tidak ada mekanisme pemeriksaan data dan flow control, sehingga UDP disebut juga unreliable protocol.
d. Application Layer merupakan lapisan terakhir dalam arsitektur TCP/IP
yang berfungsi mendefinisikan aplikasi - aplikasi yang dijalankan pada jaringan. Karena itu, terdapat banyak protokol pada lapisan ini, sesuai dengan banyaknya aplikasi TCP/IP yang dapat dijalankan. Contohnya adalah SMTP (Simple Mail Transfer Protocol) untuk pengiriman e-mail, FTP (File Transfer Protocol) untuk transfer file, HTTP (Hyper Text Transfer Protocol) untuk aplikasi web, NNTP (Network News Transfer
Protocol) untuk distribusi news group dan lain-lain. Setiap aplikasi pada
umumnya menggunakan protokol TCP dan IP, sehingga keseluruhan keluarga protokol ini dinamai dengan TCP/IP[4].
2.3.2 Pengiriman dan Penerimaan Paket Data
Layer-layer dan protokol yang terdapat dalam arsitektur jaringan TCP/IP
Setiap lapisan menerima data dari lapisan di atas atau dibawahnya, kemudian memproses data tersebut sesuai fungsi protokol yang dimilikinya dan meneruskannya ke lapisan berikutnya. Ketika dua komputer berkomunikasi, terjadi aliran data antara pengirim dan penerima melalui lapisan-lapisan di atas. Pada pengirim, aliran data adalah dari atas ke bawah. Data dari user maupun suatu aplikasi dikirimkan ke Lapisan Transport dalam bentuk paket-paket dengan panjang tertentu. Protokol menambahkan sejumlah bit pada setiap paket sebagai
header yang berisi informasi mengenai urutan segmentasi untuk menjaga
integritas data dan bit-bit pariti untuk deteksi dan koreksi kesalahan.
Ekapsulasi Data
Gambar 2.5 Proses enkapsulasi Data.
Selanjutnya data menuju Network Access Layer (Data Link) dimana data akan diolah menjadi frame-frame, menambahkan informasi keandalan dan
address pada level link. Protokol pada lapisan ini menyiapkan data dalam bentuk
yang paling sesuai untuk dikirimkan melalui media komunikasi tertentu.
Terakhir data akan dikirimkan dalam bentuk besaran-besaran listrik/fisik seperti tegangan, arus, gelombang radio maupun cahaya, sesuai media yang digunakan. Di bagian penerima, proses pengolahan data mirip seperti di atas hanya dalam urutan yang berlawanan (dari bawah ke atas). Sinyal yang diterima pada akan diubah dalam ke dalam data. Protokol akan memeriksa integritasnya dan jika tidak ditemukan error, header yang ditambahkan akan dilepas. Selanjutnya data diteruskan ke lapisan network. Pada lapisan ini, address tujuan dari paket data yang diterima akan diperiksa. Jika address tujuan merupakan
addresshost yang bersangkutan, maka header lapisan network akan dicopot dan
Pada lapisan Transport, kebenaran data akan diperiksa kembali, menggunakan informasi header yang dikirimkan oleh pengirim. Jika tidak ada kesalahan, paket-paket data yang diterima akan disusun kembali sesuai urutannya pada saat akan dikirim dan diteruskan ke lapisan aplikasi pada penerima. Proses yang dilakukan tiap lapisan tersebut dikenal dengan istilah enkapsulasi data. Enkapsulasi ini sifatnya transparan, maksudnya suatu lapisan tidak perlu mengetahui ada berapa lapisan yang ada di atasnya maupun di bawahnya. Masing masing hanya mengerjakan tugasnya. Pada pengirim, tugas ini adalah menerima data dari lapisan diatasnya, mengolah data tersebut sesuai dengan fungsi protokol, menambahkan header protokol dan meneruskan ke lapisan di bawahnya. Pada penerima, tugas ini adalah menerima data dari lapisan di bawahnya, mengolah data sesuai fungsi protokol, mencopot header protokol tersebut dan meneruskan ke lapisan di atasnya[4].
2.3.3 Internet Protocol
Internet Protocol (IP) berfungsi menyampaikan paket data ke alamat yang tepat. Oleh karena itu Internet Protokol memegang peranan yang sangat penting dari jaringan TCP/IP. Karena semua aplikasi jaringan TCP/IP pasti bertumpu kepada IP agar dapat berjalan dengan baik. IP merupakan protokol pada
networklayer yang bersifat:
a. Connectionless, yakni setiap paket data yang dikirim pada suatu saat akan
b. Unreliable atau ketidakandalan yakni Protokol IP tidak menjamin datagram yang dikirim pasti sampai ke tempat tujuan. Ia hanya akan
melakukan best effort delivery yakni melakukan usaha sebaik-baiknya agar paket yang dikirim tersebut sampai ke tujuan.
Suatu datagram bisa saja tidak sampai dengan selamat ke tujuan karena beberapa hal berikut:
a. Adanya bit error pada saat pentransmisian datagram pada suatu medium. b. Router yang dilewati mendiscard datagram karena terjadinya kongesti dan
kekurangan ruang memori buffer.
c. Putusnya rute ke tujuan untuk sementara waktu akibat adanya router yang
down.
host tujuan. Hal ini menambah waktu pemrosesan pada router dan menyebabkan
delay[4].
2.4 Wireless Fidelity (Wi-Fi)
Wi-Fi adalah sebuah teknologi terkenal yang memanfaatkan peralatan elektronik untuk bertukar data secara nirkabel (menggunakan gelombang radio) melalui sebuah jaringan komputer, termasuk koneksi Internet berkecepatan tinggi. Wi-Fi Alliance mendefinisikan Wi-Fi sebagai "produk jaringan wilayah lokal nirkabel (WLAN) apapun yang didasarkan pada standar Institute of Electrical and
Electronics Engineers (IEEE) 802.11". Meski begitu, karena kebanyakan WLAN
zaman sekarang didasarkan pada standar tersebut, istilah "Wi-Fi" dipakai dalam bahasa Inggris umum sebagai sinonim "WLAN"[6].
Sebuah alat yang dapat memakai Wi-Fi (seperti komputer pribadi, konsol
video game, telepon pintar, tablet, atau pemutar audio digital) dapat terhubung
dengan sumber jaringan seperti Internet melalui sebuah titik akses jaringan nirkabel. Titik akses (atau access point) seperti itu mempunyai jangkauan sekitar 20 meter di dalam ruangan dan lebih luas lagi di luar ruangan. Cakupan access
point dapat mencakup wilayah seluas kamar dengan dinding yang memblokir
gelombang radio atau beberapa kilometer persegi.
2.5 Hypertext Transfer Protocol (HTTP)
web servers[7]. HTTP mulai sebagai sebuah protokol yang sederhana. Sekarang
semuanya telah berubah, HTTP menjadi sebuah protokol yang sangat populer
2.5.1 HTTP: Kurir Multimedia di Internet
Miliaran gambar JPEG, halaman HTML, file teks, video MPEG, fileaudio WAV, java applets, dan masih banyak lagi berlayar di internet setiap hari. HTTP membawa informasi ini dengan sangat cepat, mudah, dan terpercaya dari web
server yang ada di berbagai lokasi ke web browser yang ada di pengguna.
Karena HTTP menggunakan protokol transimisi data yang reliable, dia menjamin bahwa data user tidak akan rusak atau teracak pada saat transit, bahkan ketika data tersebut datang dari belahan bumi yang lain. Hal ini bagus untuk pengguna, karena pengguna dapat mengakses informasi tanpa perlu khawatir tentang apa yang terjadi di belakang. Transmisi yang reliable juga bagus untuk para pengembang aplikasi internet, karena mereka bisa fokus pada detail – detail aplikasi mereka tanpa perlu khawatir tentang ketidak pastian yang ada di jaringan internet
2.5.2 Web Client dan Web Server
Konten web disimpan di dalam web servers. Web servers berkomukasi dengan menggunakan protokol HTTP, sehingga mereka seringkali disebut server HTTP. Server HTTP ini menyimpan data internet dan menyediakan data tersebut ketika data tersebut di minta (requested) oleh klien HTTP. Klien mengirim
request HTTP ke server, dan server mengirimkan kembali data yang diminta di
HTTP servers secara bersama – sama membangun komponen dasar dari World
Wide Web.
Gambar 2.6Web servers dan web clients
2.5.3 HTTP Methods
HTTP men-support beberapa perintah request yang berbeda, yang disebut
HTTP methods. Setiap pesan requestHTTP mempunyai sebuah method.
Methodmenyatakan aksi apa yang akan dilakukan. Tabel 2.1 menampilkan
beberapa mehtod HTTP yang sering digunakan [7].
Tabel 2.1 Beberapa HTTP methods yang sering digunakan.
HTTP Method Deskripsi
GET Mengirimkan data yang diminta
dari server ke klien
PUT Menyimpan data yang berasal dari
klien ke resourcesserver.
DELETE Membuang resource dari server
POST Mengirimkan data klien ke sebuah
aplikasi serverGateway.
2.5.4 HTTP Persistent dan HTTP Non-persistent
Connection dibagi menjadi 2 yaitu persistent dan non-persistent.
Persistentconnection adalah linkatau sambungan yang tidak akan mati atau
tertutup ketika pengeksekusian scriptnya berakhir. Jika persistentconnection tersebut diminta, maka akan langsung mengecek apakah sambungan tersebut masih ada atau tidak. Jika masih ada, maka sambungan itu akan langsung digunakan. Jika tidak ada, maka akan berusaha membuat sambungan tersebut.
Non-persistentconnection ini berkebalikan dengan persistentconnection artinya
linkatau sambungan akan langsung ditutup atau mati saat pengeksekusian script
berakhir. Jadi setiap link ini dipanggil, maka ia akan langsung membuat sambungan baru.
2.6 Personal Home Page (PHP)
PHP adalah sebuah bahasa scriptyang di interpretasikan di bagian server. Ini berarti kode PHP di-upload terlebih dahulu ke web server, kemudian di eksekusi oleh sebuah interpreter. PHP biasanya digunakan dengan sebuah web
serverseperti Apache untuk memberikan konten yang dinamis. Namun PHP juga
bisa digunakan untuk membuat sebuah aplikasi command-line(seperti bash, Ruby, Python)[8].
2.6.1 Fitur PHP
Bahasa PHP modern mempunyai banyak fitur baru menarik. Fitur – fitur baru ini membuat bahasa PHP menjadi sebuah platform yang kuat dan menyediakan pengalaman yang menyenangkan dalam membangun aplikasi
2.6.1.1Namespaces
Namespacesadalah sebuah fitur penting yang mengorganisir kode PHP
menjadi sebuah hirarki virtual seperti struktur direktori yang ada pada filesystem sistem operasi. Setiap komponen dan frameworkPHP modern mengorganisir kodenya dibawah namespace global vendor yang unik sehingga kode yang dimilikinya tidak konflik atau memiliki nama class yang sama dengan class yang digunakan oleh vendor lain[8].
2.6.1.2Multiple Imports
Ketika melakukan import beberapa class, interface, fungsi, atau konstanta kedalam sebuah file PHP, kata kunci useakan banyak sekali digunakan untuk melakukan hal tersebut. PHP mempunyai sintaks pintas yang dapat menggabungkan beberapa pernyataan usemenjadi satu seperti yang terlihat pada Gambar 2.7.
1 <?php
2
3 us e I l l umi nat e\ Cons ol e\ Sc hedul i ng\ Sc hedul e,
4 I l l umi nat e\ Foundat i on\ Cons ol e\ Ker nel as Cons ol eKer nel ;
Gambar 2.7 Pengunaan satu pernyataan use untuk meng-import beberapa class
2.6.1.3Autoloading
Autoloader adalah salah satu fitur yang banyak dijumpai pada komponen
PHP modern. Dengan adanya autoloader, dependencies proyek dapat di-autoload dengan menggunakan pengelola dependencies Composer. Jadi ketika pada suatu
class lain, maka autoloader akan meng-include-kan secara otomatis file skrip
class tersebut.
2.6.1.4Closures
Closures dan fungsi anonim pertama kali diperkenalkan di PHP 5.3.0,
keduanya adalah feature yang sangat berguna bagi setiap pengembang PHP.
Fungsi anonim atau yang juga dikenal sebagai closures, memungkinkan untuk pembuatan fungsi yang tidak memiliki nama yang spesifik[8]. Mereka banyak digunakan sebagai nilai dari parameter callback seperti yang diperlihatkan pada Gambar 2.8.
1 <?php
2
3 Rout e: :get(' / ' , f unc t i on( ) { 4 ec ho " Hel l o! "
5 } ) ;
Gambar 2.8Contoh penggunaan closure sebagai parameter
2.7 Javascript
JavaScript adalah bahasa pemrograman tingkat tinggi dan dinamis. JavaScript populer di internet dan dapat bekerja di sebagian besar penjelajah web populer seperti Google Chrome, Internet Explorer (IE), Mozilla Firefox, Netscape dan Opera. Kode JavaScript dapat disisipkan dalam halaman web menggunakan tag SCRIPT.
1 <s c r i pt t y pe=" t ex t / j av as c r i pt "> 2 al er t ( " Hel l o Wor l d! " ) ; 3 </ s c r i pt >
Gambar 2.9 Contoh kode javascript di dalam script HTML
2.8 Hyper Text Markup Language (HTML)
HTML adalah sebuah markup language yang digunakan untuk membuat sebuah halaman web, menampilkan berbagai informasi di dalam sebuah penjelajah web Internet dan pemformatan hiperteks sederhana yang ditulis dalam format ASCII agar dapat menghasilkan tampilan yang terintegerasi. Dengan kata lain, berkas yang dibuat dalam perangkat lunak pengolah kata dan disimpan dalam format ASCII normal sehingga menjadi halaman web dengan perintah-perintah HTML. Bermula dari sebuah bahasa yang sebelumnya banyak digunakan di dunia penerbitan dan percetakan yang disebut dengan SGML (Standard Generalized Markup Language), HTML adalah sebuah standar yang digunakan secara luas untuk menampilkan halaman web. HTML saat ini merupakan standar Internet yang didefinisikan dan dikendalikan penggunaannya oleh World Wide Web Consortium (W3C).
2.9 Obect Oriented Programming (OOP)
Konsep utama yang ada pada OOP adalah untuk menggabungkan data dan fungsi yang melakukan operasi pada data tersebut menjadi satu unit. Unit yang demikian disebut dengan object[9]..
Fungsi yang dimiliki oleh object disebut dengan member function atau
method, biasanya menyediakan satu – satunya cara untuk mengakes datanya. Jika
langsung. Dalam hal ini data dan fungsinya dikatakan menjadi ter-encapsulated menjadi satu entitas. Data encapsulation dan data hiding adalah kata kunci yang ada pada deskripsi dari bahasa object-oriented [9]. Terdapat tujuh konsep dasar yang ada pada OOP yaitu:
a) Abstraction–Proses dari mengambil fitur bersama dari objek dan prosedur.
b) Class – Sebuah kategori dari objek. Class memuat semua properti bersama
dari objek – objek yang dimilikinya.
c) Encapsulation – Proses dari menggabungkan elemen – elemen untuk
membuat sebuah entitas baru. Sebuah prosedur adalah sebuah tipe dari encapsulation karena dia menggabungkan beberapa instruksi komputer menjadi satu bagian.
d) Inheritance – Sebuah fitur yang merepresentasikan hubungan “adalah
sebuah” diantara class yang berbeda.
e) Interface – Sebuah struktur atau sintaks yang memungkinkan komputer
untuk memaksakan properti tertentu pada sebuah objek (class). Sebagai contoh, misalkan sebuah class Motor, class Mobil, dan class Pesawat. Setiap class tersebut harus memiliki sebuah aksi hidupkan_mesin ().
f) Object – Instance dari sebuah class dimana objek bisa berupa sebuah
kombinasi dari beberapa variabel, fungsi dan struktur data.
g) Polymorphism – Sebuah kemampuan pemprograman untuk memproses
objek secara berbeda berdasarkan tipe data atau class objek tersebut[9]. Sebuah program yang bersifat object-oriented biasanya terdiri dari beberapa
sama lain. Struktur dari sebuah program tersebut adalah seperti yang ditunjukkan pada Gambar 2.10.
Object 1
Data
Member Function Member Function
Object 2
Data
Member Function Member Function
Object 3
Data
Member Function Member Function