Esp8266 ไม่เชื่อมต่อไวไฟ


ตัดออกแล้ว อัพใหม่แล้วค่ะ

วางโค้ตที่ใช้หน่อยครับ

void Line_Notify1(String message1) ;
#include <TridentTD_LineNotify.h>
#include <ESP8266WiFi.h>
#define WIFI_SSID "Phai_2.4GHz"
#define WIFI_PASSWORD "0633505650"
#define LINE_TOKEN_PIR "Y8LAmt81Iraxyfjkb9KGnR5jUrLmd5WPtLcxKJX1Tqg" 
#define PirPin D6

String message1 = "%E0%B8%A1%E0%B8%B5%E0%B8%9E%E0%B8%B1%E0%B8%AA%E0%B8%94%E0%B8%B8%E0%B8%A1%E0%B8%B2%E0%B8%AA%E0%B9%88%E0%B8%87%E0%B9%81%E0%B8%A5%E0%B9%89%E0%B8%A7";
bool beep_state = false;
bool send_state = false;
uint32_t ts, ts1, ts2;
void setup() {
  Serial.begin(115200);
  Serial.println();
  pinMode(PirPin, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
 // dht.begin();
  Serial.println("connecting");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  delay(10000);
  Serial.println("Pir Ready!!");
  //read_sensor();
  ts = ts1 = ts2 = millis();
}
void loop() {
  ts = millis();
  if (WiFi.status() == WL_CONNECTED) {
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, HIGH);
  }
    
  if ((ts - ts1 >= 5000) && (beep_state == true)) {
    beep_state = false;
  } 
  
  if ((digitalRead(PirPin) == HIGH) && (beep_state == false) && (WiFi.status() == WL_CONNECTED)) {
    while (digitalRead(PirPin) == HIGH) delay(100);
    Serial.println("Detect !");
    Line_Notify1(message1);
    beep_state = true;
  }
  delay(10);
}
void Line_Notify1(String message) {
  WiFiClientSecure client;
  client.setInsecure();//skip verification
  if (!client.connect("notify-api.line.me", 443)) 
{
    Serial.println("connection failed");
    delay(2000);
    return;
  }
  String req = "";
  req += "POST /api/notify HTTP/1.1\r\n";
  req += "Host: notify-api.line.me\r\n";
  req += "Authorization: Bearer " + String(LINE_TOKEN_PIR) + "\r\n";
  req += "Cache-Control: no-cache\r\n";
  req += "User-Agent: ESP8266\r\n";
  req += "Content-Type: application/x-www-form-urlencoded\r\n";
  req += "Content-Length: " + String(String("message=" + message1).length()) + "\r\n";
  req += "\r\n";
  req += "message=" + message1;
  // Serial.println(req);
  client.print(req);
  delay(20);
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      break;
    }
  }
}

ลองดูครับ


#include <ESP8266WiFi.h>
#define SSID "Phai_2.4GHz"
#define PASSWORD "0633505650"
#define LINE_TOKEN "Y8LAmt81Iraxyfjkb9KGnR5jUrLmd5WPtLcxKJX1Tqg"



#include <TridentTD_LineNotify.h>
String string0 = "--สวัสดีจ้า--";
String string1 = "Detect !";


#define PirPin D6
bool beep_state = false;
bool send_state = false;
uint32_t ts, ts1, ts2;




void setup() {
  Serial.begin(115200);
  Serial.println();
  pinMode(PirPin, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);


  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(400);
  }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());

  // กำหนด Line Token
  LINE.setToken(LINE_TOKEN);

  LINE.notify(string0);


  Serial.println("Pir Ready!!");
  //read_sensor();
  ts = ts1 = ts2 = millis();
}





void loop() {
  ts = millis();
  if (WiFi.status() == WL_CONNECTED) {
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, HIGH);
  }

  if ((ts - ts1 >= 5000) && (beep_state == true)) {
    beep_state = false;
  }

  if ((digitalRead(PirPin) == HIGH) && (beep_state == false) && (WiFi.status() == WL_CONNECTED)) {
    while (digitalRead(PirPin) == HIGH) delay(100);
    Serial.println("Detect !");
    LINE.notify(string1);
    beep_state = true;
  }
  delay(10);
}

ได้แล้วค่ะๆๆๆ ขอบคุณมากๆนะคะ

ขอสอบถามหน่อยค่ะ มันแจ้งเตือนมาแล้ว แต่ว่ามาทีเดียวเองค่ะ เกิดจากอะไรหรอคะ

มันขึ้นข้อความว่าอะไรครับ

  1. –สวัสดีจ้า–
    2.Detect !


เปลี่ยนข้อความค่ะ ต้องกดรีเซ็ตถึงจะแจ้งเตือนครั้งต่อไปให้

ผมไม่ได้ Focus เรื่องของอุปกรณ์เลยครับ เพียงแต่ปรับแต่ง code ให้มันเชื่อมต่อ Wifi + ส่ง line ได้
1

  1. –สวัสดีจ้า-- จะส่งแค่ครั้งเดียว ตอนทุกครั้งที่ ESP8266 Reboot ใหม่ เพราะอยู่ใน void setup มันอ่านแค่ครั้งเดียวแล้วส่ง Line แค่ครั้งเดียว

  1. Detect ! ส่วนนี้วน loop ครับจะส่ง line ทุกครั้ง ถ้าอุปกรณ์ มันทำงาน

ส่วนการปรับแต่ง code ต้องให้ผู้รู้ช่วยดูกันอีกแรงนะครับ

1 Likes

ขอบคุณมากๆๆๆๆๆเลยค่ะ