Ce tutoriel montre comment envoyer des notifications à votre compte Telegram lorsque l’ESP826 NodeMCU détecte un mouvement. Tant que vous avez accès à Internet dans votre smartphone, vous serez averti où que vous soyez. La carte ESP sera programmée à l’aide de l’IDE Arduino.
Aperçu du projet
Ce tutoriel montre comment obtenir des notifications dans votre compte Telegram lorsque le ESP8266 NodeMCU détecte un mouvement.
Voici un aperçu du fonctionnement du projet :
- Vous allez créer un bot Telegram pour votre ESP8266.
- L’ESP8266 est connecté à un capteur de mouvement PIR.
- Lorsque le capteur détecte un mouvement, l’ESP8266 envoie un message d’avertissement à votre compte de télégramme.
- Vous serez averti dans votre compte de télégramme chaque fois qu’un mouvement est détecté.
Il s’agit d’un projet simple, mais montre comment vous pouvez utiliser Telegram dans vos projets IoT et domotique. L’idée est d’appliquer les concepts appris dans vos propres projets.
Présentation du télégramme
Télégramme Messenger est un service de messagerie instantanée et de voix sur IP basé sur le cloud. Vous pouvez facilement l’installer sur votre smartphone (Android et iPhone) ou votre ordinateur (PC, Mac et Linux). C’est gratuit et sans publicité. Telegram vous permet de créer des bots avec lesquels vous pouvez interagir.
« Les bots sont des applications tierces qui s’exécutent dans Telegram. Les utilisateurs peuvent interagir avec les bots en leur envoyant des messages, des commandes et des requêtes en ligne. Vous contrôlez vos bots à l’aide de requêtes HTTPS vers l’API Telegram Bot“.
L’ESP8266 interagira avec le bot Telegram pour envoyer des messages à votre compte Telegram. Chaque fois qu’un mouvement est détecté, vous recevrez une notification sur votre smartphone (tant que vous avez accès à Internet).
Création d’un bot télégramme
Allez sur Google Play ou App Store, téléchargez et installez Télégramme.
Ouvrez Telegram et suivez les étapes suivantes pour créer un bot Telegram. Tout d’abord, recherchez « botpère » et cliquez sur le BotFather comme indiqué ci-dessous. Ou ouvrez ce lien t.me/botfather dans votre smartphone.
La fenêtre suivante devrait s’ouvrir et vous serez invité à cliquer sur le début bouton.
Taper /nouveaubot et suivez les instructions pour créer votre bot. Donnez-lui un nom et un nom d’utilisateur.
Si votre bot est créé avec succès, vous recevrez un message avec un lien pour accéder au bot et le jeton de robot. Enregistrez le jeton du bot car vous en aurez besoin pour que l’ESP8266 puisse interagir avec le bot.
Obtenez votre ID utilisateur Telegram
Toute personne connaissant le nom d’utilisateur de votre bot peut interagir avec celui-ci. Pour vous assurer que nous ignorons les messages qui ne proviennent pas de notre compte Telegram (ou de tout utilisateur autorisé), vous pouvez obtenir votre ID utilisateur Telegram. Ensuite, lorsque votre robot télégramme reçoit un message, l’ESP peut vérifier si l’ID de l’expéditeur correspond à votre ID utilisateur et traiter le message ou l’ignorer.
Dans votre compte Telegram, recherchez « IDBot » ou ouvrez ce lien t.me/myidbot dans votre smartphone.
Démarrez une conversation avec ce bot et tapez /getid. Vous recevrez une réponse avec votre ID utilisateur. Sauf que ID de l’utilisateur, car vous en aurez besoin plus tard dans ce didacticiel.
Préparation de l’IDE Arduino
Nous programmerons le ESP8266 carte à l’aide de l’IDE Arduino, assurez-vous donc de les avoir installés dans votre IDE Arduino.
Bibliothèque universelle de robots Telegram
Pour interagir avec le bot Telegram, nous utiliserons le Bibliothèque universelle de robots Telegram créé par Brian Lough qui fournit une interface simple pour l’API Telegram Bot.
Suivez les étapes suivantes pour installer la dernière version de la bibliothèque.
- Cliquez ici pour télécharger la bibliothèque Universal Arduino Telegram Bot.
- Aller à Esquisser > Inclure la bibliothèque > Ajouter.Bibliothèque ZIP...
- Ajoutez la bibliothèque que vous venez de télécharger.
Important: n’installez pas la bibliothèque via le gestionnaire de bibliothèque Arduino car il pourrait installer une version obsolète.
Pour tous les détails sur la bibliothèque, jetez un œil à la bibliothèque Universal Arduino Telegram Bot GitHub page.
Bibliothèque ArduinoJson
Vous devez également installer le ArduinoJson bibliothèque. Suivez les étapes suivantes pour installer la bibliothèque.
- Aller à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques.
- Recherchez « ArduinoJson ».
- Installez la bibliothèque.
Nous utilisons la version 6.5.12 de la bibliothèque ArduinoJson.
Pièces requises
Pour ce projet, vous avez besoin des pièces suivantes :
Diagramme schématique
Pour ce projet, vous devez câbler un capteur de mouvement PIR à votre carte ESP8266. Suivez le diagramme schématique suivant.
Dans cet exemple, nous connectons la broche de données du capteur de mouvement PIR à GPIO 14. Vous pouvez utiliser n’importe quel autre GPIO approprié. Lisez le guide GPIO ESP8266.
Détection de mouvement par télégramme avec notifications – Esquisse ESP8266
Le code suivant utilise votre bot Telegram pour envoyer un message d’avertissement à votre compte Telegram chaque fois qu’un mouvement est détecté. Pour que cette esquisse fonctionne pour vous, vous devez insérer vos informations d’identification réseau (SSID et mot de passe), le jeton Telegram Bot et votre ID utilisateur Telegram.
/*
Rui Santos
Complete project details at https://Raspberryme.com/telegram-esp8266-nodemcu-motion-detection-arduino/
Project created using Brian Lough's Universal Telegram Bot Library: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
*/
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// Initialize Telegram BOT
#define BOTtoken "XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" // your Bot Token (Get from Botfather)
// Use @myidbot to find out the chat ID of an individual or a group
// Also note that you need to click "start" on a bot before it can
// message you
#define CHAT_ID "XXXXXXXXXX"
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
const int motionSensor = 14; // PIR Motion Sensor
bool motionDetected = false;
// Indicates when motion is detected
void ICACHE_RAM_ATTR detectsMovement() {
//Serial.println("MOTION DETECTED!!!");
motionDetected = true;
}
void setup() {
Serial.begin(115200);
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
// PIR Motion Sensor mode INPUT_PULLUP
pinMode(motionSensor, INPUT_PULLUP);
// Set motionSensor pin as interrupt, assign interrupt function and set RISING mode
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING);
// Attempt to connect to Wifi network:
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
bot.sendMessage(CHAT_ID, "Bot started up", "");
}
void loop() {
if(motionDetected){
bot.sendMessage(CHAT_ID, "Motion detected!!", "");
Serial.println("Motion Detected");
motionDetected = false;
}
}
Comment fonctionne le code
Cette section explique le fonctionnement du code. Continuer la lecture ou passer au Manifestation section.
Commencez par importer les bibliothèques requises.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
Informations d’identification réseau
Insérez vos informations d’identification réseau dans les variables suivantes.
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Jeton de robot de télégramme
Insérez votre jeton Telegram Bot que vous avez reçu de Botfather sur le BOTtoken variable.
#define BOTtoken "XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" // your Bot Token (Get from Botfather)
ID utilisateur de télégramme
Insérez votre ID de chat. Celui que vous avez de l’IDBot.
#define CHAT_ID "XXXXXXXXXX"
Créez un nouveau client WiFi avec WiFiClientSécurisé.
WiFiClientSecure client;
Créer un robot avec le jeton et le client définis précédemment.
UniversalTelegramBot bot(BOTtoken, client);
Capteur de mouvement
Définissez le GPIO auquel le capteur de mouvement est connecté.
const int motionSensor = 14; // PIR Motion Sensor
le motionDetected La variable booléenne est utilisée pour indiquer si un mouvement a été détecté ou non. Il est fixé à faux par défaut.
bool motionDetected = false;
détecteMouvement()
le détectemouvement() La fonction est une fonction de rappel qui sera exécutée lorsqu’un mouvement est détecté. Dans ce cas, il change simplement l’état du motionDetected variable à vrai.
// Indicates when motion is detected
void ICACHE_RAM_ATTR detectsMovement() {
//Serial.println("MOTION DETECTED!!!");
}
mettre en place()
Dans le mettre en place(), initialisez le moniteur série.
Serial.begin(115200);
Pour l’ESP8266, vous devez utiliser la ligne suivante :
client.setInsecure();
Dans les exemples de bibliothèque pour l’ESP8266, ils disent : « C’est le moyen le plus simple pour que cela fonctionne. Si vous transmettez des informations sensibles ou contrôlez quelque chose d’important, veuillez utiliser certStore ou au moins client.setFingerPrint“.
Interruption du capteur de mouvement PIR
Définissez le capteur de mouvement PIR comme une interruption et définissez le détecteMouvement() comme fonction de rappel (lorsqu’un mouvement est détecté, cette fonction sera exécutée) :
// PIR Motion Sensor mode INPUT_PULLUP
pinMode(motionSensor, INPUT_PULLUP);
// Set motionSensor pin as interrupt, assign interrupt function and set RISING mode
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING);
Noter: Lecture recommandée : ESP8266 avec capteur de mouvement PIR utilisant des interruptions et des minuteries
Initialiser le Wi-Fi
Initialisez le Wi-Fi et connectez l’ESP8266 à votre réseau local avec le SSID et le mot de passe définis précédemment.
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Enfin, envoyez un message pour indiquer que le Bot a démarré :
bot.sendMessage(CHAT_ID, "Bot started up", "");
boucler()
Dans le boucler(), vérifiez l’état du motionDetected variable.
void loop() {
if(motionDetected){
Si c’est vrai, cela signifie qu’un mouvement a été détecté. Alors, envoyez un message à votre compte Telegram indiquant qu’un mouvement a été détecté.
bot.sendMessage(CHAT_ID, "Motion detected!!", "");
Envoyer un message au bot est très simple. Il vous suffit d’utiliser le envoyer le message() méthode sur la robot objet et passez comme arguments l’ID de chat du destinataire, le message et le mode d’analyse.
bool sendMessage(String chat_id, String text, String parse_mode = "")
Enfin, après avoir envoyé le message, réglez le motionDetected variable à faux, afin qu’il puisse à nouveau détecter le mouvement.
motionDetected = false;
C’est à peu près comme ça que le code fonctionne.
Manifestation
Important: accédez à votre compte Telegram et recherchez votre bot. Vous devez cliquer sur « début” sur un bot avant qu’il ne puisse vous envoyer un message.
Téléchargez le code sur votre carte ESP8266. N’oubliez pas d’aller à Outils > Conseil et sélectionnez la carte que vous utilisez. Aller à Outils > Port et sélectionnez le port COM auquel votre carte est connectée.
Après avoir téléchargé le code, appuyez sur le bouton RST embarqué ESP8266 pour qu’il commence à exécuter le code. Ensuite, vous pouvez ouvrir le moniteur série pour vérifier ce qui se passe en arrière-plan.
Lorsque votre carte démarre pour la première fois, elle enverra un message à votre compte Telegram : « Bot démarré ». Ensuite, placez votre main devant le capteur de mouvement PIR et vérifiez que vous avez bien reçu la notification de détection de mouvement.
En même temps, c’est ce que vous devriez obtenir sur le Serial Monitor.
Conclusion
Dans ce tutoriel, vous avez appris à créer un Telegram Bot pour interagir avec la carte ESP8266 NodeMCU. Lorsqu’un mouvement est détecté, un message est envoyé.
Avec ce bot, vous pouvez également utiliser votre compte Telegram pour envoyer des messages à l’ESP8266 pour contrôler ses sorties ou demander des lectures de capteurs, par exemple.
L’avantage d’utiliser Telegram pour contrôler vos cartes ESP, c’est que tant que vous avez une connexion Internet (et vos cartes aussi), vous pouvez les contrôler et les surveiller de n’importe où dans le monde.
Plus de projets avec Telegram :
Nous espérons que vous avez trouvé ce projet intéressant. En savoir plus sur l’ESP8266 avec nos ressources :
Merci d’avoir lu.
-
Stemedu RCWL-0516 Lot de 5 modules de détection de mouvement Microwave Radar pour Arduino ESP8266 Nodemcu Wemos pour détecteur de rat humain, distance de détection 5-7 m▶ Fonction : le module se caractérise par une haute sensibilité, une grande distance d'induction, une grande fiabilité, un grand angle d'induction, une grande plage de tension d'alimentation, etc. Il est largement utilisé dans différents types d'éclairage à induction et l'alarme pour le corps humain, etc ▶ Fonctionne avec le lien vers le document Nodemcu: https://github.com/jxmot/ESP8266-RCWL0516#rcwl0516-details ▶ Fonctionne avec le lien de document Arduino : https://www.hackster.io/remnis/coolest-motion-detection-sensor-ever-d2d688 Il peut être utilisé pour (pour) arduino, nodemcu, wemos, etc. ; il peut reconnaître les personnes, les chats, les rats et l'eau ▶ Comment pouvez-vous nous envoyer un e-mail ? Cliquez sur "Stemedu" (vous trouverez "vendu par Stemedu" dans "acheter maintenant"). Cliquez sur la nouvelle page « Demander » pour nous envoyer un e-mail