#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
#include <PubSubClient.h>
#include <Wire.h>
#define MQTT_CLIENT_ID "Motion"
#define MQTT_BROKER "broker.mqttdashboard.com"
#define MQTT_USER ""
#define MQTT_PASSWORD ""
#define MQTT_TOPIC "Deneme"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
int pirState = LOW;
int val = 0;
WiFiClient wifiClient;
PubSubClient client(wifiClient);
const int motionSensor = 25;
void setup() {
Serial.begin(115200);
pinMode(2, OUTPUT);
pinMode(motionSensor, INPUT);
Serial.println("Connecting to WiFi");
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" Connected!");
Serial.println("Connecting to MQTT server...");
client.setServer(MQTT_BROKER, 1883);
client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD);
Serial.println("Connected!");
}
void loop() {
Motion();
delay(10);
}
void Motion() {
val = digitalRead(motionSensor);
if (val == HIGH) {
digitalWrite(2, HIGH);
if (pirState == LOW) {
String message = "***Motion detected!***";
Serial.println(message);
client.publish(MQTT_TOPIC, message.c_str());
pirState = HIGH;
}
} else {
digitalWrite(2, LOW); // turn LED OFF
if (pirState == HIGH) {
String message1 = "Motion ended!";
Serial.println(message1);
client.publish(MQTT_TOPIC, message1.c_str());
pirState = LOW;
}
}
}