ESP8266 - Secure Your Belongings: Detect Theft and Send Email Alerts
This guide will teach you how to use an ESP8266 and a force sensor to keep your items safe. We will show you how to create a system that sends you an email alert if someone tries to steal your possessions. You will learn how to prepare the ESP8266, connect the force sensor, and set it up to send emails through Gmail. We will provide step-by-step instructions and explain how this system can be useful in real-life scenarios.
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. Additionally, some of these links are for products from our own brand, DIYables .
Overview of Force Sensor and Gmail
We provide clear guides on Force Sensors and Gmail. Each tutorial includes complete instructions on setting up the hardware, how it functions, and connecting wires to ESP8266, with coding steps. For further details, follow these links.
When you put an item on the force sensor, it measures the weight. The ESP8266 device records this weight. If the item is taken away, the weight is different. The ESP8266 detects this different weight and sends you an email to let you know that your item has been moved.
Wiring Diagram between Force Sensor and ESP8266
This image is created using Fritzing. Click to enlarge image
/* * This ESP8266 NodeMCU code was developed by newbiely.com * * This ESP8266 NodeMCU code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp8266/esp8266-secure-your-belongings-detect-theft-and-send-email-alerts */#include <ESP8266WiFi.h>#include <ESP_Mail_Client.h>#define WIFI_SSID "YOUR_WIFI_SSID"// CHANGE IT#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"// CHANGE IT// the sender email credentials#define SENDER_EMAIL "xxxxxx@gmail.com"// CHANGE IT#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"// CHANGE IT to your Google App password#define RECIPIENT_EMAIL "xxxxxx@gmail.com"// CHANGE IT#define SMTP_HOST "smtp.gmail.com"#define SMTP_PORT 587#define FORCE_SENSOR_PIN A0 // ESP8266 pin A0 connected to the FSR with 10K pull-down resistor#define THRESHOLD 100 // may need to callibrate this valueSMTPSessionsmtp;voidsetup() {Serial.begin(9600);WiFi.begin(WIFI_SSID, WIFI_PASSWORD);Serial.print("Connecting to Wi-Fi");while (WiFi.status() != WL_CONNECTED) {Serial.print(".");delay(300); }Serial.println();Serial.print("Connected with IP: ");Serial.println(WiFi.localIP());Serial.println();pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP8266 pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state}voidloop() {int forceValue = analogRead(FORCE_SENSOR_PIN);if (forceValue < THRESHOLD) {Serial.println("Alert! Someone has stolen your stuff!");String subject = "Email Notification from ESP8266";String textMsg = "This is an email sent from ESP8266.\n"; textMsg += "Alert! Someone has stolen your stuff!"; gmail_send(subject, textMsg); }}void gmail_send(String subject, String textMsg) {// set the network reconnection optionMailClient.networkReconnect(true);smtp.debug(1);smtp.callback(smtpCallback); Session_Config config;// set the session configconfig.server.host_name = SMTP_HOST;config.server.port = SMTP_PORT;config.login.email = SENDER_EMAIL;config.login.password = SENDER_PASSWORD;config.login.user_domain = F("127.0.0.1");config.time.ntp_server = F("pool.ntp.org,time.nist.gov");config.time.gmt_offset = 3;config.time.day_light_offset = 0;// declare the message class SMTP_Message message;// set the message headers message.sender.name = F("ESP8266"); message.sender.email = SENDER_EMAIL; message.subject = subject; message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL); message.text.content = textMsg; message.text.transfer_encoding = "base64"; message.text.charSet = F("utf-8"); message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low;// set the custom message header message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));// connect to the serverif (!smtp.connect(&config)) {Serial.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str());return; }if (!smtp.isLoggedIn()) {Serial.println("Not yet logged in."); } else {if (smtp.isAuthenticated())Serial.println("Successfully logged in.");elseSerial.println("Connected with no Auth."); }// start sending Email and close the sessionif (!MailClient.sendMail(&smtp, &message))Serial.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str());}// callback function to get the Email sending statusvoid smtpCallback(SMTP_Status status) {// print the current statusSerial.println(status.info());// print the sending resultif (status.success()) {Serial.println("----------------");Serial.printf("Email sent success: %d\n", status.completedCount());Serial.printf("Email sent failed: %d\n", status.failedCount());Serial.println("----------------\n");for (size_t i = 0; i < smtp.sendingResult.size(); i++) {// get the result item SMTP_Result result = smtp.sendingResult.getItem(i);Serial.printf("Message No: %d\n", i + 1);Serial.printf("Status: %s\n", result.completed ? "success" : "failed");Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str());Serial.printf("Recipient: %s\n", result.recipients.c_str());Serial.printf("Subject: %s\n", result.subject.c_str()); }Serial.println("----------------\n");// free the memorysmtp.sendingResult.clear(); }}
Detailed Instructions
To get started with ESP8266 on Arduino IDE, follow these steps:
Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!