#include <RTClib.
h> // Download the library from
[Link]
#include <Wire.h> // Library for I2C Communication with DS3231 Module
#include <ArduinoJson.h>
StaticJsonBuffer<200> jsonBuffer;
#define BOARD_USART3_TX_PIN PB10 // Connect to TX3/RX3
#define BOARD_USART3_RX_PIN PB11 // Connect to TX3/RX3
RTC_DS3231 rtc;
/********************Parameters Definations Start********************/
char START [2] ="*";
//char DATATYPE [2];
char DEVICEID[12] = "BYNARK1234";
char TIMEDATE[32];
float VOLTAGE;
float CURRENT;
float PF;
float ACTPOWER;
float APPRPOWER;
float FREQUENCY;
float ACTENERGY;
float APPRENERGY;
int RELAYPIN = PB9;
int RELAY;
int LOAD;
int DOOR= PB8;
int CCMSONOFF;
int MAINTAIN;
int METERREAD;
char SECHDULE[20];
const int OffHour = 15;
const int OffMin = 43;
const int OnHour = 15;
const int OnMin = 50;
int SIGNAL;
int INTERVAL = 2;
char THRSVOLT;
int UNDERVOLTAGE = 180;
int OVERVOLTAGE = 280;
int LOADLIMIT = 5;
char MOBILENO[12];
char FIRMWARE[6] = "v1.1";
char HARDWARE[6] = "v1.0";
char ICCID[24];
char IMEI[20];
char API [60];
char METERTYPE [4];
char END[2] = "#";
/********************Parameters Definations ENDS********************/
void setup()
{
[Link](9600); // the GPRS baud rate
[Link](9600);
[Link]("Initializing..........");
[Link]();
DynamicJsonBuffer jsonBuffer;
if (! [Link]())
{
[Link]("Couldn't find RTC");
while (1);
}
if ([Link]())
{
[Link]("RTC lost power, lets set the time!");
// Comment out below lines once you set the date & time.
// Following line sets the RTC to the date & time this sketch was compiled
[Link](DateTime(F(__DATE__), F(__TIME__)));
//[Link](DateTime(2020, 3, 14, 11, 50, 0));
// Following line sets the RTC with an explicit date & time
// for example to set January 27 2017 at 12:56 you would call:
// [Link](DateTime(2017, 1, 27, 12, 56, 0));
}
delay(5000);
DateTime now = [Link]();
sprintf(TIMEDATE, "%02d-%02d-%02d %02d:%02d:%02d", [Link](), [Link](),
[Link](), [Link](), [Link](), [Link]());
[Link]("Date/Time: ");
[Link](TIMEDATE);
pinMode(RELAYPIN, OUTPUT);
digitalWrite(RELAYPIN, HIGH);
delay(5000);
if ( (([Link]() * 100 + [Link]()) >= (OffHour * 100 + OffMin)) &&
(([Link]() * 100 + [Link]()) <= (OnHour * 100 + OnMin)) )
{
digitalWrite(RELAYPIN, LOW);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
[Link]("Contractor: ");
[Link](RELAY);
}
/********************RELAY ON Logic in Evening********************/
else
{
digitalWrite(RELAYPIN, HIGH);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
[Link]("Contractor: ");
[Link](RELAY);
{
if( (VOLTAGE < UNDERVOLTAGE) && (VOLTAGE > OVERVOLTAGE) )
digitalWrite(RELAYPIN, LOW);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
[Link]("Contractor: ");
[Link](RELAY);
}
}
}
void loop()
{
/********************D PACKET STARTS********************/
[Link]("");
[Link]("************************************************************");
[Link]("Start Packet: ");
[Link](START);
[Link]("Data Type: C");
[Link]("CCMS ID: ");
[Link](DEVICEID);
DateTime now = [Link]();
sprintf(TIMEDATE, "%02d-%02d-%02d %02d:%02d:%02d", [Link](), [Link](),
[Link](), [Link](), [Link](), [Link]());
[Link]("Date/Time: ");
[Link](TIMEDATE);
VOLTAGE = 220.58;
[Link]("Voltage: ");
[Link](VOLTAGE);
CURRENT = 3.5;
[Link]("Current: ");
[Link](CURRENT);
PF = 4;
[Link]("Power Factor: ");
[Link](PF);
ACTPOWER = 500;
[Link]("Active Power: ");
[Link](ACTPOWER);
APPRPOWER = 870;
[Link]("Apparant Power: ");
[Link](APPRPOWER);
FREQUENCY = 49.5;
[Link]("Frequency: ");
[Link](FREQUENCY);
ACTENERGY = 760;
[Link]("Active Energy: ");
[Link](ACTENERGY);
APPRENERGY = 760;
[Link]("Apparant Energy: ");
[Link](APPRENERGY);
if(VOLTAGE>OVERVOLTAGE)
{
THRSVOLT = 'O';
[Link]("Threshold Voltage: ");
[Link](THRSVOLT);
}
else if(VOLTAGE<UNDERVOLTAGE)
{
THRSVOLT = 'U';
[Link]("Threshold Voltage: ");
[Link](THRSVOLT);
}
else
{
THRSVOLT = 'N';
[Link]("Threshold Voltage: ");
[Link](THRSVOLT);
}
pinMode(DOOR, OUTPUT);
int DOORSTATUS = digitalRead(DOOR); // read the status of RELAYPIN
[Link]("DOOR STATUS: ");
[Link](DOORSTATUS);
sprintf(SECHDULE, "%02d:%02d/%02d:%02d", OnHour, OnMin, OffHour, OffMin );
/********************RELAY Logic Starts********************/
/********************RELAY OFF Logic in Morning********************/
if ( (([Link]() * 100 + [Link]()) >= (OffHour * 100 + OffMin)) &&
(([Link]() * 100 + [Link]()) <= (OnHour * 100 + OnMin)) )
{
digitalWrite(RELAYPIN, HIGH);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
[Link]("Contractor: ");
[Link](RELAY);
}
/********************RELAY ON Logic in Evening********************/
else
{
digitalWrite(RELAYPIN, LOW);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
[Link]("Contractor: ");
[Link](RELAY);
}
/********************RELAY Logic Ends********************/
CCMSONOFF= RELAY;
[Link]("CCMS ON/OFF: ");
[Link](CCMSONOFF);
[Link]("SECHDULE ON/OFF: ");
[Link](SECHDULE);
[Link]("PUSH DATA INTERVAL: ");
[Link](INTERVAL);
[Link]("END PACKET: ");
[Link](END);
[Link]("Signal Strength: ");
[Link](SIGNAL);
/****************************************************************/
/********************GSM Communication Starts********************/
delay(1000);
if ([Link]())
[Link]([Link]());
[Link]();
[Link]("AT");
delay(1000);
[Link]("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(3000);
ShowSerialData();
[Link]("AT+SAPBR=3,1,\"APN\",\"[Link]\"");//APN
delay(3000);
ShowSerialData();
[Link]("AT+SAPBR=1,1");
delay(3000);
ShowSerialData();
[Link]("AT+SAPBR=2,1");
delay(3000);
ShowSerialData();
[Link]("AT+CSQ");
SIGNAL = [Link]("AT+CSQ");
[Link]("Signal Strength: ");
[Link](SIGNAL);
delay(3000);
ShowSerialData();
[Link]("AT+HTTPINIT");
delay(4000);
ShowSerialData();
[Link]("AT+HTTPPARA=\"CID\",1");
delay(4000);
ShowSerialData();
/********************Send Data via JSON Starts********************/
StaticJsonBuffer<200> jsonBuffer;
JsonObject& object = [Link]();
[Link]("deviceID",DEVICEID);
[Link]("timedate",TIMEDATE);
[Link]("Sechdule",SECHDULE);
[Link]("relaystate",RELAY);
[Link](Serial);
[Link](" ");
String sendtoserver;
[Link](sendtoserver);
delay(4000);
[Link]("AT+HTTPPARA=\"URL\",\"[Link]
[Link]\"");//Public server address
delay(4000);
ShowSerialData();
[Link]("AT+HTTPPARA=\"CONTENT\",\"application/json\"");
delay(4000);
ShowSerialData();
[Link]("AT+HTTPDATA=" + String([Link]()) + ",100000");
[Link](sendtoserver);
delay(6000);
ShowSerialData();
[Link](sendtoserver);
delay(4000);
ShowSerialData;
[Link]("AT+HTTPACTION=1");
delay(4000);
ShowSerialData();
[Link]("AT+HTTPREAD");
delay(4000);
ShowSerialData();
[Link]("AT+HTTPTERM");
delay(4000);
ShowSerialData;
delay((INTERVAL*60-60)*1000); //Formula to set the delay between
data transmission
/********************GSM Communication Stops********************/
void ShowSerialData()
{
while ([Link]() != 0)
[Link]([Link]());
delay(1000);