ϱϱ
LAMPIRAN
Lampiran 1 : Tabel data hasil pembacaan
No Tanggal Jam Daya
(Watt)
Tegangan (Volt)
Arus (Ampere)
Faktor Daya
ϱϲ
40 11/03/2017 06:30:00 29.32 199.63 0.75 0.8 41 11/03/2017 06:40:00 22.27 200.58 0.7 0.78 42 11/03/2017 06:50:00 17.61 200.86 0.57 0.8 43 11/03/2017 07:00:00 20.94 201.19 0.69 0.77 44 11/03/2017 07:10:00 21.13 201.77 0.7 0.78 45 11/03/2017 07:20:00 21.49 201.86 0.68 0.78 46 11/03/2017 07:30:00 21.08 201.42 0.67 0.82 47 11/03/2017 07:40:00 19.42 201.69 0.62 0.81 48 11/03/2017 07:50:00 9.7 202.06 0.14 0.74 49 11/03/2017 08:00:00 0.94 202.4 0 0.32 50 11/03/2017 08:10:00 9.33 200.26 0.38 0.57 51 11/03/2017 08:20:00 11.57 200.16 0.38 0.56 52 11/03/2017 08:30:00 11.58 199.4 0.38 0.56 53 11/03/2017 08:40:00 6.55 201.43 0 0.35 54 11/03/2017 08:50:00 0.03 201.02 0 0.38 55 11/03/2017 09:00:00 6.41 199.72 0.38 0.57 56 11/03/2017 09:10:00 11.47 199.26 0.38 0.56 57 11/03/2017 09:20:00 11.53 199.23 0.38 0.56 58 11/03/2017 09:30:00 6.03 199.18 0 0.38
59 11/03/2017 09:40:00 0 199.68 0 0.35
ϱϳ
ϱϴ
ϱϵ
ϲϬ
ϲϭ
ϲϮ
ϲϯ
ϲϰ
ϲϱ
ϲϲ
ϲϳ
ϲϴ
ϲϵ
ϳϬ
ϳϭ
ϳϮ
ϳϯ
ϳϰ
ϳϱ
ϳϲ
ϳϳ
ϳϴ
ϳϵ
ϴϬ
ϴϭ
ϴϮ
ϴϯ
ϴϰ
Lampiran 2 : Kode Program Arduino
#include "SoftwareSerial.h"
#include "EmonLib.h" // Include Emon Library
#include "EEPROM.h"
#include "DS3231.h"
EnergyMonitor emon1; // Create an instance
SoftwareSerial mySerial(7, 6);
DS3231 rtc(SDA, SCL);
double amp=0;
double volt=0;
double daya = 0,energy = 0,energy_old = 0;
double pf = 0;
int Times = 0, LastTime = 0;
double kwh=0;
double kwhtot = 0;
String stringLINK,
stringDATA,stringEND,stringARUS,stringTEGANGAN,stringPF,stringDATA2,stringLINK2,
stringDATE,stringHOUR;
char buff[200];
int menit=0,hari=0;
String tanggal,jam;
float f = 0.00f;
int dLine2[50];
int tanggall,bulann,tahunn;
int jamm,menitt,detikk;
int tsec;
int counttry;
Time t;
void setup()
{
mySerial.begin(9600);
Serial.begin(9600);
emon1.current(1, 60);
emon1.voltage(2, 235, 1.7);
stringLINK = String("AT+HTTPPARA=\"URL\",\"202.0.107.165:16180/g.php?d=");
stringLINK2=
String("AT+HTTPPARA=\"URL\",\"202.0.107.165:16180/getdata2.php?whtot=");
stringARUS = String("&a=");
stringTEGANGAN = String("&v=");
stringPF = String("&p=");
ϴϱ
rtc.begin();
getrtctime();
setdatertc();
t = rtc.getTime();
menit = t.min;
hari = t.date;
}
void loop()
{
emon1.calcVI(20,2000);
amp = emon1.calcIrms(1185);
volt = emon1.Vrms;
pf = emon1.powerFactor;
hitungenergy();
kwh = (energy/1000);
t = rtc.getTime();
int datax = t.min - menit;
if (datax == 10 && tsec == 0 || datax < 0&& tsec == 0)
{
EEPROM.get( 0, f );
kwhtot = f;
kwhtot = kwhtot + kwh;
EEPROM.put(0, kwhtot);
tanggal = rtc.getDateStr();
jam = rtc.getTimeStr();
Serial.println(tanggal);
Serial.println(jam);
SubmitHttpRequest();
delay(100000);
int dataxx = t.date - hari;
if(dataxx == 1&& tsec == 0 || dataxx < 0&& tsec == 0)
{
SubmitHttpRequest2();
hari = t.date;
getrtctime();
setdatertc();
}
energy = 0;
energy_old = 0;
LastTime = millis()/1000;
menit = t.min;
ϴϲ
}
void hitungenergy()
{
daya = volt*amp;
Times = (millis()/1000) - LastTime;
energy=(daya*Times)/(3600);
if (energy < 0){
energy = energy*(-1) + energy_old;
}
else {
energy = energy + energy_old;
}
energy_old=energy;
//Serial.println(energy);
}
void SubmitHttpRequest()
{
Serial.println("Pengiriman Data");
stringDATA = stringLINK + kwh + stringARUS + amp + stringTEGANGAN + volt +
stringPF + pf + stringDATE + tanggal + stringHOUR + jam + stringEND;
stringDATA.toCharArray(buff,200);
Serial.println(buff);
mySerial.println("AT+CSQ");
delay(1000);
ShowSerialData();
mySerial.println("AT+CGATT?");
delay(1000);
ShowSerialData();
mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
delay(2000);
ShowSerialData();
mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
delay(5000);
ShowSerialData();
mySerial.println("AT+SAPBR=1,1");
delay(2000);
ShowSerialData();
mySerial.println("AT+HTTPINIT");
delay(2000);
ShowSerialData();
mySerial.println(buff);
delay(5000);
ShowSerialData();
ϴϳ
delay(5000);
ShowSerialData();
mySerial.println("AT+HTTPREAD");
delay(1000);
//ShowSerialData();
checkForResponse();
if ( dLine2[29] != 68 && dLine2[30] != 97 && dLine2[34] != 83 && dLine2[35] != 117 )
{
Serial.println("Pengiriman Gagal");
counttry = counttry + 1;
if (counttry <= 3){
SubmitHttpRequest();}
}
counttry = 0;
Serial.println("Pengiriman Berhasil");
mySerial.println("");
delay(300);
}
void SubmitHttpRequest2()
{
stringDATA2 = stringLINK2 + kwhtot + stringDATE + tanggal + stringEND;
stringDATA2.toCharArray(buff,200);
mySerial.println("AT+CSQ");
delay(100);
mySerial.println("AT+CGATT?");
delay(100);
mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
delay(1000);
mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
delay(4000);
mySerial.println("AT+SAPBR=1,1");
delay(2000);
mySerial.println("AT+HTTPINIT");
delay(2000);
mySerial.println(buff);
delay(2000);
ShowSerialData();
mySerial.println("AT+HTTPACTION=0");
delay(5000);
ShowSerialData();
ϴϴ
delay(1000);
//ShowSerialData();
checkForResponse();
if ( dLine2[29] != 68 && dLine2[30] != 97 && dLine2[34] != 83 && dLine2[35] != 117)
{
Serial.println("Pengiriman Gagal");
counttry = counttry + 1;
if (counttry <= 3){
SubmitHttpRequest();}
}
counttry = 0;
Serial.println("Pengiriman Berhasil");
mySerial.println("");
delay(300);
}
void getrtctime()
{
mySerial.println("AT+CSQ");
delay(100);
ShowSerialData();
mySerial.println("AT+CGATT?");
delay(100);
ShowSerialData();
mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
delay(1000);
ShowSerialData();
mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
delay(4000);
ShowSerialData();
mySerial.println("AT+SAPBR=1,1");
delay(2000);
ShowSerialData();
mySerial.println("AT+SAPBR=2,1");
ϴϵ
mySerial.println("AT+CNTP= \"pool.ntp.org\",7,1,2");
delay(1000);
ShowSerialData();
mySerial.println("AT+CNTP");
delay(10000);
//ShowSerialData();
checkForResponse();
mySerial.println("");
delay(100);
}
void setdatertc()
{
tanggall = (dLine2[33]-48)*10 + (dLine2[34]-48);
bulann = (dLine2[30]-48)*10 + (dLine2[31]-48);
tahunn = (dLine2[27]-48)*10 + (dLine2[28]-48) + 2000;
jamm = (dLine2[36]-48)*10 + (dLine2[37]-48);
menitt = (dLine2[39]-48)*10 + (dLine2[40]-48);
detikk = (dLine2[42]-48)*10 + (dLine2[43]-48);
rtc.setDate(tanggall, bulann, tahunn);
rtc.setTime(jamm, menitt, detikk);
Serial.println(tanggall);
Serial.println(bulann);
Serial.println(tahunn);
Serial.println(jamm);
Serial.println(menitt);
Serial.println(detikk);
}
void checkForResponse()
{
while(mySerial.available()!=0)
{
for (int i = 0; i < 50; i++)
{
dLine2[i] = mySerial.read();
}
for (int i = 0; i < 50; i++)
{
Serial.println(dLine2[i]);
}
ϵϬ
void ShowSerialData()
{
char data;
while(mySerial.available()!=0)
{
Serial.write(mySerial.read());
}
ϵϭ
Lampiran 3: Kode Program Web
WEB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="muhammadfadlanariska">
<title>Smart Power Meter</title>
<!-- Bagian css -->
<link rel="stylesheet" href="assets/css/bootstrap.css">
<link rel="stylesheet" href="assets/css/data.css">
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-collapse">
<span bar"></span><span
class="icon-bar"></span><span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="default.php">
SMART POWER METER</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-left">
<li class="clr1 active"><a
href="default.php">Beranda</a></li>
</ul>
</div>
</div>
</nav>
</br></br></br>
<div class="container" style="margin-top:20px">
<div class="col-md-7">
<h3> Tanggal :</h3>
<?php
$tanggalmain=$_POST['tanggal'];
echo $tanggalmain;
?>
</div>
</div>
</br>
ϵϮ
<div class="container" style="margin-top:20px">
<center><img src="grafik.php"></center>
</br></br>
<div class="navbar navbar-default navbar-fixed-bottom footer-bottom">
<div class="container text-center">
<p class="text-center">Copyright © 2016. Developed by <a
href="https://www.facebook.com/muhammadfadlan.ariska">Muhammad Fadlan
Ariska</a></p>
</div>
</div>
</body>
</html>
HALAMAN WEB GET
<?php
date_default_timezone_set("Asia/Bangkok");
$daya=$_GET['daya'];
$volt=$_GET['volt'];
$amp=$_GET['amp'];
$pf=$_GET['pf'];
$tanggal = date("Y/m/d");
$jam= date("h:i:sa");
$servername = "";
$username = "";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO daya2 (id,daya,tanggal,jam,volt,amp,pf)
VALUES (NULL,'$daya','$tanggal','$jam','$volt','$amp','$pf')";
if ($conn->query($sql) === TRUE) {
echo "Data Sukses";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
ϵϯ
GRAFIK
<?php
$conn = new mysqli("","","","");
$sql_ = "SELECT * FROM `dayatemp`";
$query_=$conn->query($sql_ );
$x_ = "";
$y_ = "";
while( $r_ = mysqli_fetch_array( $query_ ) ){
$waktu = $r_['jam'];
$arus = $r_['daya'];
$x_ = $x_ . "," . $waktu;
$y_ = $y_ . "," . $arus;
}
include ("jpgraph-4.0.1/src/jpgraph.php");
include ("jpgraph-4.0.1/src/jpgraph_line.php");
$x_ = substr($x_,1,strlen($x_)-1);
$y_ = substr($y_,1,strlen($y_)-1);
$data_x = explode("," , $x_);
$data_y = explode("," , $y_);
$graph = new Graph(1000,600);
$graph->SetScale("textlin");
$theme_class= new UniversalTheme;
$graph->SetTheme($theme_class);
$graph->title->Set('Grafik Konsumsi Daya');
$graph->xaxis->title->Set('Waktu','low');
$graph->yaxis->title->Set('Daya');
$graph->xaxis->SetLabelAlign('center','center');
$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels($data_x);
$graph->xgrid->SetColor('#E3E3E3');
ϵϰ