Fungsi Setup Fungsi Loop

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