PROGMEM prog_char html_table_empat[] = form METHOD=get action=\http:192.168.1.4\input type=hidden name=\cmd\
value=\; PROGMEM prog_char html_table_lima[] = 0\input type=submit
value=\Off\formdivtd\ntddiv align=\center\; PROGMEM prog_char html_table_enam[] = divtd\n;
PROGMEM prog_char idrelay[] = 01234; PROGMEM prog_char stsrelay_mati[] = Mati;
PROGMEM prog_char stsrelay_hidup[] = Hidup; PROGMEM prog_char hidup_semua[] = form METHOD=get
action=\http:192.168.1.4\\ninput type=hidden name=\cmd\ value=\a1\\ninput type=submit value=\Hidupkan
Semua\\nform\n; PROGMEM prog_char mati_semua[] = form METHOD=get
action=\http:192.168.1.4\\ninput type=hidden name=\cmd\ value=\a0\\ninput type=submit value=\Matikan
Semua\\nform\n; PGM_P awalakhir_html[] PROGMEM = {http_respond_header,
html_headera, html_headerb, html_headerc, html_table_headera, html_table_headerb, html_footera, html_footerb};
PGM_P penyusn_tabel[] PROGMEM = {html_table_satu, html_table_dua, html_table_tiga, html_table_empat, html_table_lima,
html_table_enam}; PGM_P stRelay[] PROGMEM = {stsrelay_mati, stsrelay_hidup};
PGM_P semua[] PROGMEM = {hidup_semua, mati_semua};
3.3.3 Fungsi Setup
Pada fungsi setup pin digital 2,3,5 dan 6 diset sebagai pin keluaran dengan fungsi pinMode. Karena angka pin digital tersebut sudah disimpan di dalam array
relay[] maka untuk memudahkan digunakan instruksi for untuk menset pin-pin tersebut. Setelah itu program akan menginisialisasi pengaturan jaringan dengan
Ethernet.beginmac,ip dan mulai mendengarkan permintaan dari client dengan server.begin. Berikut ini adalah kode lengkap fungsi setup:
3.3.4 Fungsi Loop
Pada fungsi loop program akan mengecek apakah ada client yang melakukan permintaan. Jika ada client yang melakukan permintaan maka arduino
uno akan menerima HTTP request message dari client dan menyimpan tiap karakter ke variabel c lalu mengecek variabel c untuk mendapatkan akhir dari
HTTP request message. Akhir dari HTTP request message adalah sebuah baris kosong. Arduino Uno juga menyimpan 14 karakter pertama dari HTTP request
message kesebuah objek string yang bernama readString. Perintah untuk mematikan atau menghidupkan relay terdapat pada 14 karakter pertama dari
HTTP request message tersebut. Setelah akhir dari HTTP request message diterima, arduino uno akan
mengecek apakah terdapat perintah yang valid dari object readString. Jika terdapat perintah yang valid maka arduino akan menyimpan karakter kesebelas ke variabel
cRelay dan karakter keduabekas ke variabel cCmd. Variabel cRelay menunjukkan relay yang akan dikontrol sedangkan variabel cCmd menunjukkan perintah yang
akan dilakukan. Jika kedua variabel tersebut valid maka fungsi kerjakan akan dipanggil.
Kemudian arduino uno akan mengirimkan halaman web smart building ke client. Pertama-tama setiap kode HTTP respond message dan HTML yang berada
di memori program disali ke variabel buffer, setelah itu variabel buffer isi dari variabel buffer akan dikirimkan ke client. Setelah halaman web smart building
dikirim ke client arduino uno akan menutup koneksi ke client dah membersihkan isi dari objek readString. Kemudian arduino uno bersiap untuk melayani client
berikutnya. Kode program untuk fungsi loop adalah sebagai berikut:
void loop { dengarkan client yang masuk
EthernetClient client = server.available; if client {
sebuah http request diakhiri oleh baris kosong \n\r\n\r boolean currentLineIsBlank = true;
while client.connected { if client.available {
char c = client.read; if readString.length 14{
readString +=c; }
jika akhir dari baris telah ditemuikarakter baris barunew line\n
dan baris tersebut adalah baris kosong, the http request telah berakhir,
jadi balasanreplay dapat dikirim if c == \n currentLineIsBlank {
if readString.indexOfGET ?cmd= = 0{ cek apakah http request adalah perintah get dan cmd
cRelay = readString.charAt10; cCmd = readString.charAt11;
if cRelay = LcRelay || cCmd = LcCmd cRelay == 0 || cRelay == 1 || cRelay == 2 || cRelay
== 3 || cRelay == acCmd == 0 || cCmd == 1{ kerjakancRelay, cCmd;
} }
kirim http respond dan pembuka halaman web for byte i = 0; i6 ; i++{
strcpy_Pbuffer, charpgm_read_wordawalakhir_html[i];
client.printbuffer; }
for byte i = 0; i4; i++{ strcpy_Pbuffer,
charpgm_read_wordpenyusn_tabel[0]; client.printbuffer;
buffer[0] = pgm_read_byte_nearidrelay + 1 + i; client.printbuffer[0];
strcpy_Pbuffer, charpgm_read_wordpenyusn_tabel[1];
client.printbuffer; buffer[0] = pgm_read_byte_nearidrelay + i;
client.printbuffer[0]; strcpy_Pbuffer,
charpgm_read_wordpenyusn_tabel[2]; client.printbuffer;
strcpy_Pbuffer, charpgm_read_wordpenyusn_tabel[3];
client.printbuffer; buffer[0] = pgm_read_byte_nearidrelay + i;
client.printbuffer[0];
strcpy_Pbuffer, charpgm_read_wordpenyusn_tabel[4];
client.printbuffer; strcpy_Pbuffer,
charpgm_read_wordstRelay[statusRelay[i]]; client.printbuffer;
strcpy_Pbuffer, charpgm_read_wordpenyusn_tabel[5];
client.printbuffer; }
kirim penutup tabel strcpy_Pbuffer,
charpgm_read_wordawalakhir_html[6]; client.printbuffer;
strcpy_Pbuffer, charpgm_read_wordsemua[0]; client.printbuffer;
strcpy_Pbuffer, charpgm_read_wordsemua[1]; client.printbuffer;
strcpy_Pbuffer, charpgm_read_wordawalakhir_html[7];
client.printbuffer; break;
} if c == \n {
memulai baris baru currentLineIsBlank = true;
} else if c = \r {
terdapat karakter pada baris yang sekarang currentLineIsBlank = false;
} }
} beri waktu web browser untuk menerima data
delay1; tutup koneksi:
client.stop; readString=;
} }
3.3.5 Fungsi Kerjakan