Set up a new project as shown below (3 value displays, V5 temp + humidity, V7 WiFi, V4 pressure).
Ensure the app frequency for each widget is set as PUSH.
Mine has been running for 1100 seconds without any problems (on a WeMos but they are pretty much the same as a nodemcu).
Then run this code for a few hours with the token from the new project.
// breakage.ino
#define BLYNK_DEBUG // Optional, this enables lots of prints
#define BLYNK_PRINT Serial
#include <ArduinoOTA.h>// OTA
//#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
char auth[] = "enter new token here";
char ssid[] = "ReliableWiFi_2.4";//;"Blynk"
char pass[] = "27051977";//"12345678";
char server[] = "blynk-cloud.com";
#define DHTPIN 0 // What digital pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21 // DHT 21, AM2301
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;
#define I2C_SCL 12 // Barometric Pressure Sensor (BMP085) D6 nodemcu
#define I2C_SDA 13 // D7 nodemcu
Adafruit_BMP085 bmp;
float dst, bt, bp, ba;
char dstmp[20], btmp[20], bprs[20], balt[20];
bool bmp085_present = true;
void sendSensor()
{
/*
float h = dht.readHumidity();
float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
*/
Serial.println("Temperature and Humidity checked");
Blynk.virtualWrite(V5, "Checked: " + String(millis() / 1000));
}
void setup()
{
Serial.begin(115200); // Debug console
ArduinoOTA.begin();
ArduinoOTA.setHostname("Svet_OTA");
Blynk.begin(auth, ssid, pass, server);
dht.begin();
Wire.begin(I2C_SDA, I2C_SCL);
delay(10);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
//while (1) {}
}
timer.setInterval(5000L, sendSensor);
timer.setInterval(2000L, sendUptime);//bmp180
timer.setInterval(10000L, sendWifi);
}
void sendWifi() {
Blynk.virtualWrite(7, map(WiFi.RSSI(), -105, -40, 0, 100) );
Serial.print("WiFi Strength: ");
Serial.println(map(WiFi.RSSI(), -105, -40, 0, 100));
}
void sendUptime()
{
/*
float bp = bmp.readPressure()/1;
Blynk.virtualWrite(1, bp); // virtual pin
//float ba = bmp.readAltitude();
Blynk.virtualWrite(2, bp/133.3); // virtual pin
float bt = bmp.readTemperature();
Blynk.virtualWrite(3, bt); // virtual pin
float dst = bmp.readSealevelPressure(520)/100;
Blynk.virtualWrite(4, dst); // virtual pin
*/
Serial.println("Pressure checked");
Blynk.virtualWrite(4, "Checked: " + String(millis() / 1000));
}
void loop()
{
ArduinoOTA.handle();
Blynk.run();
timer.run(); // Initiates SimpleTimer
}
This doesn’t fix your problem but it confirms Blynk is fine.
Your problem will relate to one of your sensors.
Remove the comments against one sensor and test.
Add back the comments and test the other one.
Then test both.