MicroPython : envoyer des messages WhatsApp ESP32/ESP826

MicroPython : envoyer des messages WhatsApp ESP32/ESP826

Apprenez à programmer vos cartes ESP32 et ESP8266 avec MicroPython pour envoyer des messages à votre compte WhatsApp. Cela peut être utile pour recevoir des notifications de votre carte avec des lectures de capteur, des messages d’alerte lorsqu’une lecture de capteur est supérieure ou inférieure à un certain seuil, lorsqu’un mouvement est détecté et de nombreuses autres applications. Nous utiliserons une API gratuite appelée CallMeBot.

MicroPython envoie des messages à WhatsApp avec le NodeMCU ESP32 ESP826

Si vous préférez programmer vos cartes à l’aide de l’IDE Arduino, vous pouvez plutôt consulter les tutoriels suivants :

Conditions préalables

Nouveau sur MicroPython ? Vous pouvez commencer ici : Premiers pas avec MicroPython sur ESP32 et ESP8266.

Pour suivre ce tutoriel, vous avez besoin du firmware MicroPython installé dans vos cartes ESP32 ou ESP8266. Vous avez également besoin d’un IDE pour écrire et télécharger le code sur votre carte. Nous suggérons d’utiliser Thonny IDE ou uPyCraft IDE :

Ou, si vous connaissez VS Code, vous pouvez utiliser l’extension PyMakr :

En savoir plus sur MicroPython : Programmation MicroPython avec ESP32 et ESP8266 eBook.

Présentation de WhatsApp

Logo Whatsapp

« WhatsApp Messenger, ou simplement WhatsApp, est un logiciel américain gratuit, multiplateforme centralisé de messagerie instantanée et de voix sur IP, propriété de Meta Platforms. » Il vous permet d’envoyer des messages en utilisant la connexion Internet de votre téléphone, ce qui vous permet d’éviter les frais de SMS.

WhatsApp est gratuit et disponible pour Android et iOS. Installez WhatsApp sur votre smartphone si vous ne l’avez pas déjà.

Pour envoyer des messages à votre compte WhatsApp avec les cartes ESP32 et ESP8266, nous utiliserons un service API gratuit appelé CallMeBot. Vous pouvez en savoir plus sur CallMeBot au lien suivant :

Fondamentalement, cela fonctionne comme une passerelle qui vous permet de vous envoyer un message. Toutes les informations sur la façon d’envoyer des messages à l’aide de l’API peuvent être trouvées ici.

Obtenir la clé API CallMeBot

Avant de commencer à utiliser l’API, vous devez obtenir la clé API CallmeBot WhatsApp. Suivez les instructions suivantes (vérifier ce lien pour les instructions sur le site officiel).

  1. Ajoutez le numéro de téléphone +34 644 31 95 65 à vos contacts téléphoniques. (Nommez-le comme vous le souhaitez);
  2. Envoyez le message suivant : « J’autorise callmebot à m’envoyer des messages » au nouveau Contact créé (en utilisant WhatsApp bien sûr) ;
  3. Attendez de recevoir le message « API activée pour votre numéro de téléphone. Votre APIKEY est XXXXXX” du robot.
Obtenir la clé API CallMeBot

Note: Si vous ne recevez pas la clé API dans les 2 minutes, veuillez réessayer après 24h. Le message WhatsApp du bot contiendra la clé API nécessaire pour envoyer des messages à l’aide de l’API.

API CallMeBot

Pour envoyer un message à l’aide de l’API CallMeBot, vous devez effectuer une requête POST à ​​l’URL suivante (mais en utilisant vos informations) :

https://api.callmebot.com/whatsapp.php?phone=[phone_number]&text=[message]&apikey=[your_apikey]
  • [phone_number]: numéro de téléphone associé à votre compte WhatsApp au format international ;
  • [message]: le message à envoyer doit être encodé en URL.
  • [your_apikey]: la clé API que vous avez reçue lors du processus d’activation dans la section précédente.

Pour la documentation officielle, vous pouvez consulter le lien suivant : https://www.callmebot.com/blog/free-api-whatsapp-messages/

Pour effectuer des requêtes HTTP avec l’ESP32 et l’ESP8266 à l’aide de MicroPython, vous pouvez utiliser les méthodes fournies par le demandes une bibliothèque.

Envoyer des messages à WhatsApp – Script MicroPython (ESP32/ESP8266)

Copiez le code suivant dans votre projet MicroPython main.py dossier. Le code est compatible avec les cartes ESP32 et ESP8266.

Avant de télécharger le code sur votre carte, vous devez insérer vos identifiants réseau, votre numéro de téléphone au format international et la clé API.

# Complete project details at https://Raspberryme.com/micropython-whatsapp-esp32-esp826/

try:
  import urequests as requests
except:
  import requests
  
import network

import esp
esp.osdebug(None)

import gc
gc.collect()

#Your network credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_SSID'

#Your phone number in international format
phone_number="YOUR_PHONE_NUMER_INTERNATIONAL_FORMAT"
#Your callmebot API key
api_key = 'CALLMEBOT_API_KEY'

def connect_wifi(ssid, password):
  #Connect to your network
  station = network.WLAN(network.STA_IF)
  station.active(True)
  station.connect(ssid, password)
  while station.isconnected() == False:
    pass
  print('Connection successful')
  print(station.ifconfig())

def send_message(phone_number, api_key, message):
  #set your host URL
  url="https://api.callmebot.com/whatsapp.php?phone="+phone_number+'&text="+message+"&apikey='+api_key

  #make the request
  response = requests.get(url)
  #check if it was successful
  if response.status_code == 200:
    print('Success!')
  else:
    print('Error')
    print(response.text)

# Connect to WiFi
connect_wifi(ssid, password)
# Send message to WhatsApp "Hello"
message="Hello%20from%20ESP32%20%28micropython%29" #YOUR MESSAGE HERE (URL ENCODED)https://www.urlencoder.io/ 
send_message(phone_number, api_key, message)

Afficher le code brut

Comment fonctionne le code

Le code est assez simple à comprendre.

Nous commençons par inclure les bibliothèques requises. Les demandes bibliothèque pour faire des requêtes HTTP et la réseau bibliothèque pour définir l’ESP32/ESP8266 en tant que station WiFi et le connecter à votre réseau local.

try:
  import urequests as requests
except:
  import requests
  
import network

import esp
esp.osdebug(None)

import gc
gc.collect()

Insérez vos informations d’identification réseau dans les variables suivantes afin que l’ESP puisse se connecter à votre réseau local et avoir accès à Internet.

#Your network credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_SSID'

Insérez votre numéro de téléphone au format international (incluant le + signe) dans la ligne suivante :

#Your phone number in international format
phone_number="YOUR_PHONE_NUMER_INTERNATIONAL_FORMAT

Ensuite, insérez le clé API callmebot vous avez précédemment.

#Your callmebot API key
api_key = "CALLMEBOT_API_KEY'

Nous avons créé une fonction appelée connect_wifi() qui accepte comme arguments le SSID et le mot de passe du réseau auquel vous souhaitez vous connecter. Vous devriez appeler cette fonction plus tard pour connecter réellement la carte ESP à Internet.

def connect_wifi(ssid, password):
  #Connect to your network
  station = network.WLAN(network.STA_IF)
  station.active(True)
  station.connect(ssid, password)
  while station.isconnected() == False:
    pass
  print('Connection successful')
  print(station.ifconfig())

Pour faciliter l’adaptation du code à vos projets, nous avons créé une fonction appelée envoyer le message() qui contient toutes les instructions nécessaires pour envoyer les messages à WhatsApp. Cette fonction accepte comme arguments le numéro de téléphone, la clé API callmebot et le message que vous souhaitez envoyer. Il vous suffit d’appeler cette fonction avec les arguments requis lorsque vous souhaitez envoyer un message.

def send_message(phone_number, api_key, message):
  #set your host URL
  url="https://api.callmebot.com/whatsapp.php?phone="+phone_number+'&text="+message+"&apikey='+api_key

  #make the request
  response = requests.get(url)
  #check if it was successful
  if response.status_code == 200:
    print('Success!')
  else:
    print('Error')
    print(response.text)

Maintenant que nous avons créé toutes les fonctions nécessaires, appelez le connect_wifi() fonction pour connecter l’ESP à votre réseau local.

connect_wifi(ssid, password)

Nous avons créé une variable appelée message qui contient le texte que nous voulons envoyer. Le message doit être au format URL codé. Vous pouvez utiliser cet outil pour convertir votre texte au format encodé URL. Nous envoyons le message suivant : Bonjour d’ESP32 (micropython). Vous pouvez envoyer n’importe quel texte pertinent pour votre projet, y compris les valeurs des lectures de capteurs, par exemple.

message="Hello%20from%20ESP32%20%28micropython%29" #YOUR MESSAGE HERE (URL ENCODED)https://www.urlencoder.io/ 

Enfin, appelez le envoyer le message() fonction pour envoyer le message.

send_message(phone_number, api_key, message)

Comme vous pouvez le constater, envoyer un message à WhatsApp à l’aide de MicroPython est assez simple. Vous pouvez utiliser le envoyer le message() fonction dans vos projets pour envoyer des messages à l’aide de vos tableaux.

Manifestation

Après avoir inséré vos informations d’identification, votre numéro de téléphone et votre clé API, vous pouvez télécharger le main.py fichier sur votre carte à l’aide de votre IDE MicroPython préféré.

Réinitialisez la carte pour commencer à exécuter le code. Vous devriez obtenir un message de réussite sur le shell.

MicroPython envoie des messages à WhatsApp avec la démonstration ESP32 ESP826 NodeMCU

Après avoir reçu ce message de réussite, vous devriez recevoir un message du bot WhatsApp avec le contenu que vous avez défini sur le code.

MicroPython envoie des messages à WhatsApp avec le test de démonstration ESP32 ESP826 NodeMCU

Toutes nos félicitations! Vous avez réussi à envoyer des messages sur votre compte WhatsApp avec les cartes ESP32 et ESP8266 (programmées avec MicroPython).

Conclusion

Dans ce didacticiel, vous avez appris à envoyer des messages à votre compte WhatsApp à l’aide des ESP32 et ESP8266 programmés avec le micrologiciel MicroPython.

Pour envoyer les messages, nous avons utilisé un API gratuite appelée callmebot qui vous permet de vous envoyer des messages pour des projets personnels. Pour envoyer un message, il suffit de faire une requête à une URL avec les paramètres requis. Faire une requête avec MicroPython est très simple en utilisant le demandes une bibliothèque.

Nous espérons que vous avez trouvé ce tutoriel utile. Nous avons d’autres tutoriels (utilisant Arduino IDE) montrant comment envoyer différents types de notifications. Vous pouvez consulter les tutoriels ci-dessous.

Vous pouvez consulter tous nos projets MicroPython ici.

Si vous souhaitez en savoir plus sur la programmation des cartes ESP32 et ESP8266 avec MicroPython, consultez notre eBook : Programmation MicroPython avec ESP32 et ESP8266.

Merci d’avoir lu