You are on page 1of 11

#include "lampu.

h"

#include "sensor.h"

#include "alarm.h"

#include <SPI.h>

#include <Ethernet.h>

#include <Wire.h>

#include <Digital_Light_TSL2561.h>

#include "DHT.h"

#include <LinkedList.h>

LinkedList<int> list;

//Deklarasi list untuk menyimpan hasil pengambilan sensor

bool in_process = false;

String table_generator;

int cahaya_min, cahaya_max;

//Deklarasi alamat IP, Gateway, dan Subnet

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // alamat MAC Arduino

byte ip[] = { 192, 168, 169, 13 }; // alamat IP

byte gateway[] = { 192, 168, 169, 1 }; // gateway

byte subnet[] = { 255, 255, 255, 0 }; // subnet mask

EthernetServer server(80); // server port

//Deklarasi tipe data dan variabel

String readString;

String statGerak;

String statAman;

float statSuhu;

int statCahaya;

int modeKeamanan = 0;

//Deklarasi objek

lampu Lampu(11);
CsensorGerakan gerak(9);

CsensorCahaya cahaya(0);

CsensorSuhu suhu(2);

alarm Buzzer(3);

void setup() {

Wire.begin();

Serial.begin(9600);

TSL2561.init();

Ethernet.begin(mac, ip, gateway, subnet);

server.begin();

Serial.print("alamat server : ");

Serial.println(Ethernet.localIP());

void loop(){

//Memanggil user interface dan kontrol masukan (Soal 1)

userInterface();

kontrolMasukan();

void userInterface()

EthernetClient client = server.available();

if (client) {

while (client.connected()) {

if (client.available()) {

char c = client.read();

if (readString.length() < 100) {

readString += c; //Serial.print(c);

}
if (c == '\n') {

Serial.println(readString);//mencetak ke serialmonitor

client.println("HTTP/1.1 200 OK"); //send new page

client.println("Content-Type: text/html");

client.println();

client.println("<!DOCTYPE html>");

client.println("<html>");

client.println("<head>");

client.println("<meta content=\"text/html; charset=UTF-8\" http-equiv=\"content-type\">");

client.println("<title>Smart Home - Average Cahaya</title>");

client.println("</head>");

client.println("<body> <a font=\"16\">Average Cahaya (Rata-rata Suhu dalam 1 Detik)</a><br>");

client.print("<br><br>");

client.println("<button onclick=\"window.location.href='/?ambil_data\'\">Ambil Data


Cahaya</button>");

client.println("<button onclick=\"window.location.href='/?sortir\'\">Sortir Data</button>");

client.println("<br>");

client.println("<br>");

client.println("<a font=\"16\">Nilai Cahaya Minimal : ");

//Mencetak Nilai Cahaya Minimal Ke Web (Soal 2)

client.print(cahaya_min);

client.print("</a>");

client.print("<br><br>");

client.println("<a font=\"16\">Nilai Cahaya Maksimal : ");

//Mencetak Nilai Cahaya Maksimal Ke Web (Soal 3)

client.print(cahaya_max);

client.print("</a>");
client.print("<br><br>");

client.print("<form action=\"/\" method=\"get\">");

client.print("Pencarian: <input type=\"text\" name=\"pencarian\">");

client.print("<button type=\"submit\">Cari</button>");

client.print("</form>");

//Menampilkan Nilai variabel table_generator (Soal 4)

client.print(table_generator);

client.println("</body>");

delay(1);

client.stop();

}}}}}

void SortInsertion(LinkedList<int> &array_list) {

//Algoritma untuk penyortiran (soal 5)

int terbesar;

int a, b, d;

list<int>l;

list<int>::iterator pos;

int data[10];

for(d=0; d<10; d++){

statCahaya = cahaya.getStatusSensor();

data[d]=statCahaya;

for(a=1; a<10; a++)

for(b=0; b<10-a; b++)

if(data[b]<data[b+1])

{
terbesar=data[b];

data[b]=data[b+1];

data[b+1]=terbesar;

for(d=0; d<10; ++d)

l.push_front(data[d]);

void kontrolMasukan()

if(in_process == false){

if (readString.indexOf("?pencarian") > 0){

String cari;

cari += readString.substring(16, readString.length() - 11);

if(cari == ""){

int i;

table_generator = "<table style=\"width: 309px; height: 56px;\" border=\"1\">";

table_generator += "<tbody>";

table_generator += "<tr>";

table_generator += "<td style=\"width: 186.5px;\">Indeks Ke</td>";

table_generator += "<td style=\"width: 988.5px;\">Cahaya</td>";

table_generator += "</tr>";

cahaya_min = 9999;

cahaya_max = -9999;

for(i = 0; i < 10; i++)


{

//Mencari nilai cahaya minimal dan maksimal (soal 6)

if ( i == 1 ) {

min = statCahaya;

max = statCahaya;

else if ( min > statCahaya ) {

min = statCahaya;

else if ( max < statCahaya) {

max = statCahaya;

table_generator += "<tr>";

table_generator += "<td>";

table_generator += i + 1;

table_generator += "</td>";

table_generator += "<td>";

//menambahkan nilai list i ke table generator (soal 7)

table_generator += statCahaya;

table_generator += "</td>";

table_generator += "</tr>";

table_generator += "</tbody>";

table_generator += "</table>";

}else{

table_generator = "<table style=\"width: 309px; height: 56px;\" border=\"1\">";

table_generator += "<tbody>";
table_generator += "<tr>";

table_generator += "<td style=\"width: 186.5px;\">Indeks Ke</td>";

table_generator += "<td style=\"width: 988.5px;\">Cahaya</td>";

table_generator += "</tr>";

int i, j_ditemukan;

j_ditemukan = 0;

for(i = 0; i < 10; i++)

//Jika list ke i sama dengan nilai yang dicari (soal 8)

if (i == j_ditemukan)

table_generator += "<tr>";

table_generator += "<td>";

table_generator += i + 1;

table_generator += "</td>";

table_generator += "<td>";

//Menambahkan nilai list ke i ke table generator (soal 9)

table_generator += statCahaya;

table_generator += "</td>";

table_generator += "</tr>";

j_ditemukan++;

}}

table_generator += "</tbody>";

table_generator += "</table>";

//Jika j_dtemukan samadenan nol (soal 10)

if (j_ditemukan == 0){
table_generator = "<a font=\"16\">Data Tidak Ditemukan</a>";

if(readString.indexOf("?sortir") > 0)

int i;

SortInsertion(list); //Menyortir data dalam list

table_generator = "<table style=\"width: 309px; height: 56px;\" border=\"1\">";

table_generator += "<tbody>";

table_generator += "<tr>";

table_generator += "<td style=\"width: 186.5px;\">Indeks Ke</td>";

table_generator += "<td style=\"width: 988.5px;\">Cahaya</td>";

table_generator += "</tr>";

cahaya_min = 9999;

cahaya_max = -9999;

for(i = 0; i < 10; i++)

//Mencari nilai cahaya minimal dan maksimal (soal 11)

if ( i == 1 ) {

min = statCahaya;

max = statCahaya;

else if ( min > statCahaya ) {

min = statCahaya;

else if ( max < statCahaya) {

max = statCahaya;

}
table_generator += "<tr>";

table_generator += "<td>";

table_generator += i + 1;

table_generator += "</td>";

table_generator += "<td>";

//menambahkan nilai list i ke table generator (soal 12)

table_generator += statCahaya;

table_generator += "</td>";

table_generator += "</tr>";

table_generator += "</tbody>";

table_generator += "</table>";

if (readString.indexOf("?ambil_data") > 0){

int i;

in_process = true;

list.clear();

for(i = 0; i < 10; i++)

//menambahkan nilai cahaya ke dalam list (soal 13)

serial.print(statCahaya);

delay(100);

table_generator = "<table style=\"width: 309px; height: 56px;\" border=\"1\">";

table_generator += "<tbody>";

table_generator += "<tr>";

table_generator += "<td style=\"width: 186.5px;\">Indeks Ke</td>";


table_generator += "<td style=\"width: 988.5px;\">Cahaya</td>";

table_generator += "</tr>";

cahaya_min = 9999;

cahaya_max = -9999;

for(i = 0; i < 10; i++)

//Mencari Nilai cahaya minimal dan maksimal (soal 14)

if ( i == 1 ) {

min = statCahaya;

max = statCahaya;

else if ( min > statCahaya ) {

min = statCahaya;

else if ( max < statCahaya) {

max = statCahaya;

table_generator += "<tr>";

table_generator += "<td>";

table_generator += i + 1;

table_generator += "</td>";

table_generator += "<td>";

//Menambahkan nilai list i ke table generator (soal 15)

table_generator += statCahaya;

table_generator += "</td>";

table_generator += "</tr>";

}
table_generator += "</tbody>";

table_generator += "</table>";

in_process = false;

readString="";

You might also like