#include <WiFi.h>
#include <HttpClient.h>
#include <b64.h>
int led1 = 13;
int SW1 = 12;
int Buzz = 14;
int re = 27;
#define ssid "OPPOA79"
#define password "kittisak"
// สร้าง token https://notify-bot.line.me/th
#define token "NngXc032DBX6oFWX5be8MXRalA8sc4H4F6gGUqGGlJv"
#define pirPin 15
int s1 = 16;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password, 6);
Serial.print("Connecting to WiFi.");
while(WiFi.status() != WL_CONNECTED) { // รอจนกว่าจะเชื่อมต่อ WiFi สำเร็จ
delay(1000);
Serial.print(".");
}
Serial.println("Connected to WiFi");
sendLineNotify("Online");
pinMode(pirPin, INPUT);
pinMode(s1, INPUT);
pinMode(SW1, INPUT);
pinMode(led1, OUTPUT);
pinMode(Buzz, OUTPUT);
pinMode(re, OUTPUT);
}
void loop() {
delay(100);
if(WiFi.status() == WL_CONNECTED) { // ตรวจสอบการเชื่อมต่อ WiFi
int s = digitalRead(s1); // อ่านค่าจากเซ็นเซอร์ PIR
if(digitalRead(SW1) == 0){
digitalWrite(led1,1);
digitalWrite(Buzz,1);
digitalWrite(re,1);
delay(1000);
sendLineNotify("คิดถึงจัง "); // ส่งข้อความไปยังไลน์
}
else{
digitalWrite(led1,0);
digitalWrite(Buzz,0);
digitalWrite(re,0);
}
}
}
void sendLineNotify(String message) { // ฟังก์ชันส่งข้อความ
HTTPClient http;
http.begin("https://notify-api.line.me/api/notify");
http.addHeader("Authorization", "Bearer " + String(token));
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String encodedMessage = "message=" + urlEncode(message);
int httpCode = http.POST(encodedMessage);
if(httpCode > 0) {
String response = http.getString();
}
else {
Serial.println("Error");
}
http.end();
}
String urlEncode(String value) { // ฟังก์ชันเข้ารหัสข้อความผ่าน URL
String encodedValue = "";
char c;
for(size_t i = 0; i < value.length(); i++) {
c = value.charAt(i);
if(isAlphaNumeric(c)) {
encodedValue += c;
}
else {
encodedValue += String('%');
encodedValue += String(c, HEX);
}
}
return encodedValue;
}
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}