// esp wifi and mqtt connections
#include<WiFi.h>
#include <WiFiUdp.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
// wifi and adafuit account connections
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "Yashh"
#define MQTT_PASS "aio_gyYO20LFLTaQQUgxXkmNeA3Gy0EX"
const String YOUR_PHONE = "919370066563"; //Without +
const String YOUR_APIKEY = "44676511"; //Your API KEY
const String URL = "http://api.whatabot.net/whatsapp/sendMessage?text=";
WiFiUDP ntpUDP;
#define BOTtoken "6201930487:AAESnYUGs2mQ4Vxku4LDlQYNTNJEf767wp8"
#define CHAT_ID "1293822734"
WiFiClientSecure client1;
UniversalTelegramBot bot(BOTtoken, client1);
// wifi and mqtt objects instantiate
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);
Adafruit_MQTT_Subscribe onoff= Adafruit_MQTT_Subscribe(&mqtt, MQTT_NAME "/f/onoff");
// defining pins
int sensor = 5;
int buzzer = 15;
int alarm_on = 4;
int alarm_off = 2;
// wifi and mqtt connection
void setup() {
Serial.begin(9600);
// connect to wifi
Serial.print("\n\n Connecting to wifi...");
WiFi.begin(WIFI_SSID, WIFI_PASS);
client1.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while(WiFi.status()!= WL_CONNECTED)
{
delay(500);
}
Serial.println("OK!");
// subscribe to on/off topic
mqtt.subscribe(&onoff);
pinMode(sensor, INPUT_PULLUP); // sensor 5
pinMode(buzzer, OUTPUT); // buzzer 15
pinMode(alarm_on, OUTPUT); // alarm led 4
pinMode(alarm_off, OUTPUT); // alarm led off 2
}
void loop() {
// connect or reconnect mqtt
MQTT_connect();
// read from subscription queue
Adafruit_MQTT_Subscribe *s;
while((s = mqtt.readSubscription(5000)))
{
if(s == &onoff)
{
Serial.print("onoff: ");
Serial.println((char*) onoff.lastread);
if(!strcmp((char*)onoff.lastread, "1"))
{
digitalWrite(alarm_on, HIGH);
digitalWrite(alarm_off, LOW);
}
else
{
digitalWrite(alarm_off, HIGH);
digitalWrite(alarm_on, LOW);
}
}
}
if(digitalRead(alarm_on) == 1)
{
if(digitalRead(sensor) == 1)
{
tone(buzzer, 6000);
bot.sendMessage(CHAT_ID, "INTRUDER DETECTED!!!", "");
bot.sendMessage(CHAT_ID, "The main door was opened while the security system was active", "");
sendWhatsapp("Intruder%20detected!!!");
sendWhatsapp("The%20main%20door%20was%20opened%20now%20while%20the%20security%20system%20was%20activated");
}
if(digitalRead(sensor) == 0)
{
noTone(buzzer);
}
}
if(!mqtt.ping())
{
mqtt.disconnect();
}
}
void MQTT_connect()
{
int8_t ret;
if(mqtt.connected())
{
return;
}
Serial.print("Connecting to MQTT ...");
uint8_t retries = 3;
while((ret = mqtt.connect()) != 0)
{
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Retrying MQTT connection in 5 seconds ... ");
mqtt.disconnect();
delay(5000);
retries--;
if(retries == 0)
{
while(1);
}
}
Serial.println("MQTT connected");
}
void sendWhatsapp(String text)
{
WiFiClient client;
HTTPClient https;
String url = URL + text + "&apikey=" + YOUR_APIKEY + "&phone=" + YOUR_PHONE;
https.begin(client, url);
int httpCode = https.GET();
https.end();
}