#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
const int SensorRun = 18;
const int LED1 = 13;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2261690;
const char* myApiKey = "2TL2U5NKRAGPNOQJ";
const char* server = "api.thingspeak.com";
WiFiClient client;
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 0
#define UTC_OFFSET_DST 0
void setup() {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(SensorRun, INPUT);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(250);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Loi ket noi");
return;
}
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &timeinfo);
String localTimeString = String(buffer);
ThingSpeak.setField(1, localTimeString); // Lưu thời gian vào Field 1
}
void loop() {
int motion = digitalRead(SensorRun);
if (motion == HIGH) {
Serial.println("Có cảnh báo");
digitalWrite(LED1, HIGH);
printLocalTime();
} else {
Serial.println("Không có cảnh báo");
digitalWrite(LED1, LOW);
printLocalTime();
}
ThingSpeak.setField(2, motion); // Lưu trạng thái cảnh báo vào Field 2
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Dữ liệu gửi thành công");
} else {
Serial.println("Lỗi khi gửi dữ liệu: " + String(x));
}
Serial.println("---");
delay(10000); // Đợi 10 giây trước khi lặp lại
}