Esp8266 เวลาเน็ตหลุดต่อเองได้บ้าง ไม่ได้บ้าง ต้องกด Reset ใหม่ถึงจะต่อได้ ต้องแก้ไขอย่างไรครับ

CODE

#define BLYNK_PRINT Serial
char auth[] = "e1Qz0CW3Jt5igSV8E5MQ8_SqFCJtv8A7";
char ssid[] = "HOME_JAIPRASERT2.4GHz";
char pass[] = "06037590";
char server[] = "oasiskit.com";
int port = 8080;

bool isFirstConnect = true;
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

WidgetLED ledrelay1(V10);
WidgetLED ledrelay2(V11);

BLYNK_CONNECTED()
{
  if (isFirstConnect) {
    Blynk.syncVirtual(V0, V1);
    isFirstConnect = false;
  }

}
BLYNK_WRITE(V0)
{ digitalWrite(D5, HIGH);
  if (param.asInt() == 1)
  {
    Blynk.virtualWrite(V0, 1);
    digitalWrite(D1, LOW);
    digitalWrite(D6, HIGH);
    ledrelay1.on();
  }

  else {
    Blynk.virtualWrite(V0, 0);
    digitalWrite(D1, HIGH);
    digitalWrite(D6, LOW);
    ledrelay1.off();
  }
}
BLYNK_WRITE(V1)
{
  if (param.asInt() == 1)
  { Blynk.virtualWrite(V1, 1);
    digitalWrite(D2, LOW);
    digitalWrite(D7, HIGH);
    ledrelay2.on();
  }

  else
  {
    Blynk.virtualWrite(V1, 0);
    digitalWrite(D2, HIGH);
    digitalWrite(D7, LOW);
    ledrelay2.off();
  }
}

BLYNK_WRITE(V3)
{
  if (param.asInt() == 1)
    digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D6, LOW);
  digitalWrite(D7, LOW);
  Blynk.virtualWrite(V0, 0);
  Blynk.virtualWrite(V1, 0);
  ledrelay1.off();
  ledrelay2.off();
}
BLYNK_WRITE(V2)
{
  if (param.asInt() == 1)
    digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D6, HIGH);
  digitalWrite(D7, HIGH);
  Blynk.virtualWrite(V0, 1);
  Blynk.virtualWrite(V1, 1);
  ledrelay1.on();
  ledrelay2.on();
}
BLYNK_WRITE(V4)
{
  if (param.asInt() == 1)
  {
    Blynk.virtualWrite(V0, 1);
    digitalWrite(D1, LOW);
    digitalWrite(D6, HIGH);
    ledrelay1.on();
  }

  else {
    Blynk.virtualWrite(V0, 0);
    digitalWrite(D1, HIGH);
    digitalWrite(D6, LOW);
    ledrelay1.off();
  }
}

void setup()
{
  pinMode(D1, OUTPUT);///////////////Relay 1
  pinMode(D2, OUTPUT);///////////////Relay2
  pinMode(D5, OUTPUT);///////////////wifi status
  pinMode(D6, OUTPUT);///////////////led blue
  pinMode(D7, OUTPUT);///////////////led red
  digitalWrite(D1, HIGH);////////////set relay 1 off
  digitalWrite(D2, HIGH);////////////set relay 2 off
  WiFi.begin(ssid, pass);////////////connect wifi
  Blynk.config(auth,server,port);////set blynk
  Blynk.connect();///////////////////blynk connect
}
void loop() {
  while (WiFi.status() != WL_CONNECTED) {
    digitalWrite(D5, HIGH);
    delay(200);
    digitalWrite(D5, LOW);
    delay(200);
  }
  digitalWrite(D5, HIGH);
  Blynk.run();
}

เน็ตหลุดนี้คือยังไงครับ คือ wifi ต่ออยู่ แต่ไม่มีเน็ต หรือ wifi หลุด เน็ตหลุดไปด้วย เวลากลับมาต่อใหม่ ก็เชื่อม wifi ไม่ได้

หลุดแต่ต่อไม่ได้ครับ ผมทดลองจำลองเหตุการณ์โดยการปิด-เปิดเร้าเตอร์ใหม่ ก็ต่อครับ แต่พอสถานะการณ์จริงมันต่อบ้างไม่ต่อบ้าง อารมเหมือนมันค้างต้องกด RESET ใหม่อย่างเดียวครับ

ลองเอาโค้ตชุดนี้ไปใส่ใน void loop ดูครับ

void loop()
{


if (WiFi.status() != WL_CONNECTED) 
  {
 delay(250);
 digitalWrite(WIFI_LED,HIGH);
 Serial.print(".");

  }

if(WiFi.status() == WL_CONNECTED){
    if (!Blynk.connected()) {
    if(Blynk.connect()) {
      BLYNK_LOG("Reconnected");
      

    } else {
      
      BLYNK_LOG("Not reconnected");
      delay(250);

   
     }
    }
    if(Blynk.connected()) {   // to ensure that Blynk.run() www.eleceasy.com
       
    Blynk.run();
  }
    
}
}

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

ขอบคุณครับ เดี๋ยวอีกอาทิตย์นึงผมมารายงานผล

อัพเดทครับ

  • ตอนนี้ยังหลุดอยู่แก้ไขโดยสั่งให้ รีเซ็ตใหม่ ปัญหาที่เจอตอนนี้คือมันจะรีเซ็ตเองทุกๆ24ชั่วโมงนับจาก เวลาหลุดก่อนหน้านี้ครับ

รีเซต แล้วมันกลับมาใช้ได้ปกติ ไหมครับ