arduino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include <PZEM004T.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "RTClib.h"
#define pin_relay 12
#define ONE_WIRE_BUS A0
#define relay_on digitalWrite(pin_relay,HIGH)
#define relay_off digitalWrite(pin_relay,LOW)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_Millis rtc;
byte second = 0;
byte minute = 0;
byte hour = 0;
byte weekday = 0;
byte monthday = 0;
byte month = 0;
int year = 0;
const int DS1307 = 0x68; // Alamat pin RTC pada arduino
PZEM004T pzem(2,3); // (RX,TX) connect to TX,RX of PZEM
IPAddress ip(192,168,1,1);
void setup()
{
pinMode(pin_relay,OUTPUT);
[Link]();
[Link](9600);
[Link](ip);
[Link]();
[Link]();
[Link]("POWER MONITOR");
relay_off;
}
float v,i,p,c;
int suhu;
long last_millis = millis(),HM,HMmenit;
int index,lastminute;
void loop(){
Page 1
arduino
if ([Link]()){
String data = [Link]('\n');
int a = [Link]("A");
int b =[Link]("B");
if (b>0){
data=[Link](a+1,b);
int dat= [Link]();
if(dat==1){
if (data=="1"){
relay_on;
}else if (data=="2"){
relay_off;
}
}else{
cek(data);
}
}
}
float v = [Link](ip);
if (v < 0.0) v = 0.0;
float i = [Link](ip);
if(i <= 0.0){ i=0;}
[Link](); // Send the command to get temperatures
suhu= [Link](0);
time_read();
if (v>200){
if (lastminute!=minute){
lastminute=minute;
HMmenit++;
if (HMmenit>=60){HM++;HMmenit=0;}
}
}
[Link](0,0);
[Link](karakter(hour));
[Link](":");
[Link](karakter(minute));
[Link](":");
[Link](karakter(second));
[Link](" ");
[Link](karakter(HM));
[Link](":");
[Link](karakter(HMmenit));
[Link](" ");
[Link](0,1);
[Link]("V");
[Link]((int)v);
[Link](" I");
Page 2
arduino
[Link](i);
[Link](" T");
[Link](suhu);
[Link](" ");
if (millis() - last_millis >= 1000) {
String protokol = "A" + String((int)v) + "B" + String(i) +
"C"+String(suhu)+"D"+karakter(HM)+":"+karakter(HMmenit)+"E";
protokol=protokol+[Link]()+"F";
[Link](protokol);
last_millis = millis();
}
Page 3