Dans ce guide, vous apprendrez à envoyer des notifications ESP32 à Pushover. Pushover est un service de notification qui s’intègre à de nombreuses applications. Vous pouvez envoyer des notifications push à tous vos appareils et à plusieurs utilisateurs. Vous pouvez gérer vos notifications avec des niveaux de priorité, définir des heures de silence et définir différents sons en fonction de la notification.

Table des matières
Nouveau sur l’ESP32 ? Commencez ici : Premiers pas avec la carte de développement ESP32.
Présentation de Pushover

Pushover est une application mobile et de bureau compatible avec Android et iOS et Windows, MacOS et Linux. Il vous permet de recevoir des notifications de différentes sources et services et s’intègre à de nombreuses applications.
Vous pouvez recevoir des notifications sur tous vos appareils simultanément ou les envoyer à des groupes avec plusieurs utilisateurs. De plus, vous pouvez personnaliser des éléments tels que les niveaux de priorité, définir des heures de silence et même des sons différents en fonction du type de notification.
Après avoir publié ce tutoriel précédent, nous avons constaté que beaucoup de nos lecteurs utilisaient déjà Pushover pour d’autres types de notifications. Nous avons donc pensé qu’il serait utile de savoir comment intégrer Pushover à l’ESP32 pour que vous ayez toutes vos notifications au même endroit.
Tarification pushover
Vous disposez d’une période d’essai gratuite de 30 jours à partir du moment où vous vous inscrivez afin que vous puissiez expérimenter l’application. Après cela, si vous souhaitez continuer à utiliser l’application, il ne s’agit que d’un achat unique de 5 USD. Chaque utilisateur peut envoyer jusqu’à 10 000 messages par mois gratuitement. En savoir plus sur Prix pushover ici.
Installation de l’application Pushover
Vous pouvez installer l’application Pushover sur votre ordinateur, votre tablette et votre smartphone. Il est compatible avec Windows, MacOS et Linux, ainsi qu’avec Android et iOS.
Téléchargez l’application sur votre smartphone et créez un compte pour commencer.

Après avoir créé votre compte, vous bénéficierez d’une période d’essai gratuite de 30 jours.

Après cela, vous devrez accéder à votre adresse e-mail pour vérifier votre compte.
Obtenir la clé API pushover et la clé utilisateur
Pour envoyer des notifications à Pushover avec l’ESP32, nous devons obtenir une clé API et la clé utilisateur (récepteur).
Pour cette étape, nous vous recommandons de vous connecter à votre compte pushover sur le navigateur de votre ordinateur. Connectez-vous ici: https://pushover.net/login.
Vous aurez accès à votre tableau de bord Pushover.

Dans le coin supérieur droit, il y a la clé utilisateur. Enregistrez-le car vous en aurez besoin plus tard.
Vous pouvez également voir tous vos appareils et ajouter d’autres appareils si vous le souhaitez. Vous pouvez essayer de pousser une notification dans le coin supérieur gauche pour vérifier si les notifications fonctionnent avec votre appareil.
Faites défiler la page pour créer un jeton d’application/API.

Donnez un nom et une description (facultatif) au jeton API. Vous pouvez également ajouter une icône à cela. Nous avons ajouté une icône d’un ESP32. Ainsi, lorsque nous recevrons une notification, elle sera accompagnée de l’icône ESP32. Enfin, créez l’application.

Maintenant, l’application apparaîtra sur votre tableau de bord sous la section Vos applications.

Cliquez sur le nom de l’application pour obtenir son jeton API. Dans ce menu, vous pouvez également vérifier le nombre de notifications que vous avez envoyées avec ce jeton d’API.
Enregistrez le jeton d’API, car vous en aurez besoin plus tard.

Maintenant que vous avez la clé utilisateur et le jeton API, vous pouvez commencer à envoyer des notifications ESP32 avec Pushover.
Notifications pushover avec l’ESP32 – Exemple de croquis
L’envoi de notifications Pushover avec l’ESP32 est très simple grâce à son API. Vous pouvez lire la documentation de l’API de Pushover ici. Il vous suffit de POSTER une requête HTTPS avec l’ESP32 avec les bons paramètres au endpoint de l’API : https://api.pushover.net/1/messages.json.
Vous devez passer les paramètres suivants :
- token : le jeton API de votre application
- user : votre clé d’utilisateur ou clé de groupe d’utilisateurs
- message : le contenu de la notification
Vous pouvez également passer d’autres paramètres facultatifs :
- pièce jointe : une image en pièce jointe à envoyer avec le message.
- appareil : le nom de l’appareil dont vous souhaitez recevoir la notification.
- html : défini sur 1 pour activer l’analyse HTML.
- priorité : définissez le niveau de priorité des notifications : une valeur de -2, -1, 0 (par défaut), 1 ou 2.
- sound : le nom d’un son pris en charge pour remplacer votre choix de son par défaut—les valeurs peuvent être pushover, bike, bugle, cashregister, classic, cosmic, etc (vérifiez toutes les options sonores disponibles ici). Vous pouvez même télécharger vos propres sons sur votre tableau de bord Pushover.
- timestamp : un horodatage Unix d’une heure à afficher au lieu du moment où notre API a reçu la demande.
- title : le titre de votre message, sinon le nom de votre application est utilisé.
- url : une URL supplémentaire à afficher avec votre message (documentation).
- url_title : un titre pour l’URL spécifiée comme paramètre url, sinon seule l’URL est affichée.
Pour plus d’informations sur tous les paramètres, veuillez consultez la documentation de l’API de Pushover.
Le code ci-dessous montre comment envoyer des notifications Pushover avec l’ESP32 à l’aide d’une requête HTTPS POST.
Avant de télécharger le code sur votre carte, vous devez insérer votre SSID et votre mot de passe, la clé utilisateur et le jeton d’API Pushover App.
/*
Rui Santos
Complete project details at https://Raspberryme.com/esp32-pushover-notifications-arduino/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
const char* apiToken = "API_TOKEN";
const char* userToken = "USER_TOKEN";
//Pushover API endpoint
const char* pushoverApiEndpoint = "https://api.pushover.net/1/messages.json";
//Pushover root certificate (valid from 11/10/2006 to 11/10/2031)
const char *PUSHOVER_ROOT_CA = "-----BEGIN CERTIFICATE-----\n"
"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n"
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n"
"QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n"
"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
"b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n"
"9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n"
"CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n"
"nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n"
"43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n"
"T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n"
"gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n"
"BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n"
"TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n"
"DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n"
"hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n"
"06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n"
"PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n"
"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n"
"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n"
"-----END CERTIFICATE-----\n";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
//Make HTTPS POST request to send notification
if (WiFi.status() == WL_CONNECTED) {
// Create a JSON object with notification details
// Check the API parameters: https://pushover.net/api
StaticJsonDocument<512> notification;
notification["token"] = apiToken; //required
notification["user"] = userToken; //required
notification["message"] = "Hello from ESP32"; //required
notification["title"] = "ESP32 Notification"; //optional
notification["url"] = ""; //optional
notification["url_title"] = ""; //optional
notification["html"] = ""; //optional
notification["priority"] = ""; //optional
notification["sound"] = "cosmic"; //optional
notification["timestamp"] = ""; //optional
// Serialize the JSON object to a string
String jsonStringNotification;
serializeJson(notification, jsonStringNotification);
// Create a WiFiClientSecure object
WiFiClientSecure client;
// Set the certificate
client.setCACert(PUSHOVER_ROOT_CA);
// Create an HTTPClient object
HTTPClient https;
// Specify the target URL
https.begin(client, pushoverApiEndpoint);
// Add headers
https.addHeader("Content-Type", "application/json");
// Send the POST request with the JSON data
int httpResponseCode = https.POST(jsonStringNotification);
// Check the response
if (httpResponseCode > 0) {
Serial.printf("HTTP response code: %d\n", httpResponseCode);
String response = https.getString();
Serial.println("Response:");
Serial.println(response);
} else {
Serial.printf("HTTP response code: %d\n", httpResponseCode);
}
// Close the connection
https.end();
}
}
void loop() {
}
Comment fonctionne le code
Continuez à lire le fonctionnement du code ou passez à la section de démonstration.
Inclure les bibliothèques
Vous commencez par inclure les bibliothèques requises. La librairie WiFi pour connecter l’ESP32 à votre réseau, afin qu’il puisse se connecter à internet. Les bibliothèques HTTPClient et WiFiClientSecure seront utilisées pour effectuer des requêtes HTTP POST sécurisées, et nous utiliserons la bibliothèque ArduinoJSON pour créer une chaîne JSON afin d’envoyer tous les paramètres requis dans le corps de la requête HTTP POST.
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.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 API et jeton utilisateur
Insérez le jeton d’API et le jeton d’utilisateur sur les variables suivantes :
const char* apiToken = "API_TOKEN";
const char* userToken = "USER_TOKEN";
Point de terminaison de l’API
Ensuite, nous définissons l’URL du point de terminaison de l’API où nous ferons les demandes. D’après la documentation, c’est comme suit :
const char* pushoverApiEndpoint = "https://api.pushover.net/1/messages.json";
Certificat SSL
Pour effectuer des requêtes HTTPS sécurisées, nous avons besoin du certificat TLS du site Web du pushover. Nous utilisons le certificat root. Il est valable jusqu’en 2031. Pour savoir comment obtenir le certificat TLS d’un site Web, vous pouvez lire ceci : Obtenir un certificat de serveur à l’aide de Google Chrome.
const char *PUSHOVER_ROOT_CA = "-----BEGIN CERTIFICATE-----\n"
"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n"
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n"
"QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n"
"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
"b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n"
"9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n"
"CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n"
"nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n"
"43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n"
"T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n"
"gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n"
"BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n"
"TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n"
"DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n"
"hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n"
"06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n"
"PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n"
"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n"
"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n"
"-----END CERTIFICATE-----\n";
Connectez-vous au Wi-Fi
Dans le setup(), commencez par connecter l’ESP32 à votre réseau :
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
En savoir plus sur les fonctions Wi-Fi ESP32 : Fonctions utiles de la bibliothèque Wi-Fi ESP32 (Arduino IDE).
Définition des paramètres de notification
Après nous être assurés que nous sommes connectés au Wi-Fi, nous créons un objet JSON appelé notification avec les paramètres requis et certains des paramètres facultatifs. Les paramètres requis sont le jeton API, le jeton utilisateur et le message.
StaticJsonDocument<512> notification;
notification["token"] = apiToken; //required
notification["user"] = userToken; //required
notification["message"] = "Hello from ESP32"; //required
notification["title"] = "ESP32 Notification"; //optional
notification["url"] = ""; //optional
notification["url_title"] = ""; //optional
notification["html"] = ""; //optional
notification["priority"] = ""; //optional
notification["sound"] = "cosmic"; //optional
notification["timestamp"] = ""; //optional
Comme vous pouvez le voir, le message est défini sur la ligne suivante :
notification["message"] = "Hello from ESP32"; //required
Vous pouvez modifier le message en tout ce qui est utile pour votre application.
Nous définissons également le titre du message sur la ligne suivante :
notification["title"] = "ESP32 Notification"; //optional
Après avoir obtenu tous les paramètres d’un objet JSON, nous le convertissons en une chaîne afin de pouvoir l’envoyer dans le corps de la requête HTTP POST.
String jsonStringNotification;
serializeJson(notification, jsonStringNotification);
Requête HTTPS POST
Maintenant, nous pouvons enfin faire la requête HTTPS POST.
En savoir plus sur les requêtes HTTPS sécurisées avec l’ESP32 : Requêtes HTTPS ESP32 (IDE Arduino).
En savoir plus sur les requêtes HTTP POST avec ESP32 : requêtes HTTP POST ESP32.
Créez un objet WiFiClientSecure appelé client.
WiFiClientSecure client;
Définissez un client sécurisé avec le certificat à l’aide de la méthode setCACert() :
client.setCACert(PUSHOVER_ROOT_CA);
Ensuite, créez une instance HTTPClient appelée https.
HTTPClient https;
Initialisez le client https sur l’hôte spécifié à l’aide de la méthode begin(). Dans ce cas, nous faisons une demande sur le point de terminaison de l’API.
https.begin(client, pushoverApiEndpoint);
Ensuite, ajoutez les en-têtes HTTP POST – nous devons spécifier que nous allons envoyer les données sous forme de chaîne JSON dans le corps de la requête.
// Add headers
https.addHeader("Content-Type", "application/json");
Enfin, nous pouvons envoyer la requête POST avec les données JSON.
// Send the POST request with the JSON data
int httpResponseCode = https.POST(jsonStringNotification);
Après avoir fait la demande, nous pouvons vérifier la réponse du serveur. Ceci est utile pour savoir si la requête a réussi ou s’il y a eu des problèmes pendant la requête ou avec le corps de la requête. Pour obtenir la réponse du serveur, nous devons simplement utiliser la méthode getString() sur l’objet https.
if (httpResponseCode > 0) {
Serial.printf("HTTP response code: %d\n", httpResponseCode);
String response = https.getString();
Serial.println("Response:");
Serial.println(response);
} else {
Serial.printf("HTTP response code: %d\n", httpResponseCode);
}
Enfin, fermez la connexion HTTPS à l’aide de la méthode end() :
https.end();
Cet exemple envoie une notification dans setup() lors de la première exécution de l’ESP32. Donc, la boucle () est vide. L’idée est que vous utilisiez cet exemple dans votre propre application. Par exemple, pour envoyer une notification lorsqu’un mouvement est détecté, lorsqu’une lecture de capteur est supérieure ou inférieure à un certain seuil, pour envoyer régulièrement des lectures de capteur ou des états GPIO, et bien d’autres possibilités dans les domaines de la domotique et de l’IoT.
Manifestation
Après avoir inséré le SSID, le mot de passe, la clé utilisateur et la clé API, vous pouvez télécharger le code sur votre carte.
Après le téléchargement, ouvrez le moniteur série à un débit en bauds de 115200. Appuyez sur le bouton ESP32 RST pour qu’il commence à exécuter le code.
Vous devriez recevoir un message de réussite (code de réponse : 200) sur votre Serial Monitor.

Et vous devriez recevoir la notification sur votre smartphone.

Vous pouvez cliquer sur le message pour l’ouvrir.

Paramètres de transfert
Sur votre appareil, vous pouvez régler les paramètres de vos notifications. Cliquez sur l’icône (…) dans le coin supérieur droit.
Vous obtiendrez une page comme indiqué ci-dessous. Vous pouvez définir des heures silencieuses et d’autres paramètres tels que le volume et le son pour les alertes critiques, ajouter des sons personnalisés, etc.

Conclusion
Pushover est un service de notification que vous pouvez utiliser pour recevoir des notifications de différentes applications et services au même endroit. Vous pouvez gérer vos notifications en termes de priorité, définir des heures de silence et même définir des sons différents en fonction de la notification reçue.
Dans ce didacticiel, vous avez appris à envoyer des notifications ESP32 à Pushover à l’aide de l’API de Pushover. L’utilisation de l’application Pushover n’est pas gratuite, mais vous disposez d’un essai gratuit de 30 jours. Si vous décidez qu’il est utile pour vos projets, vous pouvez avoir accès à l’application avec un paiement unique de seulement 5 $.
Si vous utilisez une carte ESP8266, nous avons un tutoriel similaire :
- [To be posted] Notifications pushover avec l’ESP8266 (NodeMCU)
Nous espérons que vous avez trouvé ce tutoriel utile.
Nous avons d’autres articles et projets montrant comment envoyer d’autres méthodes de notification comme les messages et SMS par e-mail, WhatsApp et Telegram :
Nous espérons que vous trouverez ce tutoriel utile.
En savoir plus sur l’ESP32 avec nos ressources :
Merci d’avoir lu.
Cette vidéo vous emmène dans l’histoire de Raspberry Pi :

-
XTVTX 2 Pièces ESP32 cartes de développement ESP32S 2,4 GHz double mode WiFi + Bluetooth Dual Core Microcontrôleur Processeur intégré avec antenne ESP-32s RF AMP Filtre AP STA pour Arduino IDETrès faible consommation d'énergie, fonctionne parfaitement avec le Arduino IDE ESP32 cartes de développement Bluetooth double mode WiFi 2,4 GHz ESP32 Prend en charge trois modes : AP, STA, et AP STA L'ESP32 est sûr, fiable et évolutif pour une variété d'applications Microcontrôleur Bluetooth à double cœur intégré avec antenne ESP32s RF Filtre AP STA
-
Freenove Development Kit pour ESP32-S3 (Compatible avec Arduino IDE), Onboard Camera Wireless Stereo Speakers Heart Rate Sensor Colorful Touch Screen, Tutorial CodeESP32-S3-WROOM -> A powerful and small controller with onboard camera and wireless. (Includes 1GB memory card.) Onboard devices -> Camera, wireless, RGB LED, stereo speakers, audio converter, heart rate sensor, colorful touch screen. Comprehensive project -> A simple embedded system example with camera, picture browser, music player, heart rate meter. Heart rate sensor -> A sensor that can measure heart rate through finger touch. Tutorial and code -> Example projects for ESP32-S3 and using LVGL GUI library. The download link can be found on the product box. (No paper tutorial.)
-
Freenove Super Starter Kit (Inclus) pour Esp32 - Wrover (Compatible avec Arduino IDE), CaméRa sans Fil EmbarquéE, Python C, 536 Pages De Tutoriels DéTailléS, 173 Articles, 81 ProjetsESP32-WROVER -> A powerful and small controller with onboard camera and wireless. (Included in this kit.) 2 programming languages -> MicroPython and C. 536-page detailed tutorial (including basic electronics knowledge) -> The download link can be found on the product box. (No paper tutorial.) 173 items for 82 projects -> Each project has circuit diagrams and verified code with detailed explanations. Get support -> Our technical support team is always ready to answer your questions.