STM32 ESP8266 Code
STM32 ESP8266 Code
RTC_DS3231 rtc;
void setup()
{
Serial3.begin(9600); // the GPRS baud rate
Serial.begin(9600);
Serial.println("Initializing..........");
Wire.begin();
DynamicJsonBuffer jsonBuffer;
if (! rtc.begin())
{
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower())
{
Serial.println("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
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(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:
// rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0));
}
delay(5000);
DateTime now = rtc.now();
sprintf(TIMEDATE, "%02d-%02d-%02d %02d:%02d:%02d", now.year(), now.month(),
now.day(), now.hour(), now.minute(), now.second());
Serial.print("Date/Time: ");
Serial.println(TIMEDATE);
pinMode(RELAYPIN, OUTPUT);
digitalWrite(RELAYPIN, HIGH);
delay(5000);
else
{
digitalWrite(RELAYPIN, HIGH);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
Serial.print("Contractor: ");
Serial.println(RELAY);
{
if( (VOLTAGE < UNDERVOLTAGE) && (VOLTAGE > OVERVOLTAGE) )
digitalWrite(RELAYPIN, LOW);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
Serial.print("Contractor: ");
Serial.println(RELAY);
}
}
}
void loop()
{
/********************D PACKET STARTS********************/
Serial.println("");
Serial.println("************************************************************");
VOLTAGE = 220.58;
Serial.print("Voltage: ");
Serial.println(VOLTAGE);
CURRENT = 3.5;
Serial.print("Current: ");
Serial.println(CURRENT);
PF = 4;
Serial.print("Power Factor: ");
Serial.println(PF);
ACTPOWER = 500;
Serial.print("Active Power: ");
Serial.println(ACTPOWER);
APPRPOWER = 870;
Serial.print("Apparant Power: ");
Serial.println(APPRPOWER);
FREQUENCY = 49.5;
Serial.print("Frequency: ");
Serial.println(FREQUENCY);
ACTENERGY = 760;
Serial.print("Active Energy: ");
Serial.println(ACTENERGY);
APPRENERGY = 760;
Serial.print("Apparant Energy: ");
Serial.println(APPRENERGY);
if(VOLTAGE>OVERVOLTAGE)
{
THRSVOLT = 'O';
Serial.print("Threshold Voltage: ");
Serial.println(THRSVOLT);
}
else if(VOLTAGE<UNDERVOLTAGE)
{
THRSVOLT = 'U';
Serial.print("Threshold Voltage: ");
Serial.println(THRSVOLT);
}
else
{
THRSVOLT = 'N';
Serial.print("Threshold Voltage: ");
Serial.println(THRSVOLT);
}
pinMode(DOOR, OUTPUT);
int DOORSTATUS = digitalRead(DOOR); // read the status of RELAYPIN
Serial.print("DOOR STATUS: ");
Serial.println(DOORSTATUS);
else
{
digitalWrite(RELAYPIN, LOW);
RELAY = digitalRead(RELAYPIN); // read the status of RELAYPIN
Serial.print("Contractor: ");
Serial.println(RELAY);
}
/********************RELAY Logic Ends********************/
CCMSONOFF= RELAY;
Serial.print("CCMS ON/OFF: ");
Serial.println(CCMSONOFF);
/****************************************************************/
/********************GSM Communication Starts********************/
delay(1000);
if (Serial3.available())
Serial.write(Serial3.read());
Serial.println();
Serial3.println("AT");
delay(1000);
Serial3.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(3000);
ShowSerialData();
Serial3.println("AT+SAPBR=3,1,\"APN\",\"airtelgprs.com\"");//APN
delay(3000);
ShowSerialData();
Serial3.println("AT+SAPBR=1,1");
delay(3000);
ShowSerialData();
Serial3.println("AT+SAPBR=2,1");
delay(3000);
ShowSerialData();
Serial3.println("AT+CSQ");
SIGNAL = Serial3.print("AT+CSQ");
Serial.print("Signal Strength: ");
Serial.println(SIGNAL);
delay(3000);
ShowSerialData();
Serial3.println("AT+HTTPINIT");
delay(4000);
ShowSerialData();
Serial3.println("AT+HTTPPARA=\"CID\",1");
delay(4000);
ShowSerialData();
StaticJsonBuffer<200> jsonBuffer;
JsonObject& object = jsonBuffer.createObject();
object.set("deviceID",DEVICEID);
object.set("timedate",TIMEDATE);
object.set("Sechdule",SECHDULE);
object.set("relaystate",RELAY);
object.printTo(Serial);
Serial.println(" ");
String sendtoserver;
object.prettyPrintTo(sendtoserver);
delay(4000);
Serial3.println("AT+HTTPPARA=\"URL\",\"http://120.138.9.117:8080/APCOMMONCM/gasserv
ice1.php\"");//Public server address
delay(4000);
ShowSerialData();
Serial3.println("AT+HTTPPARA=\"CONTENT\",\"application/json\"");
delay(4000);
ShowSerialData();
Serial3.println(sendtoserver);
delay(4000);
ShowSerialData;
Serial3.println("AT+HTTPACTION=1");
delay(4000);
ShowSerialData();
Serial3.println("AT+HTTPREAD");
delay(4000);
ShowSerialData();
Serial3.println("AT+HTTPTERM");
delay(4000);
ShowSerialData;
delay((INTERVAL*60-60)*1000); //Formula to set the delay between
data transmission
void ShowSerialData()
{
while (Serial3.available() != 0)
Serial.write(Serial3.read());
delay(1000);