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