ตัว NodeMCU เชื่อมเข้า WIFI ได้แต่ไม่ทำงานครับ

ผมเขียนให้ NodeMCU เชื่อม WIFI และติด Censor ไว้เพื่อให้ส่งข้อความเข้า LINE ครับ ตรวจโปรแกรมผ่านแล้วลงบอร์ดได้ แต่พอเสียบทดลองตัว NodeMCU เชื่อม WIFI ได้ตัว Censor ก็มีไฟกระพริบตอนเอามือปัด แต่ไม่มีข้อความส่งเข้ามาใน LINE เลยครับ ต้องทำยังไงครับ

มี code ที่เขียนมั๊ยครับ เอามาลงให้ดูหน่อย แล้ว Sensor ที่ว่าคือ Sensor อะไรหรือครับ คือข้อมูลที่ให้ค่อนข้างน้อยครับมองภาพไม่ออก

อันนี้ตัว code ครับ

อันนี้ตัว Censer ครับ

เรื่อง Line massage ผมของเสนอ Library นี้ ครับ เพราะใช้ง่ายกว่าครับ (เค้ารวบรวม Code ไว้แล้ว เราหยิบใช้ได้เลย)
ไม่ต้องเขียน code ติดต่อ line ลงใน Sketch
TridentTD_LineNotify

แนวการทดสอบคือ เป็นขั้นๆ นะครับ (แค่แนะนำครับ)

  1. Node MCU ESP8266 ของคุณสามารถเชื่อมต่อ Wifi ได้แล้ว ใน Void setup เราก็เขียนคำสั่ง ให้ส่ง Line มา เพื่อยืนยันว่ามันส่งมาได้จริง
  2. จากนั้น ค่อยเอา code sensor มาใส่เข้าไปอีกทีครับ

ลองดูตัวอย่างนี้ครับ

#include <TridentTD_LineNotify.h>

#define SSID        "--------------------"
#define PASSWORD    "--------------------"
#define LINE_TOKEN  "--------------------"

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println(LINE.getVersion());
  
  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("อุณหภูมิ เกินกำหนด");

 
}

void loop() {
  delay(1);
}

ถ้ามันทำงานปกติ ค่อยเอา code ของ Sensor มาใส่อีกที

Add images

ต้องนำไปใส่ในนี้ใช่ไหมครับ

ใช่ครับ
1

void Line_Notify(String message) ;

#include <ESP8266WiFi.h>

// Config connect WiFi
#define WIFI_SSID "Aon12142"
#define WIFI_PASSWORD "351123aon"

// Line config
#define LINE_TOKEN "2v55D8mZMhrBbHqDu06jtpPP8tTeZF2flVKBCrC8uZn"

#define SW D2

String message = "Massage Box"; // ArduinoIDE เวอร์ชั่นใหม่ ๆ ใส่ภาษาไทยลงไปได้เลย

void setup() {
  pinMode(SW, INPUT);

  Serial.begin(9600);

  WiFi.mode(WIFI_STA);
  // connect to wifi.
  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());
}

void loop() {
  if (digitalRead(SW) == HIGH) {
    while(digitalRead(SW) == HIGH) delay(10);

    Serial.println("Enter !");
    Line_Notify(message);
    // Serial.println();
  }
  delay(10);
}

void Line_Notify(String message) {
WiFiClientSecure client; // กรณีขึ้น Error ให้ลบ axTLS:: ข้างหน้าทิ้ง

  if (!client.connect("notify-api.line.me", 443)) {
    Serial.println("connection failed");
    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) + "\r\n";
  req += "Cache-Control: no-cache\r\n";
  req += "User-Agent: ESP8266\r\n";
  req += "Connection: close\r\n";
  req += "Content-Type: application/x-www-form-urlencoded\r\n";
  req += "Content-Length: " + String(String("message=" + message).length()) + "\r\n";
  req += "\r\n";
  req += "message=" + message;
  // Serial.println(req);
  client.print(req);
    
  delay(20);

  // Serial.println("-------------");
  while(client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      break;
    }
    //Serial.println(line);
  }
  // Serial.println("-------------");
}

ติดตรงไหนครับ

ขอบคุณมากครับตอนนี้ใช้ได้แล้วคับ
โหลดตัว TridentTD/TridentTD_LineNotify มาก็ใช้ได้เลย
ขอบคุณมากครับ

1 Like

ครับขอให้มีความสุขกับงานประดิษฐ์ครับ

1 Like