Lamebale
(Lamebale)
1
พอดีผมกำลังทำโปรเจ็คจบ ทำเครื่องวัดความชื้นในดินแจ้งเตือนผ่านไลน์ notify เขียนโค้ดเสร็จ เชื่อมต่อไวไฟได้แล้ว แต่มันไม่แจ้งเตือนเข้าไปในไลน์เลยครับ มีวิธีแก้ยังไงไหมครับ ช่วยหน่อยนะครับ
#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
Remy_Martin
(Permpol Thanapunnamas)
2
เปลี่ยนไปใช้ library แทนครับ ดูจากตัวอย่างนี้
Lamebale
(Lamebale)
3
ตอนนี้ผมทำให้แจ้งเตือนมาในไลน์ได้แล้วครับ แต่มันไม่วัดค่าความชื้นให้ครับ ไม่รู้ต้องเพิ่มโค้ดตรงไหนบ้างครับ
#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);
}
Remy_Martin
(Permpol Thanapunnamas)
4
ผมยังไม่เห็นโค้ตอ่านค่าความชื้นเลยนะครับ
Lamebale
(Lamebale)
5
ใช่ครับ ผมไม่รู้ว่าต้องใส่โค้ดวัดค่าความชื้นเพิ่มยังไงให้แจ้งเตือนเข้ามาในไลน์ครับ ผมลองเอาโค้ดวัดค่าความชื้นจากตัวอย่างโค้ดแรกของผม มันก็เออเร่อครับ
Remy_Martin
(Permpol Thanapunnamas)
6
ลองเอาอ่านความชื้นเพียวๆ ให้ออกก่อนครับ ลองดู ถ่ายวิธีการต่อมาดูด้วย เดียวผมช่วยดูอีกที
Lamebale
(Lamebale)
7
นี้เป็นโค้ดที่ผมลองเขียนให้อ่านค่าความชื้นเพียวๆครับ ตอนเริ่มทำโปรเจ็ค
void setup(){
Serial.begin(115200);
pinMode(34, INPUT);
}
void loop(){
Serial.print("Moisture Sensor Value:");
Serial.println(analogRead(34));
delay(100);
}
Remy_Martin
(Permpol Thanapunnamas)
8
ขอลิ้งค์เซนเซอร์ที่ซื้อมาดูหน่อย
Lamebale
(Lamebale)
9
Remy_Martin
(Permpol Thanapunnamas)
10
ต่อไปคือ เอาโค้ตเบสิกมาใช้ดู ว่าผลเป็นยังไง