LAMPIRAN A SCRIPT SERVER #include <ESP8266WiFi.h> #include <DNSServer.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> #include <ArduinoJson.h> #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7); // 0x27 = alamat I2C modul DynamicJsonBuffer jsonBuffer;
//=====================inisialisai sensor
tegangan============================================ float sensitivitas = 0.00164; //diatur sendiri untuk kalibrasi
float banyakdata = 0.00; float nilaiadc = 0.00; float zero = 0.00; //======================================================= ================================= String data1 = "0.00"; String data2 = "0.00"; String data3 = "0.00"; String data4 = "0.00";
const char* sensor1 = "ON"; const char* sensor2 = "ON"; const char* sensor3 = "ON"; const char* sensor4 = "ON"; String r1;
String r2; String r3; String r4;
unsigned long waktu0 = 0; unsigned long waktu1 = 0; unsigned long waktu2 = 0; unsigned long waktu3 = 0; unsigned long waktu4 = 0; float daya1 = 0.00;
float daya2 = 0.00; float daya3 = 0.00;
float daya4 = 0.00; String line;
String id_alat ="pemos01";
const char* APssid = "amirshodiq"; const char* APpassword = "amirshodiq"; const char* ssid = "amirshodiq1"; const char* password = "amirshodiq1";
const char* host = "pemos013.000webhostapp.com"; WiFiClient client;
const int httpPort = 80; String url;
unsigned long timeout;
ESP8266WebServer server(80); void setup() {
Serial.begin(9600); delay(10);
pinMode(D0, OUTPUT); //LED 1 pinMode(D5, OUTPUT);//LED 2 lcd.begin (20, 4); // LCD 16x2 lcd.setBacklightPin(3, POSITIVE); lcd.setBacklight(HIGH); // Mengatur WiFi --- Serial.println(); Serial.println("Mencari WiFi...."); lcd.setCursor (0,0); lcd.print("Menyiapkan Server"); lcd.setCursor (0,1);
lcd.print("Mencoba Koneksi Wifi"); delay(100);
WiFi.begin(ssid, password);
timeout = millis();
while (WiFi.status() != WL_CONNECTED) { if (millis() - timeout > 30000) {
lcd.setCursor (0,0);
lcd.print("Wifi Manager Hidup");
digitalWrite(D0,HIGH); //maka lampu D3 akan hidup
WiFiManager wifiManager; //dan mengakses library wifimanager
wifiManager.resetSettings(); //serta mereset pengaturan wifi, disini nodeMCU berlaku sebagai access point
wifiManager.autoConnect("pemos013", "123456789"); //nodeMCU berlaku sebagai access point dengan SSID 'WiFi Manager Testing' dan password '12345678'
Serial.println("connected :)");
}
digitalWrite(D0, HIGH);//LED Merah Indikasi tidak connect delay(500); digitalWrite(D0, LOW); delay(200); Serial.print("."); } Serial.println("Menyiapkan Server..."); WiFi.mode(WIFI_AP_STA); WiFi.softAP(APssid, APpassword); Serial.println(""); lcd.clear(); Serial.println("WiFi Terkoneksi"); lcd.setCursor (0,1); lcd.print("WiFi connected"); delay(100); digitalWrite(D0, LOW);
digitalWrite(D5, HIGH);//LED Hijau menyala Indikasi connect wifi // Start the server --- server.begin(); Serial.println("Server dijalankan"); lcd.setCursor (0,2); lcd.print("Server dijalankan"); lcd.clear();
// Print the IP address --- Serial.println(WiFi.localIP());
Serial.println(WiFi.softAPIP());
server.on("/", handleroot);//Perintah Menjalankan server server.on("/feed", HTTP_GET, feed);
server.begin(); //kalibrasi
for (int i = 0; i < 1000; i++) { nilaiadc = analogRead(A0);
banyakdata = banyakdata + nilaiadc; delay(10);
}
zero = banyakdata; }
//=====================================handle root
page================================================ void handleroot() {
server.send(200, "text/plain", "Hallo"); }
//===================================handle door sensor
page=========================================== void feed() {
// server.send(200, "text/plain", line); Serial.print("Received from: "); for (int i = 0; i <= server.args(); i++) { if (server.argName(i) == "arus1") { Serial.print("arus1 = ");
waktu0 = millis();
float waktu = waktu0-waktu1; data1 = server.arg(i);
Serial.println(data1);
Serial.println(waktu/1000, 2); waktu1 = millis();
url = "/arduino/simpan/input1?id_alat="+id_alat+"&arus=" + data1 + "&tegangan=" + String(tegangan())+"&waktu=" + String(waktu)+"&dayasebelum="+String(daya1);
daya1 = data1.toFloat()*tegangan(); kirim();
server.send(200, "text/plain", sensor1);
}
if (server.argName(i) == "arus2") { Serial.print("arus2 = ");
waktu0 = millis();
float waktu = waktu0-waktu2; data2 = server.arg(i);
Serial.println(data2);
Serial.println(waktu/1000, 2); waktu2 = millis();
url = "/arduino/simpan/input2?id_alat="+id_alat+"&arus=" + data2 + "&tegangan=" + String(tegangan())+"&waktu=" + String(waktu)+"&dayasebelum="+String(daya2);
daya2 = data2.toFloat()*tegangan(); kirim();
server.send(200, "text/plain", sensor2);
}
if (server.argName(i) == "arus3") { Serial.print("arus3 = ");
waktu0 = millis();
float waktu = waktu0-waktu3; data3 = server.arg(i);
Serial.println(data3);
Serial.println(waktu/1000, 2); waktu3 = millis();
url = "/arduino/simpan/input3?id_alat="+id_alat+"&arus=" + data3 + "&tegangan=" + String(tegangan())+"&waktu=" + String(waktu)+"&dayasebelum="+String(daya3);
daya3 = data3.toFloat()*tegangan(); kirim();
server.send(200, "text/plain", sensor3);
}
if (server.argName(i) == "arus4") { Serial.print("arus4 = ");
waktu0 = millis();
float waktu = waktu0-waktu4; data4 = server.arg(i);
Serial.println(data4);
Serial.println(waktu/1000, 2); waktu4 = millis();
url = "/arduino/simpan/input4?id_alat="+id_alat+"&arus=" + data4 + "&tegangan=" + String(tegangan())+"&waktu=" + String(waktu)+"&dayasebelum="+String(daya4);
daya4 = data4.toFloat()*tegangan(); kirim();
server.send(200, "text/plain", sensor4); } } } void loop(){ cek(); server.handleClient(); lcd.clear(); tampilan(); delay(500); }
void tampilan(){
float V = tegangan();
if(String (sensor1) == "ON"){ r1 = "I";
}
if(String (sensor1) == "OFF"){ r1 = "O";
}
if(String (sensor2) == "ON"){ r2 = "I";
}
if(String (sensor2) == "OFF"){ r2 = "O";
}
if(String (sensor3) == "ON"){ r3 = "I";
}
if(String (sensor3) == "OFF"){ r3 = "O";
}
if(String (sensor4) == "ON"){ r4 = "I";
}
if(String (sensor4) == "OFF"){ r4 = "O"; } Serial.println("Kontrol Client :"); Serial.print("Client 1 :"); Serial.println(r1); Serial.print("Client 2 :"); Serial.println(r2); Serial.print("Client 3 :"); Serial.println(r3); Serial.print("Client 4 :"); Serial.println(r4); //tampilan pada lcd lcd.setCursor (0,0); lcd.print("I1="); lcd.print(data1); lcd.setCursor (8,0); lcd.print("V1="); lcd.print(V); lcd.setCursor (19,0); lcd.print(r1); lcd.setCursor (0,1); lcd.print("I2="); lcd.print(data2);
lcd.setCursor (8,1); lcd.print("V2="); lcd.print(V); lcd.setCursor (19,1); lcd.print(r2); lcd.setCursor (0,2); lcd.print("I3="); lcd.print(data3); lcd.setCursor (8,2); lcd.print("V3="); lcd.print(V); lcd.setCursor (19,2); lcd.print(r3); lcd.setCursor (0,3); lcd.print("I4="); lcd.print(data4); lcd.setCursor (8,3); lcd.print("V4="); lcd.print(V); lcd.setCursor (19,3); lcd.print(r4); Serial.println(); } void cek(){ Serial.print("connecting to "); Serial.println(host); if (!client.connect(host, httpPort)) { Serial.println("connection failed"); digitalWrite(D0, HIGH); delay(100); digitalWrite(D0, LOW); digitalWrite(D5, LOW); return; } } void control(){ Serial.print("connecting to "); Serial.println(host); if (!client.connect(host, httpPort)) { Serial.println("connection failed"); digitalWrite(D0, HIGH); delay(100); digitalWrite(D0, LOW); digitalWrite(D5, LOW);
return; }
// We now create a URI for the request url = "/arduino/simpan/control"; Serial.print("Requesting URL: "); Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !"); digitalWrite(D0, LOW); delay(100); digitalWrite(D0, HIGH); digitalWrite(D5, LOW); client.stop(); return; } }
// Read all the lines of the reply from server and print them to Serial for (int i = 0; i <= client.available(); i++) {
line = client.readStringUntil('\r'); }
digitalWrite(D5, LOW); delay(100);
digitalWrite(D5, HIGH);
JsonObject& root = jsonBuffer.parseObject(line); sensor1 = root["sensor1"]; sensor2 = root["sensor2"]; sensor3 = root["sensor3"]; sensor4 = root["sensor4"]; Serial.println(sensor1); Serial.println(sensor2); Serial.println(sensor3); Serial.println(sensor4);
client.stop(); } void kirim(){ Serial.println("connecting to "); Serial.println(host); if (!client.connect(host, httpPort)) { Serial.println("connection failed"); sensor1 = "ON"; sensor2 = "ON"; sensor3 = "ON"; sensor4 = "ON"; digitalWrite(D0, HIGH); delay(100); digitalWrite(D0, LOW); digitalWrite(D5, LOW); return; }
// We now create a URI for the request
// url = "/arduino/simpan/input?arus="+arus()+"&tegangan="+tegangan(); Serial.print("Requesting URL: ");
Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !"); digitalWrite(D0, LOW); delay(100); digitalWrite(D0, HIGH); digitalWrite(D5, LOW); client.stop(); return; } }
for (int i = 0; i <= client.available(); i++) { line = client.readStringUntil('\r');
digitalWrite(D5, LOW); delay(100);
digitalWrite(D5, HIGH);
JsonObject& root = jsonBuffer.parseObject(line); sensor1 = root["sensor1"]; sensor2 = root["sensor2"]; sensor3 = root["sensor3"]; sensor4 = root["sensor4"]; Serial.println(sensor1); Serial.println(sensor2); Serial.println(sensor3); Serial.println(sensor4); client.stop(); Serial.println(); } float tegangan() { uint32_t period = 1000000 / 50; uint32_t t_start = micros();
uint32_t Vsum = 0, measurements_count = 0; int32_t Vnow;
while (micros() - t_start < period) { Vnow = zero - analogRead(A0); Vsum += Vnow*Vnow;
measurements_count++; }
float Vrms = sqrt(Vsum / measurements_count) / 1023.0 * 3.229 / sensitivitas; if (Vrms < 20){ Vrms = 0.00; } Serial.print("Tegangan : "); Serial.println(Vrms,2); return (Vrms); }
LAMPIRAN B SCRIPT CLIENT #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <ArduinoJson.h> #define ON HIGH #define OFF LOW
const char *ssid = "pemos013"; const char *password = "123456789";
DynamicJsonBuffer jsonBuffer;
//=====================inisialisai sensor
arus============================================
float sensitivitas = 0.106; //tegantung sensor arus yang digunakan, yang ini 5A float banyakdata = 0.00; float nilaiadc = 0.00; float zero = 0.00; //======================================================= ================================= int sensor1 = 1; int sensor2 = 1; int sensor3 = 1; int sensor4 = 1; String line;
int RELAY1 = 5; //D1 on ESP Board /LED 1 void setup() { Serial.begin(9600); delay(10); pinMode(D2, OUTPUT);//LED 2 pinMode(D3, OUTPUT);//LED 3 //set relay pinMode(RELAY1, OUTPUT); digitalWrite(RELAY1, LOW); // set the ESP8266 to be a WiFi-client WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500);
digitalWrite(D2, HIGH);//LED Merah Indikasi tidak connect wifi }
Serial.println("");
Serial.println("WiFi connected"); digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);//LED Hijau menyala Indikasi connect wifi Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //kalibrasi
for (int i = 0; i < 1000; i++) { nilaiadc = analogRead(A0);
banyakdata = banyakdata + nilaiadc; delay(10); } banyakdata /= 1000; zero = banyakdata; digitalWrite(RELAY1, HIGH); } void loop() {
// Use WiFiClient class to create TCP connections WiFiClient client;
const char * host = "192.168.4.1"; //default IP address const int httpPort = 80;
if (!client.connect(host, httpPort)) { Serial.println("connection failed"); digitalWrite(D2, HIGH); delay(100); digitalWrite(D2, LOW); digitalWrite(D3, LOW); return; }
// We now create a URI for the request. Something like /data/?sensor_reading=123
String url = "/feed?arus4="+arus();
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" +
"Connection: close\r\n\r\n"); unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 30000) {
Serial.println(">>> Client Timeout !"); digitalWrite(D2, HIGH); delay(100); digitalWrite(D2, LOW); digitalWrite(D3, LOW); client.stop(); return; } } while(client.available()){
// String line = client.readStringUntil('\r'); // Serial.print(line);
if(client.find("ON")){
digitalWrite(RELAY1, ON); //lampu on Serial.println("ON");
}else{
digitalWrite(RELAY1, OFF); //lampu off Serial.println("OFF"); } } digitalWrite(D3, LOW); delay(100); digitalWrite(D3, HIGH); Serial.println(); //kontrol(); } String arus() { uint32_t period = 1000000 / 50; uint32_t t_start = micros();
uint32_t Isum = 0, measurements_count = 0; int32_t Inow;
while (micros() - t_start < period) { Inow = zero - analogRead(A0); Isum += Inow*Inow;
measurements_count++; }
float Irms = sqrt(Isum / measurements_count) / 1023.0 * 3.229 / sensitivitas;
Serial.println(Irms); delay(50);
return String(Irms); }
LAMPIRAN C
SCRIPT PENGIRIMAN DATA <?php
defined('BASEPATH') OR exit('No direct script access allowed'); class Simpan extends CI_Controller {
public function index(){
date_default_timezone_set("Asia/Jakarta"); $this->load->model('m_belajar');
$data['sensor'] = $this->m_belajar->ambildata(); $this->load->view('view_belajar', $data);
}
public function grafik() { date_default_timezone_set("Asia/Jakarta"); $this->load->model('m_belajar'); $dataa['sensor'] = $this->m_belajar->ambildata(); $this->load->view('chart', $dataa); }
public function harian() { date_default_timezone_set("Asia/Jakarta"); $this->load->model('m_belajar'); $dataa['sensor'] = $this->m_belajar->ambildata(); $this->load->view('harian', $dataa); }
public function control() {
$this->load->model('m_belajar');
$dataa['kontrol'] = $this->m_belajar->code(); $this->load->view('control', $dataa);
}
public function coba() {
$this->load->model('m_belajar');
$this->load->view('coba', $dataa); }
public function input(){
$this->load->model('m_belajar'); if (isset($_GET['arus'])){ $id_alat = $this->input->get('id_alat'); $arus = $this->input->get('arus'); $tegangan = $this->input->get('tegangan'); $waktu = $this->input->get('waktu'); $dayasebelum = $this->input->get('dayasebelum'); $daya = $arus*$tegangan; $dayasebelum_kw=$dayasebelum/1000; $daya_kw=$daya/1000; $daya_kwh= (($daya_kw+$dayasebelum_kw)*($waktu/3600))/2;
$datasensor = array('id_alat' => $id_alat, 'arus' => $arus, 'tegangan' => $tegangan, 'daya' => $daya, 'daya_kw' => $daya_kw, 'daya_kwh' => $daya_kwh, 'waktu' => time());
if($this->m_belajar->save($datasensor)){ $this->load->model('m_belajar'); $dataa['kontrol'] = $this->m_belajar->code(); $this->load->view('control', $dataa); } else{ echo "ERROR"; } } else{
echo "variabel data tidak terdefinisi"; }
}
public function input1(){
$this->load->model('m_belajar'); if (isset($_GET['arus'])){ $id_alat = $this->input->get('id_alat'); $arus = $this->input->get('arus'); $tegangan = $this->input->get('tegangan'); $waktu = $this->input->get('waktu'); $dayasebelum = $this->input->get('dayasebelum'); $daya = $arus*$tegangan;
$dayasebelum_kw=$dayasebelum/1000; $daya_kw=$daya/1000;
$daya_kwh=
(($daya_kw+$dayasebelum_kw)*($waktu/3600))/2;
$datasensor = array('id_alat' => $id_alat, 'arus' => $arus, 'tegangan' => $tegangan, 'daya' => $daya, 'daya_kw' => $daya_kw, 'daya_kwh' => $daya_kwh, 'waktu' => time());
if($this->m_belajar->save1($datasensor)&&$this->m_belajar->save($datasensor)){ $this->load->model('m_belajar'); $dataa['kontrol'] = $this->m_belajar->code(); $this->load->view('control', $dataa); } else{ echo "ERROR"; } } else{
echo "variabel data tidak terdefinisi"; }
}
public function input2(){
$this->load->model('m_belajar'); if (isset($_GET['arus'])){ $id_alat = $this->input->get('id_alat'); $arus = $this->input->get('arus'); $tegangan = $this->input->get('tegangan'); $waktu = $this->input->get('waktu'); $dayasebelum = $this->input->get('dayasebelum'); $daya = $arus*$tegangan; $dayasebelum_kw=$dayasebelum/1000; $daya_kw=$daya/1000; $daya_kwh= (($daya_kw+$dayasebelum_kw)*($waktu/3600))/2;
$datasensor = array('id_alat' => $id_alat, 'arus' => $arus, 'tegangan' => $tegangan, 'daya' => $daya, 'daya_kw' => $daya_kw, 'daya_kwh' => $daya_kwh, 'waktu' => time());
if($this->m_belajar->save2($datasensor)&&$this->m_belajar->save($datasensor)){
$dataa['kontrol'] = $this->m_belajar->code(); $this->load->view('control', $dataa); } else{ echo "ERROR"; } } else{
echo "variabel data tidak terdefinisi"; }
}
public function input3(){
$this->load->model('m_belajar'); if (isset($_GET['arus'])){ $id_alat = $this->input->get('id_alat'); $arus = $this->input->get('arus'); $tegangan = $this->input->get('tegangan'); $waktu = $this->input->get('waktu'); $dayasebelum = $this->input->get('dayasebelum'); $daya = $arus*$tegangan; $dayasebelum_kw=$dayasebelum/1000; $daya_kw=$daya/1000; $daya_kwh= (($daya_kw+$dayasebelum_kw)*($waktu/3600))/2;
$datasensor = array('id_alat' => $id_alat, 'arus' => $arus, 'tegangan' => $tegangan, 'daya' => $daya, 'daya_kw' => $daya_kw, 'daya_kwh' => $daya_kwh, 'waktu' => time());
if($this->m_belajar->save3($datasensor)&&$this->m_belajar->save($datasensor)){ $this->load->model('m_belajar'); $dataa['kontrol'] = $this->m_belajar->code(); $this->load->view('control', $dataa); } else{ echo "ERROR"; } } else{
echo "variabel data tidak terdefinisi"; }
public function input4(){ $this->load->model('m_belajar'); if (isset($_GET['arus'])){ $id_alat = $this->input->get('id_alat'); $arus = $this->input->get('arus'); $tegangan = $this->input->get('tegangan'); $waktu = $this->input->get('waktu'); $dayasebelum = $this->input->get('dayasebelum'); $daya = $arus*$tegangan; $dayasebelum_kw=$dayasebelum/1000; $daya_kw=$daya/1000; $daya_kwh= (($daya_kw+$dayasebelum_kw)*($waktu/3600))/2;
$datasensor = array('id_alat' => $id_alat, 'arus' => $arus, 'tegangan' => $tegangan, 'daya' => $daya, 'daya_kw' => $daya_kw, 'daya_kwh' => $daya_kwh, 'waktu' => time());
if($this->m_belajar->save4($datasensor)&&$this->m_belajar->save($datasensor)){ $this->load->model('m_belajar'); $dataa['kontrol'] = $this->m_belajar->code(); $this->load->view('control', $dataa); } else{ echo "ERROR"; } } else{
echo "variabel data tidak terdefinisi"; }
} }