Hi,
I’m working on a full enviroment control system in a grow tent with a Blynk controller.
The setup is easy:
NodeMcu v3, BME280, DS18B20, 16x2 LCD display, 4 relay board.
I’m still in the testing phase, but i have a strange issue. At 2:01 AM not everyday but every second-third day my Blynk application says my NodeMcu is offline. But if i check my router, NodeMcu is online, even if i ping it every package is arriving, but my Blynk application doesn’t see the hardware.
If u power up the NodeMcu again, my Blynk application see the hardware again.
// V1 - Slider - Hőmérséklet állító 10-30
// V2 - Slider - Para állító 30-70
// V3 - Páratartaloma
// V4 - Hőmérséklet
// V5 - Légnyomás
// V6 - Lampa visszajelzo
// V7 - Hősugárzó visszajelzo
// V8 - Keringető visszajelzo
// V9 - Parasito visszajelző
// V10 - Idő megadás
// V11 - Föld hőmérséklet
// D8 - Keringeto
// D7 - Parasito
// D6 - Hosugarzo
// D5 - Lampa
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
BlynkTimer timer;
WidgetRTC rtc;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
#define Lampa V6
#define Hosugarzo V7
#define Hosugarzo_min V12
#define Hosugarzo_max V13
#define Keringeto V8
#define Parasito V9
#define Parasito_min V14
#define Parasito_max V15
#define ONE_WIRE_BUS 17
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
char auth[] = "";
char ssid[] = "";
char pass[] = "";
long kezdomp;
long stopmp;
long aktualismp;
int Para_min_limit;
int Para_max_limit;
int Para_kikapcs_limit;
int Hofok_min_limit;
int Hofok_max_limit;
const int Lampa_rele = 14;
const int Hosugarzo_rele = 12;
const int Parasito_rele = 13;
const int Keringeto_rele = 15;
void setup()
{
pinMode(Lampa_rele, OUTPUT);
pinMode(Hosugarzo_rele, OUTPUT);
pinMode(Parasito_rele, OUTPUT);
pinMode(Keringeto_rele, OUTPUT);
digitalWrite(Lampa_rele, HIGH);
digitalWrite(Hosugarzo_rele, HIGH);
digitalWrite(Parasito_rele, HIGH);
digitalWrite(Keringeto_rele, HIGH);
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
lcd.begin(16,2);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
int mytimeout = millis() / 1000;
while (Blynk.connect() == false)
{
if((millis() / 1000) > mytimeout + 8)
{
break;
}
}
rtc.begin();
sensors.begin();
timer.setInterval(30000L, CheckConnection);
timer.setInterval(10000L, LampaVezerles);
timer.setInterval(1000L, KornyezetiVezerles);
bool status;
status = bme.begin();
}
BLYNK_CONNECTED()
{
Blynk.syncAll();
}
BLYNK_WRITE(V1)
{
int pinValue = param.asInt();
Hofok_min_limit = pinValue * 0.9;
Blynk.virtualWrite(Hosugarzo_min, Hofok_min_limit);
Hofok_max_limit = pinValue * 1.1;
Blynk.virtualWrite(Hosugarzo_max, Hofok_max_limit);
Serial.println("Hofok: ");
Serial.println(pinValue);
}
BLYNK_WRITE(V2)
{
int pinValue = param.asInt();
Para_min_limit = pinValue * 0.8;
Blynk.virtualWrite(Parasito_min, Para_min_limit);
Para_max_limit = pinValue * 1.3;
Blynk.virtualWrite(Parasito_max, Para_max_limit);
Para_kikapcs_limit = pinValue * 1.4;
Serial.println("Para: ");
Serial.println(pinValue);
}
void LampaVezerles()
{
Blynk.syncVirtual(V10);
}
BLYNK_WRITE(V10)
{
TimeInputParam t(param);
aktualismp = ((hour() * 3600) + (minute() * 60) + second());
kezdomp = (t.getStartHour() * 3600) + (t.getStartMinute() * 60);
Serial.print(aktualismp);
Serial.print(" - ");
Serial.println(kezdomp);
if(aktualismp >= kezdomp)
{
if(aktualismp <= kezdomp + 90)
{
digitalWrite(Lampa_rele, LOW);
Blynk.virtualWrite(Lampa, 1);
Serial.print("Lampa felkapcsolva");
Serial.println();
lcd.setCursor(12,1);
lcd.print("F");
}
}
else
{
}
stopmp = (t.getStopHour() * 3600) + (t.getStopMinute() * 60);
if(aktualismp >= stopmp)
{
digitalWrite(Lampa_rele, HIGH);
Blynk.virtualWrite(Lampa, 0);
Serial.print("Lampa lekapcsolva");
Serial.println();
lcd.setCursor(12,1);
lcd.print("L");
if(aktualismp <= stopmp + 90)
{
digitalWrite(Lampa_rele, HIGH);
Blynk.virtualWrite(Lampa, 0);
Serial.print("Lampa lekapcsolva");
Serial.println();
lcd.setCursor(12,1);
lcd.print("L");
}
}
else{
if(aktualismp >= kezdomp)
{
digitalWrite(Lampa_rele, LOW);
Blynk.virtualWrite(Lampa, 1);
Serial.print("Lampa felkapcsolva");
Serial.println();
lcd.setCursor(12,1);
lcd.print("F");
}
}
}
void KornyezetiVezerles()
{
float h = bme.readHumidity();
float t = bme.readTemperature();
float p = bme.readPressure() / 100.0F;
sensors.requestTemperatures();
int s = sensors.getTempCByIndex(0);
if (isnan(h) || isnan(t) || isnan(p))
{
Serial.println("Nincs BME csatlakoztatva !");
return;
}
Blynk.virtualWrite(V3, h);
Blynk.virtualWrite(V4, t);
Blynk.virtualWrite(V5, p);
Blynk.virtualWrite(V11, s);
Serial.print("Para: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print(" - Hofok: ");
Serial.print(t);
Serial.print(" *C");
Serial.print(" - Legnyomas: ");
Serial.print(p);
Serial.print(" mbar");
Serial.print(" - Fold hofok: ");
Serial.print(s);
Serial.println(" *C");
lcd.print(h);
lcd.print("% ");
lcd.setCursor(0,1);
lcd.print(t);
lcd.print("*C ");
if(t <= Hofok_min_limit){
digitalWrite(Hosugarzo_rele, LOW);
Blynk.virtualWrite(Hosugarzo, 1);
Serial.print("Hosugarzo felkapcsolva");
Serial.println();
}
else{
}
if(t >= Hofok_max_limit)
{
digitalWrite(Hosugarzo_rele, HIGH);
Blynk.virtualWrite(Hosugarzo, 0);
Serial.print("Hosugarzo lekapcsolva");
Serial.println();
}
else{
}
if(h <= Para_min_limit){
digitalWrite(Keringeto_rele, HIGH);
digitalWrite(Parasito_rele, LOW);
Blynk.virtualWrite(Keringeto, 0);
Blynk.virtualWrite(Parasito, 1);
Serial.println("Keringeto lekapcsolva");
Serial.println("Parasito felkapcsolva");
Serial.println();
}
else{
digitalWrite(Keringeto_rele, LOW);
Blynk.virtualWrite(Keringeto, 1);
Serial.println("Keringeto felkapcsolva");
}
if(h >= Para_max_limit)
{
digitalWrite(Keringeto_rele, LOW);
digitalWrite(Parasito_rele, HIGH);
Blynk.virtualWrite(Keringeto, 1);
Blynk.virtualWrite(Parasito, 0);
Serial.println("Keringeto felkapcsolva");
Serial.println("Parasito lekapcsolva");
Serial.println();
}
else{
}
}
void CheckConnection(){
if(!Blynk.connected()){
Serial.println("Nincs felcsatlakozva a Blynk szerverre");
Blynk.connect();
}
else{
Serial.println("Csatlakoztatva a Blynk szerverre");
}
}
void loop()
{
Blynk.run();
timer.run();
}
I have a plus void for checking connection:
void CheckConnection(){
if(!Blynk.connected()){
Serial.println("Nincs felcsatlakozva a Blynk szerverre");
Blynk.connect();
}
else{
Serial.println("Csatlakoztatva a Blynk szerverre");
}
}
But no seccess. Anybody a solution?