Hi, I post my code, hope someone help me improve my code, thks
#include "FS.h"
#define BLYNK_PRINT Serial
#define BLYNK_DEBUG
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266httpUpdate.h>
#include <ESP8266Ping.h>
#include <Wire.h>
#include "RTClib.h"
#include <DHT.h>
char auth[] = "xxx";
SimpleTimer timer;
byte timer_readDHT11_ID;
byte timer_readMQ2_ID;
RTC_DS3231 rtc;
WidgetTerminal terminal1(V10);
const byte VP_String[] = {V30 , V31 , V27 , V20};
String HW_String[] = {"", "", "http://192.168.0.222/update.bin", "NodeMCU_4.0.3.FS"};
//currentIP, oldIP, http update address, Version
const byte VP_data[] = {V32, V33, V35, V34, V45, V47};
int data[] = {30, 30, 42, 300, 1, 1};
//interval MQ2 alarm, interval Temp alarm, temp alarm, MQ2 alarm, Temp alarm, MQ2 Alarm
const byte ON_pins[] = {2, 14, 12};
const byte OFF_pins[] = {13};
const byte ON_VPpins[] = {V1, V2, V3};
const byte OFF_VPpins[] = {V4};
const byte clocker_ON_VP_start[] = {V11, V12, V13};
const byte clocker_ON_VP_stop[] = {V21, V22, V23};
const byte clocker_OFF_VP_start[] = {V14};
const byte clocker_OFF_VP_stop[] = {V24};
const byte VP_func[] = {V36, V39, V50, V53, V37, V48, V51, V38, V49, V52, V42, V40, V41, V43, V54};
const int sizeON_pins = (sizeof(ON_pins) / sizeof(byte));
const int sizeOFF_pins = (sizeof(OFF_pins) / sizeof(byte));
const int sizedata = (sizeof(VP_data) / sizeof(byte));
const int sizeString = (sizeof(VP_String) / sizeof(byte));
const int sizeVP_func = (sizeof(VP_func) / sizeof(byte));
byte ON_VPstate[sizeON_pins];
byte OFF_VPstate[sizeOFF_pins];
int clocker_ON_start[sizeON_pins];
int clocker_ON_stop[sizeON_pins];
int clocker_OFF_start[sizeOFF_pins];
int clocker_OFF_stop[sizeOFF_pins];
boolean isFirstConnect;
boolean compareIP_Alarm;
byte task = 0;
String VPstate_SPIFFS = "";
String ON_clocker_SPIFFS = "";
String OFF_clocker_SPIFFS = "";
//String currentIP = HW_String[0];
//String oldIP = HW_String[1];
//String httpUpdateAddress = HW_String[2];
//String Version = HW_String[3];
//const byte currentIP_VP = VP_String[0];
//const byte oldIP_VP = VP_String[1];
//const byte httpUpdateAddress_VP = VP_String[2];
//const byte Version_VP = VP_String[3];
String currentTime;
String currentDay;
String WifiLocal;
DHT dht(16, DHT11);
unsigned long t_temp_count = 0;
unsigned long t_MQ2_count = 0;
byte h;
byte t;
String h_push;
String t_push;
#define MQ2_Pin A0
int MQ2;
String MQ2_push;
void get_VPstate_SPIFFS()
{
String ON_VPstate_SPIFFS;
String OFF_VPstate_SPIFFS;
for (byte i = 0; i < sizeON_pins; i++)
{
ON_VPstate_SPIFFS += String (ON_VPstate[i]);
delay(10);
}
Serial.println("ON_VPstate_SPIFFS :" + ON_VPstate_SPIFFS);
delay(10);
for (byte i = 0; i < sizeOFF_pins; i++)
{
OFF_VPstate_SPIFFS += String (OFF_VPstate[i]);
delay(10);
}
Serial.println("OFF_VPstate_SPIFFS :" + OFF_VPstate_SPIFFS);
delay(10);
VPstate_SPIFFS = ON_VPstate_SPIFFS + OFF_VPstate_SPIFFS;
terminal1.println("get VPstate_SPIFFS :" + VPstate_SPIFFS);
terminal1.flush();
}
void get_ON_clocker_SPIFFS()
{
String ON_clocker_start_SPIFFS;
String ON_clocker_stop_SPIFFS;
for (byte i = 0; i < sizeON_pins; i++)
{
ON_clocker_start_SPIFFS += String (clocker_ON_start[i]) + ",";
ON_clocker_stop_SPIFFS += String (clocker_ON_stop[i]) + ",";
delay(10);
}
Serial.println("get ON_clocker_start_SPIFFS :" + ON_clocker_start_SPIFFS);
Serial.println("get ON_clocker_stop_SPIFFS :" + ON_clocker_stop_SPIFFS);
ON_clocker_SPIFFS = ON_clocker_start_SPIFFS + ON_clocker_stop_SPIFFS;
Serial.println("get ON_clocker_SPIFFS :" + ON_clocker_SPIFFS);
terminal1.println("get ON_clocker_SPIFFS :" + ON_clocker_SPIFFS);
terminal1.flush();
}
void get_OFF_clocker_SPIFFS()
{
String OFF_clocker_start_SPIFFS;
String OFF_clocker_stop_SPIFFS;
for (byte i = 0; i < sizeOFF_pins; i++)
{
OFF_clocker_start_SPIFFS += String (clocker_OFF_start[i]) + ",";
OFF_clocker_stop_SPIFFS += String (clocker_OFF_stop[i]) + ",";
delay(10);
}
Serial.println("get OFF_clocker_start_SPIFFS :" + OFF_clocker_start_SPIFFS);
Serial.println("get OFF_clocker_stop_SPIFFS :" + OFF_clocker_stop_SPIFFS);
OFF_clocker_SPIFFS = OFF_clocker_start_SPIFFS + OFF_clocker_stop_SPIFFS;
Serial.println("get OFF_clocker_SPIFFS :" + OFF_clocker_SPIFFS);
terminal1.println("get OFF_clocker_SPIFFS :" + OFF_clocker_SPIFFS);
terminal1.flush();
}
void formatSPIFFS()
{
SPIFFS.format();
}
void read_VPstate_SPIFFS()
{
String line = "";
if (SPIFFS.begin())
{
Serial.println("mounted file system");
if (SPIFFS.exists("/VP_state.txt"))
{
Serial.println("reading VP_state file");
File VP_state_file = SPIFFS.open("/VP_state.txt", "r");
if (VP_state_file)
{
while(VP_state_file.available())
{
line = VP_state_file.readStringUntil('\n');
Serial.println("read_VPstate_SPIFFS line: " + line);
}
}
else
{
Serial.println("failed to load VP_state.txt");
terminal1.println("failed to load VP_state.txt");
}
}
else
{
Serial.println("VP_state.txt not exist");
terminal1.println("VP_state.txt not exist");
}
}
else
{
Serial.println("failed to mount FS");
terminal1.println("failed to mount FS");
}
String ON_VPstate_SPIFFS;
String OFF_VPstate_SPIFFS;
for (byte i = 0; i < sizeON_pins; i++)
{
ON_VPstate[i] = line.substring(i, i+1).toInt();
ON_VPstate_SPIFFS += String (ON_VPstate[i]);
delay(10);
}
for (byte i = 0; i < sizeOFF_pins; i++)
{
int j = sizeON_pins + i;
OFF_VPstate[i] = line.substring(j, j+1).toInt();
OFF_VPstate_SPIFFS += String (OFF_VPstate[i]);
delay(10);
}
VPstate_SPIFFS = ON_VPstate_SPIFFS + OFF_VPstate_SPIFFS;
String anbc = String(ON_VPstate[0]) + ON_VPstate[1] + ON_VPstate[2] + OFF_VPstate[0];
terminal1.println("read VPstate_SPIFFS :" + anbc);
terminal1.flush();
}
void read_ON_clocker_SPIFFS()
{
String line = "";
if (SPIFFS.begin())
{
Serial.println("mounted file system");
if (SPIFFS.exists("/ON_clocker.txt"))
{
//file exists, reading and loading
Serial.println("reading ON_clocker file");
File ON_clocker_file = SPIFFS.open("/ON_clocker.txt", "r");
if (ON_clocker_file)
{
while(ON_clocker_file.available())
{
line = ON_clocker_file.readStringUntil('\n');
Serial.println("read ON_clocker_file line: " + line);
}
}
else
{
Serial.println("failed to load ON_clocker.txt");
}
}
else
{
Serial.println("ON_clocker.txt not exist");
}
}
else
{
Serial.println("failed to mount FS");
}
String ON_clocker_start_SPIFFS;
String ON_clocker_stop_SPIFFS;
int m = 0;
int n = 0;
for (byte i = 0; i < sizeON_pins; i++)
{
m = line.indexOf(',', n);
clocker_ON_start[i] = line.substring(n, m).toInt();
n = m + 1;
ON_clocker_start_SPIFFS += String (clocker_ON_start[i]) + ",";
delay(10);
}
for (byte i = 0; i < sizeON_pins; i++)
{
m = line.indexOf(',', n);
clocker_ON_stop[i] = line.substring(n, m).toInt();
n = m + 1;
ON_clocker_stop_SPIFFS += String (clocker_ON_stop[i]) + ",";
delay(10);
}
Serial.println("read ON_clocker_start_SPIFFS :" + ON_clocker_start_SPIFFS);
Serial.println("read ON_clocker_stop_SPIFFS :" + ON_clocker_stop_SPIFFS);
ON_clocker_SPIFFS = ON_clocker_start_SPIFFS + ON_clocker_stop_SPIFFS;
Serial.println("read ON_clocker_SPIFFS :" + ON_clocker_SPIFFS);
terminal1.println("read ON_clocker_SPIFFS :" + ON_clocker_SPIFFS);
terminal1.flush();
}
void read_OFF_clocker_SPIFFS()
{
String line = "";
if (SPIFFS.begin())
{
Serial.println("mounted file system");
if (SPIFFS.exists("/OFF_clocker.txt"))
{
//file exists, reading and loading
Serial.println("reading OFF_clocker file");
File OFF_clocker_file = SPIFFS.open("/OFF_clocker.txt", "r");
if (OFF_clocker_file)
{
while(OFF_clocker_file.available())
{
line = OFF_clocker_file.readStringUntil('\n');
Serial.println("read OFF_clocker_file line: " + line);
}
}
else
{
Serial.println("failed to load OFF_clocker.txt");
}
}
else
{
Serial.println("OFF_clocker not exist.txt");
}
}
else
{
Serial.println("failed to mount FS");
}
String OFF_clocker_start_SPIFFS;
String OFF_clocker_stop_SPIFFS;
int m = 0;
int n = 0;
for (byte i = 0; i < sizeOFF_pins; i++)
{
m = line.indexOf(',', n);
clocker_OFF_start[i] = line.substring(n, m).toInt();
n = m + 1;
OFF_clocker_start_SPIFFS += String (clocker_OFF_start[i]) + ",";
delay(10);
}
for (byte i = 0; i < sizeOFF_pins; i++)
{
m = line.indexOf(',', n);
clocker_OFF_stop[i] = line.substring(n, m).toInt();
n = m + 1;
OFF_clocker_stop_SPIFFS += String (clocker_OFF_stop[i]) + ",";
delay(10);
}
Serial.println("read OFF_clocker_start_SPIFFS :" + OFF_clocker_start_SPIFFS);
delay(10);
Serial.println("read OFF_clocker_stop_SPIFFS :" + OFF_clocker_stop_SPIFFS);
delay(10);
OFF_clocker_SPIFFS = OFF_clocker_start_SPIFFS + OFF_clocker_stop_SPIFFS;
Serial.println("read OFF_clocker_SPIFFS :" + OFF_clocker_SPIFFS);
delay(10);
terminal1.println("read OFF_clocker_SPIFFS :" + OFF_clocker_SPIFFS);
terminal1.flush();
}
void write_VPstate_SPIFFS()
{
if (SPIFFS.begin())
{
Serial.println("mounted file system");
if (SPIFFS.exists("/VP_state.txt"))
{
Serial.println("reading VP_state file");
File VP_state_file = SPIFFS.open("/VP_state.txt", "w");
if (!VP_state_file)
{
Serial.println("VP_state.txt open failed");
terminal1.println("VP_state.txt open failed");
}
VP_state_file.println(VPstate_SPIFFS);
terminal1.println("write VPstate_SPIFFS :" + VPstate_SPIFFS);
VPstate_SPIFFS = "";
}
else
{
Serial.println("VP_state.txt doesn't exist yet");
terminal1.println("VP_state.txt doesn't exist yet");
}
}
else
{
Serial.println("failed to mount FS");
terminal1.println("failed to mount FS");
}
terminal1.flush();
}
void write_ON_clocker_SPIFFS()
{
if (SPIFFS.begin())
{
Serial.println("mounted file system");
if (SPIFFS.exists("/ON_clocker.txt"))
{
Serial.println("reading ON_clocker file");
File ON_clocker_file = SPIFFS.open("/ON_clocker.txt", "w");
if (!ON_clocker_file)
{
Serial.println("ON_clocker.txt open failed");
terminal1.println("ON_clocker.txt open failed");
}
ON_clocker_file.println(ON_clocker_SPIFFS);
delay(10);
Serial.println("Write ON_clocker_SPIFFS :" + ON_clocker_SPIFFS);
terminal1.println("Write ON_clocker_SPIFFS :" + ON_clocker_SPIFFS);
ON_clocker_SPIFFS = "";
}
else
{
Serial.println("ON_clocker.txt doesn't exist yet");
terminal1.println("ON_clocker.txt doesn't exist yet");
}
}
else
{
Serial.println("failed to mount FS");
terminal1.println("failed to mount FS");
}
terminal1.flush();
}
void write_OFF_clocker_SPIFFS()
{
if (SPIFFS.begin())
{
Serial.println("mounted file system");
if (SPIFFS.exists("/OFF_clocker.txt"))
{
Serial.println("reading OFF_clocker file");
File OFF_clocker_file = SPIFFS.open("/OFF_clocker.txt", "w");
if (!OFF_clocker_file)
{
Serial.println("OFF_clocker.txt open failed");
terminal1.println("OFF_clocker.txt open failed");
}
OFF_clocker_file.println(OFF_clocker_SPIFFS);
delay(10);
Serial.println("Write OFF_clocker_SPIFFS :" + OFF_clocker_SPIFFS);
terminal1.println("Write OFF_clocker_SPIFFS :" + OFF_clocker_SPIFFS);
OFF_clocker_SPIFFS = "";
}
else
{
Serial.println("OFF_clocker.txt doesn't exist yet");
terminal1.println("OFF_clocker.txt doesn't exist yet");
}
}
else
{
Serial.println("failed to mount FS");
terminal1.println("failed to mount FS");
}
terminal1.flush();
}
void getlocalWifi()
{
char myIpChar[24];
IPAddress myIp = WiFi.localIP();
sprintf(myIpChar, "%d.%d.%d.%d", myIp[0], myIp[1], myIp[2], myIp[3]);
String WifiLocalIP = String(myIpChar);
WifiLocal = "SSID: " + WiFi.SSID() + " - IP: " + WifiLocalIP;
Serial.println(WifiLocal);
Serial.println();
Blynk.virtualWrite(V18, WifiLocal);
}
void checkWifi()
{
if (!Blynk.connected())
{
if (WiFi.status() != WL_CONNECTED)
{
ESP8266WiFiMulti wifiMulti;
wifiMulti.addAP("xxx", "xxx");
wifiMulti.addAP("xxx", "xxx");
wifiMulti.addAP("xxx", "xxx");
wifiMulti.addAP("xxx", "xxx");
wifiMulti.addAP("xxx", "xxx");
if (wifiMulti.run() == WL_CONNECTED)
{
Serial.println("Success");
if (Ping.ping("www.google.com.vn", 1))
{
Serial.println("Success connect to internet");
if (Ping.ping("blynk-cloud.com", 1))
{
Serial.println("Success ping to blynk");
}
else
{
Serial.println("Fail ping to blynk");
}
}
else
{
Serial.println("Fail ping to Google");
}
}
else
{
Serial.println("Fail");
}
}
}
}
void syncBlynk()
{
Blynk.syncAll();
}
void updateON_clocker()
{
for (byte i = 0; i <sizeON_pins; i++)
{
String ON_start = String(clocker_ON_start[i]);
String ON_start_push = ON_start.substring(0,2) + "h" + ON_start.substring(2,4);
Blynk.virtualWrite(clocker_ON_VP_start[i], ON_start_push);
delay(10);
String ON_stop = String(clocker_ON_stop[i]);
String ON_stop_push = ON_stop.substring(0,2) + "h" + ON_stop.substring(2,4);
Blynk.virtualWrite(clocker_ON_VP_stop[i], ON_stop_push);
delay(10);
}
}
void updateOFF_clocker()
{
for (byte i = 0; i < sizeOFF_pins; i++)
{
String OFF_start = String(clocker_OFF_start[i]);
String OFF_start_push = OFF_start.substring(0,2) + "h" + OFF_start.substring(2,4);
Blynk.virtualWrite(clocker_OFF_VP_start[i], OFF_start_push);
delay(10);
String OFF_stop = String(clocker_OFF_stop[i]);
String OFF_stop_push = OFF_stop.substring(0,2) + "h" + OFF_stop.substring(2,4);
Blynk.virtualWrite(clocker_OFF_VP_stop[i], OFF_stop_push);
delay(10);
}
}
void updateState()
{
for (byte i = 0; i < sizeON_pins; i++)
{
byte t = digitalRead(ON_pins[i]);
Serial.println(String("ON_VPstate: ") + i + " " + ON_VPstate[i]);
Serial.println(String("t ON: ") + i + " " + t);
if (t != ON_VPstate[i])
{
Blynk.virtualWrite(ON_VPpins[i], t);
ON_VPstate[i] = t;
Serial.println(String("ON_VPstate khac: ") + i + " " + ON_VPstate[i]);
get_VPstate_SPIFFS();
delay(10);
write_VPstate_SPIFFS();
delay(10);
}
delay(10);
}
for (byte i = 0; i < sizeOFF_pins; i++)
{
byte t = digitalRead(OFF_pins[i]);
Serial.println(String("OFF_VPstate: ") + i + " " + OFF_VPstate[i]);
Serial.println(String("t OFF: ") +i + t);
if (t == OFF_VPstate[i])
{
Blynk.virtualWrite(OFF_VPpins[i], 1 - t);
OFF_VPstate[i] = 1 - t;
Serial.println(String("OFF_VPstate khac: ") + i + " " + OFF_VPstate[i]);
get_VPstate_SPIFFS();
delay(10);
write_VPstate_SPIFFS();
delay(10);
}
delay(10);
}
delay(10);
getlocalWifi();
delay(10);
Blynk.virtualWrite(V26,MQ2_push);
delay(10);
Blynk.virtualWrite(V28,h_push);
delay(10);
Blynk.virtualWrite(V29,t_push);
delay(10);
updateOFF_clocker();
delay(10);
updateON_clocker();
delay(10);
terminal1.print("State updated");
terminal1.println();
terminal1.flush();
}
void readDHT11()
{
h = dht.readHumidity();
t = dht.readTemperature();
t_push = String (t) + " ℃";
h_push = String (h) + " %";
if (t > data[2] && t < 70)
{
if ((millis() - t_temp_count) >= (data[1] * 1000L) && data[4] == 1)
{
t_temp_count = millis();
String alarm_str = String("Temp is HIGH: ") + t_push + " > " + data[2];
Blynk.notify(alarm_str);
Blynk.email("xxx@gmail.com", alarm_str, alarm_str);
}
}
else
{
t_temp_count = 0;
}
}
void readMQ2()
{
MQ2 = (analogRead(MQ2_Pin));
MQ2_push = MQ2;
if (MQ2 > data[3])
{
if ((millis() - t_MQ2_count) >= (data[0] * 1000L) && data[5] == 1)
{
t_MQ2_count = millis();
String alarm_str = String("MQ2 is HIGH: ") + MQ2_push + " > " + data[3];
Blynk.notify(alarm_str);
Blynk.email("xxx@gmail.com", alarm_str, alarm_str);
}
}
else
{
t_MQ2_count = 0;
}
}
void compareIP()
{
if (HW_String[0].length() > 0 && HW_String[1].length() > 0)
{
if (HW_String[0] != HW_String[1])
{
if (compareIP_Alarm)
{
Blynk.notify("IP has changed");
Blynk.email("xxx@gmail.com", "IP has changed", "IP has changed");
compareIP_Alarm = false;
}
}
else
{
compareIP_Alarm = true;
}
}
}
void clocker()
{
DateTime Time = rtc.now();
currentTime = String(Time.hour()) + ":" + Time.minute() + ":" + Time.second();
currentDay = String(Time.day()) + "-" + Time.month() + "-" + Time.year();
int t = Time.hour() * 100 + Time.minute();
for (byte k = 0; k < sizeON_pins; k++)
{
if (clocker_ON_start[k] == 0 && clocker_ON_stop[k] == 0)
{
continue;
}
else if (t >= clocker_ON_start[k] && t < clocker_ON_stop[k])
{
if (digitalRead(ON_pins[k]) == 1)
{
digitalWrite(ON_pins[k], 0);
Serial.println(String("ON_VPstate: ") + k + " " + ON_VPstate[k]);
if (Blynk.connected());
{
Blynk.virtualWrite(ON_VPpins[k], 0);
ON_VPstate[k] = 0;
String alarm_str = String("ON pin ") + k+1 + " OFF by Clocker at: " + currentTime + " " + currentTime;
terminal1.print(alarm_str);
terminal1.println();
terminal1.flush();
Blynk.email("xxx@gmail.com", alarm_str, alarm_str);
delay (10);
get_VPstate_SPIFFS();
delay(10);
write_VPstate_SPIFFS();
delay(10);
}
}
}
else
{
if (digitalRead(ON_pins[k]) == 0)
{
digitalWrite(ON_pins[k], 1);
Serial.println(String("ON_VPstate: ") + k + " " + ON_VPstate[k]);
if (Blynk.connected());
{
Blynk.virtualWrite(ON_VPpins[k], 1);
ON_VPstate[k] = 1;
String alarm_str = String("ON pin ") + k+1 + " ON by Clocker at: " + currentTime + " " + currentTime;
terminal1.print(alarm_str);
terminal1.println();
terminal1.flush();
Blynk.email("xxx@gmail.com", alarm_str, alarm_str);
delay (10);
get_VPstate_SPIFFS();
delay(10);
write_VPstate_SPIFFS();
delay(10);
}
}
}
}
for (byte j = 0; j < sizeOFF_pins; j++)
{
if (clocker_OFF_start[j] == 0 && clocker_OFF_stop[j] == 0)
{
continue;
}
else if (t >= clocker_OFF_start[j] && t < clocker_OFF_stop[j])
{
if (digitalRead(OFF_pins[j]) == 1)
{
digitalWrite(OFF_pins[j], 0);
Serial.println(String("OFF_VPstate: ") + j + " " + OFF_VPstate[j]);
if (Blynk.connected());
{
Blynk.virtualWrite(OFF_VPpins[j], 1);
OFF_VPstate[j] = 1;
String alarm_str = String("OFF pin ") + j+1 + " ON by Clocker at: " + currentTime + " " + currentTime;
terminal1.print(alarm_str);
terminal1.println();
terminal1.flush();
Blynk.email("xxx@gmail.com", alarm_str, alarm_str);
delay (10);
get_VPstate_SPIFFS();
delay(10);
write_VPstate_SPIFFS();
delay(10);
}
}
}
else
{
if (digitalRead(OFF_pins[j]) == 0)
{
digitalWrite(OFF_pins[j], 1);
Serial.println(String("OFF_VPstate: ") + j + " " + OFF_VPstate[j]);
if (Blynk.connected());
{
Blynk.virtualWrite(OFF_VPpins[j], 0);
OFF_VPstate[j] = 0;
String alarm_str = String("OFF pin ") + j+1 + " OFF by Clocker at: " + currentTime + " " + currentTime;
terminal1.print(alarm_str);
terminal1.println();
terminal1.flush();
Blynk.email("xxx@gmail.com", alarm_str, alarm_str);
delay (10);
get_VPstate_SPIFFS();
delay(10);
write_VPstate_SPIFFS();
delay(10);
}
}
}
delay (10);
}
}
void getIP()
{
String readString;
WiFiClient client;
if (client.connect("api.ipify.org", 80))
{
client.println(String("GET / HTTP/1.0\r\n") +
"Host: api.ipify.org\r\n" +
"Connection: close\r\n\r\n");
//Waiting response
unsigned long timeout = millis() + 5000;
while (client.available() == 0)
{
if (timeout - millis() < 0)
{
Serial.println(">>> Client Timeout !");
terminal1.println(">>> Client Timeout !");
terminal1.println();
terminal1.flush();
client.stop();
return;
}
}
while (client.available())
{
char c = client.read();
readString += c;
}
client.stop(); //stop client
Serial.print(readString);
int strangeChar = readString.indexOf((char) - 1);
HW_String[0] = readString.substring(153, strangeChar);
readString = "";
terminal1.print("Current IP: ");
Blynk.virtualWrite(VP_String[0], HW_String[0]);
terminal1.println(HW_String[0]);
terminal1.println();
terminal1.flush();
}
else
{
Serial.println("connection failed");
Serial.println();
terminal1.println("connection failed");
terminal1.println();
}
}
void updateIP1()
{
WiFiClient client1;
if (HW_String[0].length() > 0)
{
if (client1.connect("dynupdate.no-ip.com", 80))
{
client1.println(String("GET /nic/update?hostname=xxx.ddns.net&myip=") + HW_String[0] + " HTTP/1.0\r\n"
+ "Host: dynupdate.no-ip.com\r\n"
+ "Authorization: Basic bmdvaHV1bmFtOmd5Z2FieXRl\r\n"
+ "User-Agent: Arduino_update_client/1.0 xxx@gmail.com\r\n\r\n");
terminal1.print("Updated Ip xxx.ddns.net to " + HW_String[0]);
terminal1.println();
}
else
{
terminal1.println("connection to update.no-ip.com failed");
terminal1.println();
}
client1.stop();
}
else
{
terminal1.println("Need New IP First");
terminal1.println();
}
terminal1.flush();
}
void updateIP2()
{
WiFiClient client2;
if (HW_String[0].length() > 0)
{
if (client2.connect("dynupdate.no-ip.com", 80))
{
client2.println(String ("GET /nic/update?hostname=xxx.ddns.net,xxx.ddns.net,xxx.ddns.net,&myip=") + HW_String[0] + " HTTP/1.0\r\n"
+ "Host: dynupdate.no-ip.com\r\n"
+ "Authorization: Basic aHV1bmFtODI6Z3lnYWJ5dGU=\r\n"
+ "User-Agent: Arduino_update_client/1.0 xxx@gmail.com\r\n\r\n");
terminal1.print("Updated Ip xxx.ddns.net to " + HW_String[0]);
terminal1.println();
}
else
{
terminal1.println("connection to update.no-ip.com failed");
terminal1.println();
}
client2.stop();
}
else
{
terminal1.println("Need New IP First");
terminal1.println();
}
terminal1.flush();
}
void updateIPall()
{
updateIP2();
timer.setTimeout(5000L, updateIP1);
Blynk.virtualWrite(VP_String[1], HW_String[0]);
}
void http_update()
{
ESPhttpUpdate.update(HW_String[2]);
}
//VP_func[] = {V36, V39, V50, V53, V37, V48, V51, V38, V49, V52, V42, V40, V41, V43, V54};
typedef void (* myFunction)();
extern myFunction FunctionArray[];
myFunction FunctionArray[] = {formatSPIFFS, get_VPstate_SPIFFS, get_ON_clocker_SPIFFS,
get_OFF_clocker_SPIFFS, read_VPstate_SPIFFS, read_ON_clocker_SPIFFS,
read_OFF_clocker_SPIFFS, write_VPstate_SPIFFS,
write_ON_clocker_SPIFFS, write_OFF_clocker_SPIFFS, updateState,
getIP, updateIPall, http_update, syncBlynk};
volatile int foo = sizeVP_func;
void setup()
{
Serial.begin(115200);
read_VPstate_SPIFFS();
delay(3000);
read_ON_clocker_SPIFFS();
delay(3000);
read_OFF_clocker_SPIFFS();
delay(3000);
//Blynk.begin(auth, "xxx", "xxx");
Blynk.config(auth);
for (byte i = 0; i < sizeON_pins; i++)
{
pinMode(ON_pins[i], OUTPUT);
digitalWrite(ON_pins[i], HIGH);
delay (10);
}
for (byte i = 0; i < sizeOFF_pins; i++)
{
pinMode(OFF_pins[i], OUTPUT);
digitalWrite(OFF_pins[i], HIGH);
delay (10);
}
pinMode(MQ2_Pin, INPUT);
dht.begin();
Wire.begin();
timer.setInterval(100, clocker);
timer.setInterval(1000, compareIP);
timer_readDHT11_ID = timer.setInterval(1000, readDHT11);
timer.disable(timer_readDHT11_ID);
h_push = "OFF";
t_push = "OFF";
timer_readMQ2_ID = timer.setInterval(1000, readMQ2);
timer.disable(timer_readMQ2_ID);
MQ2_push = "OFF";
timer.setInterval(1000, checkWifi);
isFirstConnect = true;
compareIP_Alarm = true;
task = 0;
Serial.print("Setup done");
Serial.println();
}
void loop()
{
Blynk.run();
timer.run();
}
BLYNK_CONNECTED()
{
getlocalWifi();
task = 0;
//updateState();
/*if (isFirstConnect)
{
Blynk.syncAll();
Blynk.virtualWrite(VP_String[3], HW_String[3]);
isFirstConnect = false;
}*/
Blynk.syncAll();
Blynk.virtualWrite(VP_String[3], HW_String[3]);
getIP;
}
BLYNK_READ(V9)
{
Blynk.virtualWrite(V9, currentTime);
}
BLYNK_READ(V26)
{
Blynk.virtualWrite(V26, MQ2_push);
}
BLYNK_READ(V29)
{
Blynk.virtualWrite(V29, t_push);
}
BLYNK_READ(V28)
{
Blynk.virtualWrite(V28, h_push);
}