Blynk จู่ๆก็ offline และสักพัก online สลับกันไปมาครับ nodemcu-32s

#define BLYNK_TEMPLATE_ID "TMPL6FEq31mZE"
#define BLYNK_TEMPLATE_NAME "ESPTemp"
#define BLYNK_AUTH_TOKEN "IaVyBVwgRhsYR4CdZBZvN6F87uUB6Qj2"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <HTTPClient.h>
#include <DHT.h>
#include <TridentTD_LineNotify.h>



#define DHTPIN 18
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define LINE_TOKEN  "BjtdvhxnNETLGWR5dDkzcqhjuZe5dGgthvnxS3rKeOf"
#define BLYNK_PRINT Serial

char auth[] = BLYNK_AUTH_TOKEN;

char ssid[] = "Router CCTV_2.4GHz";
char pass[] = "Mch@11192";

const int relayPin1 = 25;
bool relay1Notified = false;
bool relayState = LOW;

const int buzzz = 5;

const int mqPin = 35; 
const float R0 = 10;  

unsigned long previousMillis = 0;
const long interval = 30000;

String GOOGLE_SCRIPT_ID = "AKfycbyp4HIF2ud1lvmnvQCpWQc8hGbgwKzRigQtbTRE5kykGaO0mkN4sRMJvxbkrBLMRW_l_w";

void setup() {
  Serial.begin(115200);
  pinMode(relayPin1, OUTPUT);
  pinMode(buzzz, OUTPUT);
  Serial.println(LINE.getVersion());
  Blynk.begin(auth, ssid, pass);
  dht.begin();
  LINE.setToken(LINE_TOKEN);

}

BLYNK_WRITE(V2){
  int relayButtonState = param.asInt();

  // ตรวจสอบการกดปุ่มและอัปเดตสถานะของรีเลย์
  if (relayButtonState == HIGH) {
    relayState = !relayState; // เปลี่ยนสถานะของรีเลย์
    digitalWrite(relayPin1, relayState);
    
    if (relayState == HIGH) {
      LINE.notify("เปิดการดูดความชื้นเปิด");
    } 
  }
  if (relayButtonState == LOW){
    relayState = !relayState ;
    digitalWrite(relayPin1, relayState);

    if (relayState == LOW) {
      LINE.notify("เครื่องดูดความชื้นปิด");
    }
  }
}


void loop() {
  unsigned long currentMillis = millis();

  int sensorValue = analogRead(mqPin);
  float Rs_R0 = (1023.0 / sensorValue - 1) * R0; 
  float ppm = convertToPPM(Rs_R0); // แปลงค่าความต้านทานเป็น PPM
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Blynk.virtualWrite(V0, t);
  Blynk.virtualWrite(V1, h);
  Blynk.virtualWrite(V3, ppm);
  Serial.print("Temperature : ");
  Serial.print(t);
  Serial.print("    Humidity : ");
  Serial.println(h);
  Serial.print("Smok PPM: ");
  Serial.println(ppm);
  
  Blynk.run();
  delay(15000);
  if(t >= 27){
    LINE.notify("อุณหภูมิสูง = " + String(t) + " C");
  }
  if(h >= 80){
    LINE.notify("ความชื้นสูง = " + String(h) + " %");
  }
  if(ppm > 20){
    LINE.notify("ค่าsmok = " + String(ppm) + " PPM");
    digitalWrite(buzzz, HIGH);
  }
  if (currentMillis - previousMillis >= interval) {
    HTTPClient http;
    String url = "https://script.google.com/macros/s/" + GOOGLE_SCRIPT_ID + "/exec?temp=" + t + "&humi=" + h + "&ppm=" + ppm ;
    Serial.println("Making a request");
    http.begin(url.c_str()); //Specify the URL and certificate
    http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
    int httpCode = http.GET();
    String payload;
    if (httpCode > 0) { 
      payload = http.getString();
      Serial.println(httpCode);
      Serial.println(payload);
    }   else {
      Serial.println("Error on HTTP request");
    }

    http.end();
    previousMillis = currentMillis;
  }

}

float convertToPPM(float Rs_R0) {
  float A = 1.0;
  float B = 1.0;
  return A * pow(Rs_R0, B);
}

เอา log มาดูครับ มันน่าจะรีเซตตัวเองรึป่าว

พอดี เครื่องพี่เขาเอาไปติดแล้วครับไม่ได้อยู่ที่ผมแล้วครับ

คือแบบ ผ่านไป 4-12 ชม หรือบางที่ 1-2วันจะเป็นแบบนี้ครับ ต้องเปิดปิดสวิตส์ไฟใหม่ อยากรู้สาเหตุเฉยๆครับ

มันมีปัญหาเรื่องนี้อยู่แล้วครับ น่าจะมาจาก server blynk เองคนใช้เยอะมันก็อาจจะมีปัญหาช่วงคงใช้เยอะ หรือ แอพเรามีการเรียกการใช้งานไปที่ blynk มากไป server เขาจะมองว่าเป็นสแปม และดีดเราออกได้เหมือนกันครับ

ต้องเทียบว่าเราต่อ wifi ปกติไม่ใช้ blynk เป็นไหม

ไม่เป็นครับเพราะ sheet มีการบันทึกค่าอยู่ครับ ปัญหามีแค่ blynk ครับพี่

ก็แสดงว่าเป็นปัญหาตามที่บอก เพราะงั้นต้องเช็คว่าถ้าเชื่อม blynk ไม่ได้ ให้ทำการ ESP.reset(); ครับ จะช่วยให้กลับมาต่อได้

เราใช้นี่ในโค้ดของเราได้ไหมครับ แบบให้ตั้งเวลา การรีเอง แบบ auto ทุกๆ 23.50 แบบนี้ครับ

ได้หมดครับ แต่จะมีปัญหาว่าวงจรเราจะเอาเวลาจากไหนมาเป็นเกณฑ์ เป็นผมถ้าไม่มีวงจร rtc อยู่ก็จะนับเวลาถอยหลังเอาเวลาที่ต่อ blynk ไม่ได้ ถึงจะนับเวลาถอยหลังรีเซต

ผมยังไม่ได้แก้ มาวันนี้ ไม่สลับ offline แล้ว เป็น online ยาวเลย
ผมงงมาก

อาจจะขึ้นอยู่กับ จำนวนผู้ใช้มากน้อยด้วยรึป่าวครับ