Ce tutoriel montre comment envoyer des notifications à votre compte Telegram lorsque l’ESP32 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 l’ESP32 détecte un mouvement.
Voici un aperçu du fonctionnement du projet :
- Vous allez créer un bot Telegram pour votre ESP32.
- L’ESP32 est connecté à un capteur de mouvement PIR.
- Lorsque le capteur détecte un mouvement, l’ESP32 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’ESP32 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’ESP32 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 ESP32 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 à Esquisse > 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 ESP32. Suivez le diagramme schématique suivant.
Dans cet exemple, nous connectons la broche de données du capteur de mouvement PIR à GPIO 27. Vous pouvez utiliser n’importe quel autre GPIO approprié. Lisez le guide ESP32 GPIO.
Détection de mouvement par télégramme avec notifications – Esquisse ESP32
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-esp32-motion-detection-arduino/
Project created using Brian Lough's Universal Telegram Bot Library: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
*/
#include <WiFi.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"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
const int motionSensor = 27; // PIR Motion Sensor
bool motionDetected = false;
// Indicates when motion is detected
void IRAM_ATTR detectsMovement() {
//Serial.println("MOTION DETECTED!!!");
motionDetected = true;
}
void setup() {
Serial.begin(115200);
// 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);
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
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 <WiFi.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 = 27; // 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.
void IRAM_ATTR detectsMovement() {
//Serial.println("MOTION DETECTED!!!");
motionDetected = true;
}
mettre en place()
Dans le mettre en place(), initialisez le moniteur série.
Serial.begin(115200);
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 : ESP32 avec capteur de mouvement PIR utilisant des interruptions et des minuteries
Initialiser le Wi-Fi
Initialisez le Wi-Fi et connectez l’ESP32 à 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 ESP32. 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 EN/RST intégré à l’ESP32 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 ESP32. 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’ESP32 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’ESP32 avec nos ressources :
Merci d’avoir lu.