what does it mean when all i get in serial is this?
[1859141] Connecting to blynk-cloud.com:8442
it was working for 4290 minutes (according to the blynk.tweets i was doing)
what does it mean when all i get in serial is this?
[1859141] Connecting to blynk-cloud.com:8442
it was working for 4290 minutes (according to the blynk.tweets i was doing)
so i commented out the:
while (!Blynk.connect()) {
Wait until connected
}
// Send email immediately on startup
Serial.println(F("Blynk started!"));
Blynk.email("xxx@hackermail.com", "Basement Ventilation Controller online", "It's online... ");
and it started working again, but not 100% like it was before…
can anyone explain how to resolve this, or is this something that is usual?
Please provide full sketch and connection type details.
Sorry, it was late and I didn’t post much info!
here is the sketch
#define BLYNK_PRINT Serial //this is the debugging for Blynk
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <dht.h> //this is the Rob Tillaart "stable" version
#include "RunningMedian.h"
dht DHT;
WiFiClient client;
RunningMedian samplesRoof = RunningMedian(15);
RunningMedian samplesHouse = RunningMedian(15);
RunningMedian samplesPlenum = RunningMedian(15);
RunningMedian samplesBase = RunningMedian(15);
#define ROOF_DHT22_PIN 12 //DHT22 sensor in roof connected to GPIO12
#define HOUSE_DHT22_PIN 13 //DHT22 sensor in house connected to GPIO13 ^^^changed PIN on 08.02.16
#define PLENUM_DHT22_PIN 14 //DHT22 sensor inside plenum connected to GPIO14 ^^^changed PIN on 08.02.16
#define BASE_DHT22_PIN 16 //DHT22 sensor in basement connected to GPIO16
const char* ssid = "ABCDE";
const char* password = "12345";
const char* serverThingspeak = "api.thingspeak.com"; //this is the Thingspeak address
String apiKeyThingspeak1 = "xxx"; //Basement plenum control channel
String apiKeyThingspeak2 = "xxx"; //Basement plenum control channel
char authBlynk[] = "xxx"; //insert token generated by Blynk
SimpleTimer timer;
int roofVent = 2; // relay for roof vent connected to GPIO2
int houseVent = 5; // relay for house vent connected to GPIO5
int ventFan = 4; // relay for ventilation fan connected to GPIO4
int i = 0; // i'm not sure what this does?
int setMaxTemp;
int setHouseOn;
int setRoofOn;
int setCancelAll;
int setAuto;
double roofDewPoint, houseDewPoint, plenumDewPoint, baseDewPoint;
float roofHum, roofTemp, medianRoofDewPoint, houseHum, houseTemp, medianHouseDewPoint, plenumHum, plenumTemp, medianPlenumDewPoint, baseHum, baseTemp, medianBaseDewPoint;
BLYNK_WRITE(V30) // set max temp for air inlet
{
BLYNK_LOG("Got new setMaxTemp value: %i", setMaxTemp = param.asInt());
//Blynk.virtualWrite(V30, 28); // check this works?
ventLogic();
}
BLYNK_WRITE(V31) // HOUSE mode
{
setHouseOn = param.asInt();
if (setHouseOn == 1) {
Blynk.virtualWrite(V23, 0); // roof
Blynk.virtualWrite(V22, 0); // auto
Blynk.virtualWrite(V21, 0); // cancel
ventLogic();
}
}
BLYNK_WRITE(V23) // ROOF mode
{
setRoofOn = param.asInt();
if (setRoofOn == 1) {
Blynk.virtualWrite(V31, 0); // house
Blynk.virtualWrite(V22, 0); // auto
Blynk.virtualWrite(V21, 0); // cancel
ventLogic();
}
}
BLYNK_WRITE(V22) // AUTO mode
{
setAuto = param.asInt();
if (setAuto == 1) {
Blynk.virtualWrite(V31, 0); // house
Blynk.virtualWrite(V23, 0); // roof
Blynk.virtualWrite(V21, 0); // cancel
ventLogic();
}
}
BLYNK_WRITE(V21) // CANCEL mode
{
setCancelAll = param.asInt();
if (setCancelAll == 1) {
Blynk.virtualWrite(V31, 0); // house
Blynk.virtualWrite(V22, 0); // auto
Blynk.virtualWrite(V23, 0); // roof
ventLogic();
}
}
void setup()
{
Serial.begin(115200);
Serial.println(F(""));
Serial.println(F("BASEMENT VENTILATION PLENUM CONTROLLER - with Thingspeak & Blynk & Running Median & Email & Twitter"));
Serial.print(F("File name: "));
Serial.println(__FILE__);
Serial.print(F("DHT LIBRARY VERSION: "));
Serial.println(DHT_LIB_VERSION);
Serial.print(F("Running Median Version: "));
Serial.println(RUNNING_MEDIAN_VERSION);
Serial.println();
WiFi.begin(ssid, password);
Serial.println(F("Where's some WiFi??"));
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println(F(""));
Serial.println(F("Found some WiFi!"));
long rssi = WiFi.RSSI();
Serial.print(F("WiFi signal strength (RSSI): "));
Serial.print(rssi);
Serial.println(F(" dBm"));
Serial.println("");
Serial.println(F("------------"));
Blynk.begin(authBlynk, ssid, password);
//while (!Blynk.connect()) {
// Wait until connected
//}
// // Send email immediately on startup
// Serial.println(F("Blynk started!"));
//Blynk.email("xx@hackermail.com", "Basement Ventilation Controller online", "It's online... ");
timer.setInterval(30002L, runningMedian); // Setup the running median function to be called every 30 seconds
timer.setInterval(2L * 60000L, dataLogging); // Setup the data logging function to be called every 120 seconds (2 mins)
timer.setInterval(6L * 60005L, ventLogic); // Setup ventilation logic function to be called every 360 seconds (6 minutes)
timer.setInterval(10L * 60008L, tweetUptime); // Setup Twitter uptime function to be called every 600 seconds (10 minutes)
pinMode(roofVent, OUTPUT);
pinMode(houseVent, OUTPUT);
pinMode(ventFan, OUTPUT);
digitalWrite(roofVent, LOW);
digitalWrite(houseVent, LOW);
digitalWrite(ventFan, HIGH);
}
void loop()
{
Blynk.run(); // Initiates Blynk
timer.run(); // Initiates SimpleTimer
}
void runningMedian()
{
int chk;
Serial.println(F("Starting the running median section..."));
Serial.println("");
delay(1800); //helps the DHT22 to work properly - it needs this long to get organisied
//roof DHT22 section
chk = DHT.read22(ROOF_DHT22_PIN); // READ DATA from ROOF sensor
roofHum = DHT.humidity;
roofTemp = DHT.temperature;
roofDewPoint = dewPoint(DHT.temperature, DHT.humidity);
medianRoofDewPoint = samplesRoof.getMedian();
samplesRoof.add(roofDewPoint); // this is the Running Median command
Serial.println(F("Roof readings"));
Serial.print(roofHum);
Serial.println("%");
Serial.print(roofTemp);
Serial.println("'C");
Serial.print(roofDewPoint);
Serial.println("'C");
Serial.print(F("Roof Dew Point (median):"));
Serial.print(medianRoofDewPoint);
Serial.println("'C");
Serial.println("");
//house DHT22 section
chk = DHT.read22(HOUSE_DHT22_PIN); // READ DATA from HOUSE sensor
houseHum = DHT.humidity;
houseTemp = DHT.temperature;
houseDewPoint = dewPoint(DHT.temperature, DHT.humidity);
medianHouseDewPoint = samplesHouse.getMedian();
samplesHouse.add(houseDewPoint);
Serial.println(F("House readings"));
Serial.print(houseHum);
Serial.println("%");
Serial.print(houseTemp);
Serial.println("'C");
Serial.print(houseDewPoint);
Serial.println("'C");
Serial.print(F("House Dew Point (median):"));
Serial.print(medianHouseDewPoint);
Serial.println("'C");
Serial.println("");
//plenum DHT22 section
chk = DHT.read22(PLENUM_DHT22_PIN); // READ DATA from PLENUM sensor
plenumHum = DHT.humidity;
plenumTemp = DHT.temperature;
plenumDewPoint = dewPoint(DHT.temperature, DHT.humidity);
medianPlenumDewPoint = samplesPlenum.getMedian();
samplesPlenum.add(plenumDewPoint);
Serial.println(F("Plenum readings"));
Serial.print(plenumHum);
Serial.println("%");
Serial.print(plenumTemp);
Serial.println("'C");
Serial.print(plenumDewPoint);
Serial.println("'C");
Serial.print(F("Plenum Dew Point (median):"));
Serial.print(medianPlenumDewPoint);
Serial.println("'C");
Serial.println("");
//basement DHT22 section
chk = DHT.read22(BASE_DHT22_PIN); // READ DATA from BASEMENT sensor
baseHum = DHT.humidity;
baseTemp = DHT.temperature;
baseDewPoint = dewPoint(DHT.temperature, DHT.humidity);
medianBaseDewPoint = samplesBase.getMedian();
samplesBase.add(baseDewPoint);
Serial.println(F("Basement readings"));
Serial.print(baseHum);
Serial.println(F("%"));
Serial.print(baseTemp);
Serial.println(F("'C"));
Serial.print(baseDewPoint);
Serial.println("'C");
Serial.print(F("Basement Dew Point (median):"));
Serial.print(medianBaseDewPoint);
Serial.println("'C");
Serial.println("");
}
void dataLogging()
{
Serial.println(F("Starting data logging function (Blynk then Thingspeak)"));
long rssi = WiFi.RSSI();
Blynk.virtualWrite(V0, rssi); // this sends the WiFi Signal Strenght to Blynk
long uptime = millis() / 60000;
Blynk.virtualWrite(V20, uptime); // this sends the program uptime to Blynk
Serial.println(F("Sending to Blynk - ROOF readings"));
Blynk.virtualWrite(V10, roofHum); // this sends the reading to the Blynk virtual pin
Serial.print(roofHum);
Serial.println("%");
Blynk.virtualWrite(V11, roofTemp); // this sends the reading to the Blynk virtual pin
Serial.print(roofTemp);
Serial.println("'C");
Blynk.virtualWrite(V14, roofDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(roofDewPoint);
Serial.println("'C");
Blynk.virtualWrite(V16, medianRoofDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(F("Roof Dew Point (median):"));
Serial.print(medianRoofDewPoint);
Serial.println("'C");
Serial.println(F("Sending to Blynk - HOUSE readings"));
Blynk.virtualWrite(V12, houseHum ); // this sends the reading to the Blynk virtual pin
Serial.print(houseHum);
Serial.println("%");
Blynk.virtualWrite(V13, houseTemp); // this sends the reading to the Blynk virtual pin
Serial.print(houseTemp);
Serial.println("'C");
Blynk.virtualWrite(V15, houseDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(houseDewPoint);
Serial.println("'C");
Blynk.virtualWrite(V17, medianHouseDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(F("House Dew Point (median):"));
Serial.print(medianHouseDewPoint);
Serial.println("'C");
Serial.println(F("Sending to Blynk - PLENUM readings"));
Blynk.virtualWrite(V1, plenumHum); // this sends the reading to the Blynk virtual pin
Serial.print(plenumHum);
Serial.println("%");
Blynk.virtualWrite(V2, plenumTemp); // this sends the reading to the Blynk virtual pin
Serial.print(plenumTemp);
Serial.println("'C");
Blynk.virtualWrite(V3, plenumDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(plenumDewPoint);
Serial.println("'C");
Blynk.virtualWrite(V18, medianPlenumDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(F("Plenum Dew Point (median):"));
Serial.print(medianPlenumDewPoint);
Serial.println("'C");
Serial.println(F("Sending to Blynk - BASEMENT readings"));
Blynk.virtualWrite(V4, baseHum ); // this sends the reading to the Blynk virtual pin
Serial.print(baseHum);
Serial.println("%");
Blynk.virtualWrite(V5, baseTemp); // this sends the reading to the Blynk virtual pin
Serial.print(baseTemp);
Serial.println("'C");
Blynk.virtualWrite(V6, baseDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(baseDewPoint);
Serial.println("'C");
Blynk.virtualWrite(V19, medianBaseDewPoint); // this sends the calculation to the Blynk virtual pin
Serial.print(F("Basement Dew Point (median):"));
Serial.print(medianBaseDewPoint);
Serial.println("'C");
Serial.println(F("Just finished the data logging Blynk section"));
Serial.println(F("Preparing Thingspeak readings"));
if (client.connect(serverThingspeak, 80))
{
String postStr = apiKeyThingspeak1;
postStr += "&field1=";
postStr += String(roofTemp);
postStr += "&field2=";
postStr += String(roofHum);
postStr += "&field3=";
postStr += String(roofDewPoint);
postStr += "&field4=";
postStr += String(houseTemp);
postStr += "&field5=";
postStr += String(houseHum);
postStr += "&field6=";
postStr += String(houseDewPoint);
postStr += "&field7=";
postStr += String(medianRoofDewPoint);
postStr += "&field8=";
postStr += String(medianHouseDewPoint);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKeyThingspeak1 + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.println(F("Just uploaded to Thingspeak Channel ID: xx"));
}
delay(10);
if (client.connect(serverThingspeak, 80))
{
String postStr = apiKeyThingspeak2;
postStr += "&field1=";
postStr += String(plenumTemp);
postStr += "&field2=";
postStr += String(plenumHum);
postStr += "&field3=";
postStr += String(plenumDewPoint);
postStr += "&field4=";
postStr += String(baseTemp);
postStr += "&field5=";
postStr += String(baseHum);
postStr += "&field6=";
postStr += String(baseDewPoint);
postStr += "&field7=";
postStr += String(medianPlenumDewPoint);
postStr += "&field8=";
postStr += String(medianBaseDewPoint);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKeyThingspeak2 + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.println(F("Just uploaded to Thingspeak Channel ID: xx"));
}
}
void tweetUptime()
{
long uptime = millis() / 60000L;
BLYNK_LOG("Tweeting every 10 minutes ;)");
Blynk.tweet(String("Basement Controller running for ") + uptime + " minutes.");
}
void ventLogic()
{
Serial.println(F("Starting the ventilation logic section. "));
Serial.print(F("_________________________SetMaxTemp (max. inlet temp) = "));
Serial.print(setMaxTemp);
Serial.println(F("'C"));
if ((setAuto == 1) && (roofTemp <= setMaxTemp) && (medianHouseDewPoint > medianRoofDewPoint) && (medianBaseDewPoint > medianRoofDewPoint))
{
digitalWrite(roofVent, HIGH); // roof vent OPEN
digitalWrite(houseVent, LOW); // house vent closed
digitalWrite(ventFan, LOW); // ventilation fan is ON
Serial.println(F("system = ROOF air inlet selected based on lowest Dew Point"));
Serial.println(F("------------"));
Blynk.virtualWrite(7, 0); //hse LED on Blynk app
Blynk.virtualWrite(8, 1023); //rof LED on Blynk app
Blynk.virtualWrite(9, 0); //bse LED on Blynk app
Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - ROOF VENT", "The ventilation fan was activated...");
Blynk.tweet((String("Basement: AUTO.ROOF - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
}
//AUTO - house vent air has lowest dew point scenario:
else if ((setAuto == 1) && (houseTemp <= setMaxTemp) && (medianRoofDewPoint > medianHouseDewPoint) && (medianBaseDewPoint > medianHouseDewPoint))
{
digitalWrite(roofVent, LOW); // roof vent closed
digitalWrite(houseVent, HIGH); // house vent OPEN
digitalWrite(ventFan, LOW); // ventilation fan is ON
Serial.println(F("system = HOUSE air inlet selected based on lowest Dew Point"));
Serial.println(F("------------"));
Blynk.virtualWrite(7, 1023); //hse LED on Blynk app
Blynk.virtualWrite(8, 0); //rof LED on Blynk app
Blynk.virtualWrite(9, 0); //bse LED on Blynk app
Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - HOUSE VENT", "The ventilation fan was activated...");
Blynk.tweet((String("Basement: AUTO.HOUSE - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
}
//AUTO - basement room air has lowest dew point scenario:
else if ((setAuto == 1) && (medianRoofDewPoint > medianBaseDewPoint) && (medianHouseDewPoint > medianBaseDewPoint))
{
digitalWrite(roofVent, LOW); // roof vent closed
digitalWrite(houseVent, LOW); // house vent closed
digitalWrite(ventFan, HIGH); // ventilation fan is off
Serial.println(F("system = BASEMENT air has the lowest Dew Point - system OFF, both vents closed."));
Serial.println(F("------------"));
Blynk.virtualWrite(7, 0); //hse LED on Blynk app
Blynk.virtualWrite(8, 0); //rof LED on Blynk app
Blynk.virtualWrite(9, 1023); //bse LED on Blynk app
Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan OFF", "The ventilation fan status has changed...");
Blynk.tweet((String("Basement: AUTO. System off - DewPoint's = R: ") + medianRoofDewPoint + ("H: ") + medianHouseDewPoint + ("P: ") + medianPlenumDewPoint + ("B: ") + medianBaseDewPoint) + ("'C"));
}
else if ((setCancelAll == 1))
{
digitalWrite(roofVent, LOW); // roof vent CLOSED
digitalWrite(houseVent, LOW); // house vent CLOSED
digitalWrite(ventFan, HIGH); // ventilation fan is OFF
Serial.println(F("system = CANCEL - ALL inlets CLOSED, fan OFF"));
Serial.println(F("------------"));
Blynk.virtualWrite(6, 1023); //prg LED on Blynk app
Blynk.virtualWrite(7, 0); //hse LED on Blynk app
Blynk.virtualWrite(8, 0); //rof LED on Blynk app
Blynk.virtualWrite(9, 0); //bse LED on Blynk app
Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan OFF - CANCEL PROGRAM", "The ventilation fan was de-activated...");
Blynk.tweet((String("Basement: CANCEL - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
}
else if ((setRoofOn == 1))
{
digitalWrite(roofVent, HIGH); // roof vent OPEN
digitalWrite(houseVent, LOW); // house vent closed
digitalWrite(ventFan, LOW); // ventilation fan is ON
Serial.println(F("system = Roof Manual - ROOF inlet is open, FAN is on"));
Serial.println(F("------------"));
Blynk.virtualWrite(7, 0); //hse LED on Blynk app
Blynk.virtualWrite(8, 1023); //rof LED on Blynk app
Blynk.virtualWrite(9, 0); //bse LED on Blynk app
Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - Roof Manual", "The ventilation fan was activated...");
Blynk.tweet((String("Basement: MAN.ROOF - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
}
else if ((setHouseOn == 1))
{
digitalWrite(roofVent, LOW); // roof vent CLOSED
digitalWrite(houseVent, HIGH); // house vent OPEN
digitalWrite(ventFan, LOW); // ventilation fan is ON
Serial.println(F("system = House Manual - HOUSE inlet is open, FAN is on"));
Serial.println(F("------------"));
Blynk.virtualWrite(7, 1023); //hse LED on Blynk app
Blynk.virtualWrite(8, 0); //rof LED on Blynk app
Blynk.virtualWrite(9, 0); //bse LED on Blynk app
Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - House Manual", "The ventilation fan was activated...");
Blynk.tweet((String("Basement: MAN.HOUSE - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
}
}
/*-----( Declare User-written Functions )-----*/
// delta max = 0.6544 wrt dewPoint()
// 5x faster than dewPoint()
// reference: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity / 100);
double Td = (b * temp) / (a - temp);
return Td;
}
// dewPoint function NOAA
// reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : http://www.colorado.edu/geography/weather_station/Geog_site/about.htm
//
double dewPoint(double celsius, double humidity)
{
// (1) Saturation Vapor Pressure = ESGG(T)
double RATIO = 373.15 / (273.15 + celsius);
double RHS = -7.90298 * (RATIO - 1);
RHS += 5.02808 * log10(RATIO);
RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1 / RATIO ))) - 1) ;
RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
RHS += log10(1013.246);
// factor -3 is to adjust units - Vapor Pressure SVP * humidity
double VP = pow(10, RHS - 3) * humidity;
// (2) DEWPOINT = F(Vapor Pressure)
double T = log(VP / 0.61078); // temp var
return (241.88 * T) / (17.558 - T);
}
/* ( THE END ) */
have I done something wrong??
OK, so i have disabled a few of the blynk.things in the void ventLogic() and seems that when i press a button on the app - the choice sticks, and even after i press a different button, ithe software stays in the selection previously made.
the app screen changes, but the serial monitor indicates the wrong selection…
Hey, it’s really lot’s of code… please try to remove things until you narrow the problem…
Yeah solved now, sorry, i should have update this post. It must have been a random connection issue?
Usually there is always some reason for that.
I took a screenshot of the serial print. I will post it later.
But I assumed it was probably my end, like router or something?
@Dave1829 what exactly did you do to make it work because it seems that I am having the same problem as yours.Thank you in advance!
Hi, I think it was resolved after multiple router resets (I think it was a full power down of everything for a few mins).
Very much seemed like a network related issue, rather than code or Blynk issue…
Hi Dave,
My Code is quite simillar to yours but much smaller. Still I get lots of disconnections when I run Blynk app. I have increased the intervals also increased refresh time of blynk app items to 3 seconds. That improved a bit but still get disconnects some times!
You think it’s a router issue too?
Here is the code;
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
boolean system_armed = false;
boolean detection = false;
boolean siren = false;
boolean panic = false;
char* FRONT_DOOR = ".....";
char* GARAGE_DOOR =".....";
char* BACK_YARD = ".....";
char* PIR = ".....";
BLYNK_WRITE(V10) {
if (param.asInt() == 1) {
siren = false;
}
}
BLYNK_WRITE(V11) {
if (param.asInt() == 1) {
FRONT_DOOR = ".....";
GARAGE_DOOR =".....";
BACK_YARD = ".....";
PIR = ".....";
}
}
BLYNK_WRITE(V12) {
if (param.asInt() == 1) {
system_armed = true;
}else{
system_armed = false;
}
}
BLYNK_WRITE(V13) {
if (param.asInt() == 1) {
panic = true;
}else{
panic = false;
}
}
BLYNK_CONNECTED() {
Blynk.syncVirtual(V10, V11, V12,V13);
}
char auth[] = "xxx";
SimpleTimer timer1;
SimpleTimer timer2;
void Virtual14()
{
if (system_armed) {
FRONT_DOOR = "(( ALARM ))";
detection = true;
siren = true;
}
}
void Virtual12()
{
if (system_armed) {
GARAGE_DOOR = "(( ALARM ))";
detection = true;
siren = true;
}
}
void Virtual13()
{
if (system_armed) {
BACK_YARD = "(( ALARM ))";
detection = true;
siren = true;
}
}
void Virtual15()
{
if (system_armed) {
PIR = "(( ALARM ))";
detection = true;
siren = true;
}
}
void Actions()
{
if (siren or panic) {
digitalWrite(2, HIGH);
Blynk.virtualWrite(V4,"(((( O N ))))");
}else{
digitalWrite(2, LOW);
Blynk.virtualWrite(V4,".....");
}
if (system_armed) {
Blynk.virtualWrite(V5,"ARMED");
}else{
Blynk.virtualWrite(V5,"DIS-ARMED");
}
Blynk.virtualWrite(V0,FRONT_DOOR);
Blynk.virtualWrite(V1,GARAGE_DOOR);
Blynk.virtualWrite(V2,BACK_YARD);
Blynk.virtualWrite(V3,PIR);
}
void notifyDetection()
{
if (detection) {
BLYNK_LOG("Presense Detected.");
Blynk.notify("Presense Detected!");
Blynk.email("xxx@gmail.com", "Subject: Home Security", "Presence Detected...");
detection = false;
}
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, "xxx", "xxx");
while (Blynk.connect() == false) {
// Wait until connected
}
Blynk.notify("Device started");
timer1.setInterval(15500L, notifyDetection);
timer2.setInterval(3000L, Actions);
pinMode(14, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
pinMode(15, INPUT_PULLUP);
pinMode(2, OUTPUT);
attachInterrupt(digitalPinToInterrupt(14), Virtual14, FALLING);
attachInterrupt(digitalPinToInterrupt(12), Virtual12, FALLING);
attachInterrupt(digitalPinToInterrupt(13), Virtual13, FALLING);
attachInterrupt(digitalPinToInterrupt(15), Virtual15, FALLING);
}
void loop()
{
Blynk.run();
timer1.run();
timer2.run();
}
Do your problems go away when you comment out your timers?
Yes it does.