ESP32 ไม่ขึ้นแจ้งเตือนใน Line Notify


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


#include <WiFi.h>
#include <WiFiClientSecure.h>

//########## CONFIGURATION : MODIFY HERE ##########
char ssid[] = "______"; // เครือข่าย Wi-Fi ที่ต้องการเชื่อมต่อ
char pass[] = "______"; // รหัสผ่านเครือข่าย

//รหัสเชื่อมต่อ Line token
#define TokenLine "______"

// ข้อความ ที่จะแสดงใน Line
String txt1 = "ความชื้นเท่ากับ "; //ข้อความ 1 ที่จะแสดงใน Line
String txt2 = " รดน้ำได้แล้ว !"; //ข้อความ 2 ที่จะแสดงใน Line

//กำหนดขาที่เชื่อมต่อกับเซ็นเซอร์
int sensorPin = 34;


void setup() {

//กำหนดให้ขาดิจิตอล sensorPin รับข้อมูลจากเซ็นเซอร์
pinMode(sensorPin, INPUT);

//ตั้งค่าคอนโซล
Serial.begin(115200);

//เริ่มการเชื่อมต่อกับวายฟายแม่ข่าย
WiFi.begin(ssid, pass);

//แสดง "WiFi Connecting" ในคอนโซล
Serial.print("WiFi Connecting");

//ตรวจเช็คสถานะการเขื่อมต่อวายฟาย
//ถ้าไม่สำเร็จให้แสดง "." ในคอนโซลจนกว่าจะเขื่อมต่อได้
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
//แสดงสถานะการวายฟายเชื่อมต่อแล้ว
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
}

void loop() {

int Humidity = analogRead(sensorPin);

if (Humidity < 600) {
Serial.print("Moisture Sensor Value:");
Serial.println(Humidity);
NotifyLine(txt1 + Humidity + txt2);
}
else if (Humidity >= 600) {
Serial.print("Moisture Sensor Value:");
Serial.println(Humidity);
}


delay(2000);

}

void NotifyLine(String t) {
WiFiClientSecure client;
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(TokenLine) + "\r\n";
req += "Cache-Control: no-cache\r\n";
req += "User-Agent: ESP32\r\n";
req += "Content-Type: application/x-www-form-urlencoded\r\n";
req += "Content-Length: " + String(String("message=" + t).length()) + "\r\n";
req += "\r\n";
req += "message=" + t;
Serial.println(req);
client.print(req);
delay(20);
Serial.println("-------------");
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
break;
}
} //while
} //loop

เปลี่ยนไปใช้ library แทนครับ ดูจากตัวอย่างนี้

ตอนนี้ผมทำให้แจ้งเตือนมาในไลน์ได้แล้วครับ แต่มันไม่วัดค่าความชื้นให้ครับ ไม่รู้ต้องเพิ่มโค้ดตรงไหนบ้างครับ


#define SSID        "iPhone"
#define PASSWORD    "11111111"
#define LINE_TOKEN  "0ADPAVRpjpEF2UACXE1lX9cUubzbtXxCUXxvy4yegz3"

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);
}

ผมยังไม่เห็นโค้ตอ่านค่าความชื้นเลยนะครับ

nathan fillion hd GIF

ใช่ครับ ผมไม่รู้ว่าต้องใส่โค้ดวัดค่าความชื้นเพิ่มยังไงให้แจ้งเตือนเข้ามาในไลน์ครับ ผมลองเอาโค้ดวัดค่าความชื้นจากตัวอย่างโค้ดแรกของผม มันก็เออเร่อครับ

ลองเอาอ่านความชื้นเพียวๆ ให้ออกก่อนครับ ลองดู ถ่ายวิธีการต่อมาดูด้วย เดียวผมช่วยดูอีกที

นี้เป็นโค้ดที่ผมลองเขียนให้อ่านค่าความชื้นเพียวๆครับ ตอนเริ่มทำโปรเจ็ค

void setup(){

Serial.begin(115200);

pinMode(34, INPUT);

}

void loop(){

Serial.print("Moisture Sensor Value:");

Serial.println(analogRead(34));

delay(100);
}

ขอลิ้งค์เซนเซอร์ที่ซื้อมาดูหน่อย

https://www.robotsiam.com/product/189/keyestudio-soil-humidity-sensor-เซ็นเซอร์วัดความชื้นในดิน

นี่ครับ

ต่อไปคือ เอาโค้ตเบสิกมาใช้ดู ว่าผลเป็นยังไง