Télégramme : détection de mouvement ESP32 avec notifications

Télégramme : détection de mouvement ESP32 avec notifications

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.

Télégramme de capteur de mouvement ESP32 PIR Envoyer une notification de message Arduino

Aperçu du projet

Ce tutoriel montre comment obtenir des notifications dans votre compte Telegram lorsque l’ESP32 détecte un mouvement.

ESP32 avec capteur de mouvement PIR Envoyer une notification de message au télégramme à l'aide de l'IDE Arduino

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.

Installer et télécharger Telegram

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.

botpère

La fenêtre suivante devrait s’ouvrir et vous serez invité à cliquer sur le début bouton.

Telegram Démarrer BotFather pour créer un nouveau Bot

Taper /nouveaubot et suivez les instructions pour créer votre bot. Donnez-lui un nom et un nom d’utilisateur.

Telegram BotFather Créer un nouveau bot

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.

Telegram BotFather Obtenir un jeton de 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.

Télégramme Obtenez un ID de chat avec IDBot

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.

Telegram Obtenir un ID de chat avec IDBot getid

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.

  1. Cliquez ici pour télécharger la bibliothèque Universal Arduino Telegram Bot.
  2. Aller à Esquisser > Inclure la bibliothèque > Ajouter.Bibliothèque ZIP...
  3. 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.

  1. Aller à Esquisse > Inclure la bibliothèque > Gérer les bibliothèques.
  2. Recherchez « ArduinoJson ».
  3. Installez la bibliothèque.

Nous utilisons la version 6.5.12 de la bibliothèque ArduinoJson.

Installer dans Arduino IDE 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.

Schéma de câblage du capteur de mouvement ESP32 PIR

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;
  }
}

Afficher le code brut

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.

ESP32 ESP8266 Notification de télégramme détecté par mouvement

En même temps, c’est ce que vous devriez obtenir sur le Serial Monitor.

ESP32 ESP8266 Telegram Motion Detected Serial Monitor Démonstration

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.