📬 MailSense32
MailSense32 est un détecteur de courrier intelligent basé sur ESP32, conçu pour fonctionner sur batterie pendant 1 à 3 ans sans intervention. L’appareil dort en deep sleep (consommation ~10µA) et se réveille uniquement lors d’une détection, envoie une notification, puis se rendort immédiatement.
Tout est configurable via un wizard WiFi embarqué, accessible depuis votre téléphone sans installer aucune application.
Fonctionnalités principales
- Deep sleep ultra-basse consommation (~10µA au repos)
- Wizard WiFi en mode Access Point — configuration depuis votre téléphone
- 2 capteurs supportés : Reed Switch magnétique ou capteur PIR
- 4 méthodes de notification : Email SMTP, Ntfy.sh, Home Assistant MQTT, Telegram
- Monitoring batterie inclus dans chaque notification
- Mode charge — notification automatique quand la batterie atteint 95%
- Mode maintenance — désactive la détection pour l’installation et la maintenance
- Bouton externe — accès rapide à la page de statut et au mode charge
- Fuseau horaire configurable — heure d’été automatique
- Message de notification personnalisable avec heure de détection
- Anti-doublon configurable (délai entre deux notifications)
- Page de statut accessible via l’IP locale après chaque réveil
- Accès au wizard depuis la page de statut sans manipulation physique
- Interface bilingue Français / Anglais
Matériel nécessaire
| Composant | Détail |
| ESP32-DevKitC V4 | Avec antenne externe IPEX recommandée |
| Reed Switch MC-38 | Avec aimant (souvent inclus) |
| TP4056 Module | Avec protection batterie intégrée |
| Batterie LiPo 3.7V | 1000mAh minimum recommandé |
| Résistances | 100kΩ + 220kΩ (pont diviseur batterie) |
2. Installation du sketch avec Arduino IDE
2.1 Installer le support ESP32
Dans Arduino IDE, allez dans Fichier → Préférences et ajoutez l’URL suivante dans le champ « URL de gestionnaire de cartes supplémentaires » :
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Puis allez dans Outils → Type de carte → Gestionnaire de cartes, recherchez esp32 et installez esp32 by Espressif Systems.
2.2 Installer les librairies
Via Outils → Gérer les bibliothèques, installez les trois librairies suivantes dans cet ordre :
- ArduinoJson par Benoit Blanchon
- PubSubClient par Nick O’Leary
- ESP Mail Client par Mobizt
💡 Pour ESP Mail Client, vérifiez bien que l’auteur est Mobizt — il existe des librairies similaires avec des noms proches.
2.3 Sélectionner la carte
Dans Outils → Type de carte → ESP32 Arduino, sélectionnez ESP32 Dev Module.
2.4 Modifier le schéma de partition — IMPORTANT
⚠️ Cette étape est obligatoire. Sans ce changement, le sketch est trop volumineux et Arduino refusera de le compiler avec l’erreur : text section exceeds available space in board.
Dans le menu Outils → Partition Scheme, sélectionnez :
Huge APP (3MB No OTA / 1MB SPIFFS)

Ce réglage augmente l’espace disponible pour le code en sacrifiant la fonctionnalité OTA (mise à jour sans fil), qui n’est pas utilisée dans ce projet.
2.5 Flasher le firmware
- Ouvrez MailSense32.ino dans Arduino IDE
- Sélectionnez le bon port COM dans Outils → Port
- Cliquez sur Upload (flèche →)
⚠️ Si l’upload se bloque sur « Connecting… » : maintenez le bouton BOOT de l’ESP32 enfoncé dès que ce message apparaît, et relâchez dès que l’upload démarre. C’est un comportement normal sur les ESP32 DevKitC.
2.6 Premier démarrage — Wizard de configuration
- Alimentez l’ESP32 (USB ou batterie)
- Sur votre téléphone, connectez-vous au réseau WiFi : MailSense32-Setup (mot de passe : mailsense32)
- Ouvrez votre navigateur sur : http://192.168.4.1
- Le wizard s’affiche automatiquement

💡 Pour accéder à nouveau au wizard après configuration : maintenez le bouton BOOT enfoncé pendant 3 secondes au démarrage, ou utilisez le bouton « Ouvrir le wizard » depuis la page de statut (192.168.x.x).
2.7 Schéma de câblage complet
Avant de fermer le boîtier, vérifiez chaque connexion à l’aide du tableau ci-dessous. Le montage nécessite seulement 7 connexions principales, sans soudure si vous utilisez une breadboard pour les tests.
⚠️ Vérifiez toujours la polarité avant de brancher la batterie. Un branchement inversé sur le TP4056 peut endommager la batterie ou le module.
Vue d’ensemble du circuit
- Batterie LiPo → TP4056 (charge et protection)
- TP4056 OUT → ESP32 VIN/GND (alimentation)
- Reed Switch ou PIR → GPIO4 (détection)
- BAT+ → Pont diviseur → GPIO35 (mesure batterie)
💡 Le schéma visuel est disponible dans l’article en ligne sur egamaker.be avec toutes les connexions illustrées.

Tableau de câblage complet
| De | Vers | Fil | Description |
| Batterie (+) | TP4056 BAT+ | Rouge | Alimentation positive batterie |
| Batterie (−) | TP4056 BAT− | Noir | Alimentation négative batterie |
| TP4056 OUT+ | ESP32 VIN | Rouge | Tension régulée vers l’ESP32 |
| TP4056 OUT− | ESP32 GND | Noir | GND commun |
| TP4056 BAT+ | R1 (100kΩ) | Orange | Début du pont diviseur |
| R1 / R2 jonction | ESP32 GPIO35 | Orange | Lecture tension batterie |
| R2 (220kΩ) | ESP32 GND | Noir | Fin du pont diviseur vers GND |
Capteur — choisissez-en un seul
Option A — Reed Switch (recommandé)
| De | Vers | Fil | Description |
| Reed Switch fil 1 | ESP32 GPIO4 | Violet | Signal de détection |
| Reed Switch fil 2 | ESP32 GND | Noir | Référence GND |
💡 Pas de polarité sur le Reed Switch — les deux fils sont identiques. La résistance de pull-up interne est activée en software. Aucune résistance externe nécessaire.
Option B — Capteur PIR
| De | Vers | Fil | Description |
| PIR VCC | ESP32 3.3V ou 5V | Rouge | Alimentation du PIR |
| PIR GND | ESP32 GND | Noir | Référence GND |
| PIR OUT/Signal | ESP32 GPIO4 | Jaune | Signal de détection mouvement |
⚠️ Le PIR consomme du courant en permanence (~50-100µA), ce qui réduit légèrement l’autonomie sur batterie. Orientez le capteur vers l’intérieur de la boîte aux lettres pour éviter les faux positifs.
Pont diviseur — explication
Le pont diviseur est composé de deux résistances en série entre BAT+ et GND. La tension prélevée à la jonction des deux résistances est proportionnelle à la tension de la batterie, mais ramenée à un niveau compatible avec le GPIO de l’ESP32 (maximum 3.3V).
| Composant | Valeur | Connexion | Rôle |
| R1 | 100 kΩ | BAT+ → jonction | Diviseur supérieur |
| R2 | 220 kΩ | Jonction → GND | Diviseur inférieur |
| Jonction R1/R2 | — | → GPIO35 | Point de mesure |

💡 Avec ce rapport R1/R2, une batterie pleine (4.2V) donne 2.89V sur GPIO35, et une batterie vide (3.0V) donne 2.06V — toujours en dessous du maximum de 3.3V du GPIO.
Points de vérification avant mise en service
- ✓ Batterie branchée avec la bonne polarité sur BAT+ et BAT−
- ✓ LED rouge du TP4056 allumée = charge en cours
- ✓ LED bleue du TP4056 allumée = charge complète
- ✓ Retirer l’aimant du reed switch → notification reçue
- ✓ ESP32 s’allume et affiche le wizard au premier démarrage
- ✓ Niveau batterie > 0% dans la page de statut (non branché USB)
2.8 Bouton externe (optionnel)
MailSense32 supporte un bouton poussoir physique accessible depuis l’extérieur du boîtier. Ce bouton permet de réveiller l’ESP32 et d’accéder à la page de statut sans avoir à manipuler le Reed Switch ou ouvrir le boîtier.
Il s’agit d’un simple tactile switch 6x6mm — le même type que le bouton BOOT déjà présent sur la carte ESP32.
Branchement
| Patte | Connexion |
| Patte 1 ou 2 | GPIO12 |
| Patte 3 ou 4 | GND |
💡 Le bouton possède 4 pattes, mais ce sont 2 paires connectées ensemble. Prenez toujours deux pattes en diagonale — peu importe le sens. Pas de polarité à respecter.
Fonctionnement
| Action | Résultat |
| Appui court (< 2 sec) | Réveille l’ESP32 + ouvre la page de statut 3 minutes |
| Appui long (3 secondes) | Active le mode charge directement |
3. Capteurs de détection
3.1 Reed Switch (interrupteur magnétique)

Le Reed Switch est la solution recommandée pour une boîte aux lettres. C’est un interrupteur qui se ferme en présence d’un aimant et s’ouvre quand l’aimant s’éloigne.
Principe de fonctionnement
- Porte fermée → aimant collé contre le switch → circuit fermé → GPIO4 à GND → ESP32 dort
- Porte ouverte → aimant s’éloigne → circuit ouvert → GPIO4 passe à HIGH → ESP32 se réveille et envoie la notification
Câblage
| Fil Reed Switch | Connexion ESP32 |
| Fil 1 (peu importe lequel) | GPIO4 |
| Fil 2 | GND |
💡 Pas de polarité sur un Reed Switch — les deux fils sont identiques. La résistance de pull-up est activée en software, aucune résistance externe n’est nécessaire.
Placement de l’aimant
Collez l’aimant sur le rabat ou la porte de la boîte aux lettres, et le Reed Switch en face sur le bord fixe. Quand la porte est fermée, l’aimant doit être à moins de 10mm du switch.
Avantages du Reed Switch
- Consommation zéro au repos (aucun courant ne traverse le switch quand il est fermé)
- Fiabilité maximale — pas de faux positifs
- Coût minimal (~1€ aimant inclus)
- Durée de vie très longue (millions de cycles)
3.2 Capteur PIR (détection de mouvement)

Le capteur PIR (Passive Infrared) détecte les mouvements par rayonnement infrarouge. Il peut être utilisé à la place du Reed Switch si vous ne souhaitez pas coller un aimant sur la porte.
Principe de fonctionnement
Le capteur PIR émet un signal HIGH sur sa sortie lors d’une détection de mouvement. Dans MailSense32, ce signal réveille l’ESP32 via l’interruption EXT0 sur GPIO4.
Câblage
| Fil PIR | Connexion ESP32 |
| VCC (rouge) | 3.3V ou 5V selon le module |
| GND (noir) | GND |
| OUT / Signal (jaune) | GPIO4 |
⚠️ Contrairement au Reed Switch, le PIR consomme du courant en permanence (typiquement 50-100µA). L’autonomie sur batterie sera légèrement réduite.
Conseils d’installation
- Orientez le PIR vers l’intérieur de la boîte aux lettres pour éviter les faux positifs
- Réglez la sensibilité au minimum pour réduire la portée de détection
- Augmentez le délai anti-doublon à 10-15 minutes pour éviter les déclenchements multiples
4. Méthodes de notification
MailSense32 supporte 4 méthodes de notification, configurables depuis le wizard. Chaque notification inclut automatiquement l’heure de détection et le niveau de batterie.
4.1 Email SMTP
La méthode la plus universelle — tout le monde possède une adresse email. Compatible avec Gmail, Outlook, et tout serveur SMTP standard.
Configuration avec Gmail
Gmail nécessite un « App Password » (mot de passe d’application) à la place de votre mot de passe habituel. Voici comment le créer :
- Activez la validation en 2 étapes sur votre compte Google : myaccount.google.com/signinoptions/two-step-verification
- Accédez à la page App Passwords : myaccount.google.com/apppasswords
- Donnez un nom (ex : MailSense32) et cliquez sur Créer
- Google génère un mot de passe de 16 caractères — copiez-le immédiatement (il ne s’affiche qu’une seule fois)
Paramètres à entrer dans le wizard
| Champ | Valeur |
| Serveur SMTP | smtp.gmail.com |
| Port | 587 |
| Utilisateur | votre.adresse@gmail.com |
| App Password | Les 16 caractères sans espaces |
| Destinataire | votre.adresse@gmail.com (ou autre) |
⚠️ Collez les 16 caractères du App Password sans espaces. N’utilisez jamais votre mot de passe Gmail habituel.
Exemple de notification reçue

4.2 Ntfy.sh
Ntfy.sh est un service de push notification open source, gratuit et minimaliste. Son principe est radicalement simple : envoyer une notification sur votre téléphone se résume à une seule requête HTTP vers une URL.
Pas de compte obligatoire, pas de SDK à installer, pas de configuration complexe. L’ESP32 envoie un message HTTP en une ligne de code, et votre téléphone reçoit la notification instantanément via l’application Ntfy.
4.2.1 Comment ça fonctionne
Le système repose sur le concept de « topic » — un canal de communication identifié par un nom unique dans l’URL :
https://ntfy.sh/mon-topic-unique ← l’ESP32 publie ici
Application Ntfy sur téléphone ← abonnée au même topic
Quand l’ESP32 envoie une requête HTTP POST vers cette URL, tous les appareils abonnés à ce topic reçoivent la notification immédiatement.
4.2.2 Les deux options disponibles
| Ntfy.sh public | Self-hosted (NAS) | |
| Serveur | ntfy.sh (cloud) | Votre Synology |
| Confidentialité | Topic public* | 100% privé |
| Coût | Gratuit | Gratuit |
| Compte requis | Non | Non |
| Accès extérieur | Oui (internet) | Réseau local uniquement** |
| Installation | Aucune | Docker sur NAS (~15 min) |
| Recommandé pour | Test rapide / débutant | Usage quotidien / NAS dispo |
💡 * Sur ntfy.sh public, n’importe qui connaissant votre topic peut s’y abonner. Choisissez un nom suffisamment aléatoire pour éviter les collisions (ex: mailsense-fab-x7k2).
💡 ** Sans ouverture de port sur votre routeur, ntfy self-hosted ne sera accessible que depuis votre réseau WiFi local — ce qui est parfait pour MailSense32 qui est lui-même sur votre réseau local.
4.2.3 Option A — Ntfy.sh public (sans installation)
La solution la plus rapide à mettre en place. Aucun serveur, aucune installation — tout fonctionne via le service en ligne ntfy.sh.
Installer l’application sur votre téléphone
- Android : Google Play Store → rechercher « Ntfy »
- iOS : App Store → rechercher « Ntfy »
Choisir un nom de topic
Le topic est le nom de votre canal de notification. Choisissez un nom unique et suffisamment aléatoire :
💡 Exemples : mailsense-fab-2024, boite-aux-lettres-x7k2, ms32-egalistel. Évitez des noms trop génériques comme « courrier » ou « mailbox ».
S’abonner depuis l’application
- Ouvrez l’application Ntfy sur votre téléphone
- Appuyez sur le bouton + (Ajouter un abonnement)
- Entrez le nom de votre topic (ex: mailsense-fab-2024)
- Laissez le serveur sur ntfy.sh
- Appuyez sur Abonner.
Configurer dans le wizard MailSense32
| Champ | Valeur |
| Méthode | Ntfy.sh |
| Serveur Ntfy | https://ntfy.sh |
| Topic | votre-topic-unique |
| Token | (laisser vide) |
💡 Cliquez sur « Envoyer une notification test » dans le wizard pour vérifier que tout fonctionne avant de fermer le boîtier.
Exemple de notification reçue

4.2.4 Option B — Self-hosted sur NAS Synology
Cette option installe votre propre serveur Ntfy directement sur votre NAS Synology via Docker. Toutes vos notifications restent sur votre réseau local, sans aucune donnée envoyée vers un service externe.
⚠️ Cette option nécessite que votre ESP32 et votre téléphone soient connectés au même réseau WiFi local. Sans ouverture de port sur votre routeur, les notifications ne fonctionneront pas depuis l’extérieur de votre domicile.
Tutoriel d’installation recommandé
Pour l’installation de Ntfy sur Synology, nous recommandons de suivre le tutoriel détaillé de Marius Hosting, qui couvre l’installation pas à pas via Container Manager ou Portainer :
mariushosting.com — How to Install Ntfy on Your Synology NAS
4.2.5 Résumé — Quel mode choisir ?
| Ntfy.sh public | Self-hosted | |
| Installation | Aucune | ~15 min via tutoriel |
| Confidentialité | Moyenne | Maximale |
| Disponibilité | Internet requis | WiFi local suffit |
| Maintenance | Aucune | Mises à jour Docker |
| Idéal si… | Test rapide ou débutant | NAS disponible + vie privée |
💡 Pour MailSense32 dans une boîte aux lettres d’immeuble, le self-hosted sur NAS est idéal : l’ESP32 et le NAS sont sur le même réseau WiFi, aucune connexion Internet n’est nécessaire pour les notifications.
4.3 Home Assistant MQTT
Home Assistant est une plateforme domotique open source qui permet de centraliser et d’automatiser tous les appareils connectés de votre domicile. L’intégration de MailSense32 avec Home Assistant se fait via le protocole MQTT, un protocole de messagerie léger et rapide conçu pour les appareils IoT.
4.3.1 Les deux acteurs : MQTT et Home Assistant
Le protocole MQTT
MQTT fonctionne sur un modèle « publish / subscribe » (publier / s’abonner) :
- L’ESP32 (MailSense32) publie un message sur un « topic » MQTT quand il détecte du courrier
- Home Assistant est abonné à ce topic et reçoit le message instantanément
- Un broker MQTT (serveur intermédiaire) gère la distribution des messages
💡 Le broker MQTT le plus utilisé avec Home Assistant est Mosquitto, disponible directement comme add-on officiel dans Home Assistant.
Home Assistant
Home Assistant est la plateforme domotique qui reçoit les données de MailSense32, les affiche dans un tableau de bord, et peut déclencher des automatisations (notification sur téléphone, allumage d’une lumière, envoi d’un email, etc.).
⚠️ Cette option s’adresse aux utilisateurs ayant déjà une installation Home Assistant fonctionnelle. Si vous débutez en domotique, les options Email ou Ntfy.sh sont plus simples à mettre en place.
4.3.2 Ce que MailSense32 envoie
À chaque détection de courrier, MailSense32 publie un message JSON sur le topic MQTT configuré :
{
"state": "triggered",
"message": "📬 Vous avez du courrier !",
"time": "15/03/2026 09:42",
"battery": 87,
"test": false
}
💡 Le champ « test » est true uniquement lors d’un envoi depuis le bouton test du wizard — pratique pour distinguer les vrais événements des tests dans Home Assistant.
4.3.3 Prérequis
- Une instance Home Assistant installée et fonctionnelle
- L’add-on Mosquitto Broker installé dans Home Assistant
- L’intégration MQTT activée dans Home Assistant
- Connaître l’adresse IP de votre serveur Home Assistant sur le réseau local
4.3.4 Ressources pour l’installation
Si vous n’avez pas encore Home Assistant ou Mosquitto, voici les ressources officielles recommandées :
Installation Home Assistant : home-assistant.io/installation
Add-on Mosquitto Broker : home-assistant.io/docs/mqtt/broker
Intégration MQTT dans HA : home-assistant.io/integrations/mqtt
4.3.5 Configuration dans le wizard MailSense32
| Champ | Valeur |
| Méthode | Home Assistant MQTT |
| Broker MQTT | 192.168.x.x (IP de votre serveur HA) |
| Port | 1883 (port MQTT par défaut) |
| Utilisateur | Optionnel — identifiant MQTT si configuré |
| Mot de passe | Optionnel — mot de passe MQTT si configuré |
| Topic MQTT | mailsense32/mail (modifiable) |
💡 Le port 1883 est le port MQTT standard non chiffré. Si votre broker utilise TLS (port 8883), une modification du code source sera nécessaire — cette configuration avancée sort du cadre de ce guide.
4.3.6 Configurer le sensor dans Home Assistant
Une fois MailSense32 configuré, ajoutez ce sensor dans votre fichier configuration.yaml de Home Assistant pour recevoir et exploiter les données :
mqtt:
sensor:
– name: « MailSense32 »
state_topic: « mailsense32/mail »
value_template: « {{ value_json.state }} »
json_attributes_topic: « mailsense32/mail »
json_attributes_template: « {{ value_json | tojson }} »
💡 Après modification de configuration.yaml, redémarrez Home Assistant pour appliquer les changements (Paramètres → Système → Redémarrer).
4.3.7 Créer une automatisation
L’intérêt principal de Home Assistant est de pouvoir déclencher des actions automatiques. Exemple d’automatisation pour recevoir une notification mobile quand du courrier arrive :
automation:
- alias: "Courrier reçu"
trigger:
- platform: mqtt
topic: mailsense32/mail
condition:
- condition: template
value_template: "{{ trigger.payload_json.test == false }}"
action:
- service: notify.mobile_app
data:
title: "📬 Courrier !"
message: "{{ trigger.payload_json.message }}"
💡 La condition « test == false » évite de déclencher l’automatisation lors des envois de test depuis le wizard MailSense32.
4.3.8 Points importants
- Réseau local uniquement : comme pour Ntfy self-hosted, sans ouverture de port, MailSense32 ne peut contacter Home Assistant que depuis le réseau WiFi local.
- IP fixe recommandée : configurez une adresse IP fixe pour votre serveur Home Assistant pour éviter que l’adresse change après un redémarrage.
- Authentification MQTT : si votre broker Mosquitto utilise un identifiant et mot de passe, renseignez-les dans le wizard. Sinon, laissez ces champs vides.
- Topic personnalisable : vous pouvez modifier le topic mailsense32/mail selon votre organisation dans Home Assistant.
4.4 Telegram
Telegram est une application de messagerie gratuite disponible sur Android, iOS, Windows, Mac et Linux. Elle permet de créer des « bots » — des comptes automatisés capables d’envoyer des messages à la demande.
MailSense32 utilise l’API officielle de Telegram pour envoyer une notification directement dans votre conversation avec le bot, sur tous vos appareils connectés à Telegram simultanément.
4.4.1 Avantages de Telegram
- Gratuit et sans publicité
- Fonctionne depuis n’importe où — connexion Internet requise, pas de réseau local nécessaire
- Notification instantanée sur tous vos appareils (téléphone, PC, tablette)
- Aucun serveur à installer — tout passe par l’infrastructure Telegram
- API simple — une seule requête HTTP depuis l’ESP32
4.4.2 Créer un bot Telegram
La création d’un bot Telegram se fait entièrement depuis l’application, en quelques minutes, via le bot officiel BotFather.
Étape 1 — Contacter BotFather
- Ouvrez Telegram sur votre téléphone ou PC
- Dans la barre de recherche, tapez @BotFather
- Sélectionnez le compte officiel (avec la coche bleue de vérification)
- Envoyez la commande /newbot
Étape 2 — Configurer le bot
- BotFather vous demande un nom d’affichage pour votre bot — entrez ce que vous souhaitez (ex: MailSense32 Home)
- Puis un nom d’utilisateur unique — il doit se terminer par bot (ex: mailsense32_fab_bot)
- BotFather vous répond avec le Token de votre bot, sous la forme :
123456789:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
⚠️ Copiez et conservez ce token précieusement. Il donne le contrôle total de votre bot. Ne le partagez jamais publiquement.
4.4.3 Récupérer votre Chat ID
Le Chat ID est l’identifiant unique de votre conversation avec le bot. MailSense32 en a besoin pour savoir à qui envoyer la notification.
Étape 1 — Démarrer une conversation avec votre bot
- Dans Telegram, recherchez le nom d’utilisateur de votre bot (ex: @mailsense32_fab_bot)
- Cliquez sur Démarrer ou envoyez n’importe quel message à votre bot
Étape 2 — Récupérer le Chat ID via l’API
Ouvrez un navigateur web et accédez à l’URL suivante en remplaçant TOKEN par votre token :
https://api.telegram.org/bot[TOKEN]/getUpdates
Exemple concret :
https://api.telegram.org/bot123456789:AAxxxx/getUpdates
Vous obtenez une réponse JSON. Repérez le champ « id » dans la section « chat » :
{"ok":true,"result":[{
"message":{
"chat":{
"id": 987654321, ← voici votre Chat ID
"first_name": "Fab",
}
}
}]}
💡 Si la réponse est vide (result: []), envoyez d’abord un message à votre bot depuis Telegram, puis rechargez l’URL.
4.4.4 Configurer dans le wizard MailSense32
| Champ | Valeur |
| Méthode | Telegram |
| Bot Token | 123456789:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| Chat ID | 987654321 |
💡 Cliquez sur « Envoyer une notification test » dans le wizard pour vérifier que le bot vous envoie bien un message avant de fermer le boîtier.
4.4.5 Exemple de notification reçue
Le message reçu dans Telegram ressemble à ceci :

4.4.6 Partager les notifications avec plusieurs personnes
Par défaut, seul votre Chat ID reçoit les notifications. Si vous souhaitez que d’autres personnes (conjoint, colocataire) reçoivent également les notifications, deux options sont possibles :
Option A — Groupe Telegram
- Créez un groupe Telegram avec les personnes concernées
- Ajoutez votre bot au groupe
- Récupérez le Chat ID du groupe via getUpdates (il sera négatif, ex: -987654321)
- Entrez ce Chat ID négatif dans le wizard
Option B — Channel Telegram
- Créez un channel Telegram (public ou privé)
- Ajoutez votre bot comme administrateur
- Utilisez le nom du channel comme Chat ID (ex: @mon_channel_courrier)
4.4.7 Points importants
- Connexion Internet requise : contrairement à Ntfy self-hosted ou Home Assistant, Telegram nécessite que l’ESP32 puisse accéder à Internet lors de chaque détection.
- Token à protéger : ne publiez jamais votre token bot dans un article ou sur GitHub — il donne le contrôle total du bot.
- Bot inactif : Telegram peut désactiver un bot qui n’est pas utilisé pendant longtemps. Envoyez un test occasionnel pour le maintenir actif.
- Gratuit sans limite : l’API Telegram bot est entièrement gratuite, sans limite de messages pour un usage personnel.
5. Page de statut
Après chaque réveil, l’ESP32 reste actif 3 minutes avec un serveur web accessible depuis votre réseau local. Ouvrez l’adresse IP affichée dans le moniteur série (ex : 192.168.0.198) dans votre navigateur.

Informations affichées
- Niveau de batterie en temps réel
- Force du signal WiFi (RSSI en dBm)
- Heure de la dernière détection
- Nombre total de déclenchements
- Statut de la dernière notification (✅ Envoyée / ❌ Échec)
- Configuration active (réseau, capteur, méthode de notification)
- Activer le mode charge : surveille la batterie toutes les 5 minutes et envoie une notification quand elle atteint 95%
- 🔴 Détection désactivée / 🟢 Détection active — active ou désactive les notifications sans manipulation physique
Actions disponibles
- Ouvrir le wizard : accès direct à la configuration sans manipulation physique
- Envoyer une notification test : vérifier que la notification fonctionne
- 🔴 / 🟢 Détection : activer ou désactiver le mode maintenance
- Activer le mode charge : surveille la batterie et notifie à 95%
- Mettre en veille : forcer le retour en deep sleep immédiatement
💡 La page reste active tant qu’elle est ouverte dans le navigateur — le timer de veille se réinitialise automatiquement toutes les 25 secondes. Dès que vous fermez la page, le compteur reprend normalement jusqu’à la mise en veille.
5.1 Comment activer le mode charge
- Branchez le câble USB de charge sur le port micro-USB du TP4056
- La LED rouge du TP4056 s’allume — la charge est en cours
- Réveillez l’ESP32 en éloignant brièvement l’aimant du Reed Switch, en appuyant sur le bouton externe, ou en appuyant sur le bouton BOOT
- Connectez-vous à votre WiFi et ouvrez : http://192.168.x.x (IP de l’ESP32)
- Dans la section Actions, cliquez sur « 🔋 Activer le mode charge »
- Le bouton passe à « ✅ Mode charge actif » — c’est confirmé
✅ L’ESP32 entre maintenant en veille périodique. Vous pouvez quitter la page et vaquer à vos occupations.
5.2 La notification de fin de charge
Quand la batterie atteint 95%, vous recevez une notification via la méthode configurée dans le wizard :
🔋 Batterie chargée !
Vous pouvez retirer le chargeur.
À réception de cette notification, débranchez simplement le câble USB. Le mode charge se désactive automatiquement et MailSense32 retourne en mode normal — prêt à détecter le prochain courrier.
5.3 Points importants
- Disponibilité de la page de statut : l’ESP32 reste accessible 3 minutes après chaque réveil. Activez le mode charge dans ce délai après avoir réveillé l’appareil.
- Consommation en mode charge : l’ESP32 se réveille toutes les 5 minutes pendant quelques secondes — la consommation reste très faible sur la durée de charge.
- Interruption possible : si vous avez besoin de l’ESP32 en mode normal avant la fin de charge, réveillez-le et accédez à la page de statut — le mode charge se désactivera au prochain cycle.
- Notification unique : la notification de fin de charge n’est envoyée qu’une seule fois. Si vous ne la recevez pas (WiFi coupé momentanément), vérifiez le niveau de batterie sur la page de statut.
5.4 Mode maintenance
Le mode maintenance permet de désactiver temporairement toute détection de courrier, sans débrancher quoi que ce soit. C’est la première chose à faire lors de l’installation du boîtier — et la dernière avant de le refermer.
| Bouton affiché | État | Comportement |
| 🔴 Détection désactivée | Par défaut (premier démarrage) | Aucune notification — Reed Switch ignoré |
| 🟢 Détection active | Après activation manuelle | Fonctionnement normal |
Un clic sur le bouton bascule entre les deux états. Le changement est immédiat et survit au deep sleep — l’ESP32 se souvient de l’état même après une mise en veille.
Workflow d’installation recommandé
- Flashez le code et configurez le wizard
- Installez le boîtier dans la boîte aux lettres
- Ouvrez la page de statut — le bouton affiche 🔴 Détection désactivée
- Cliquez sur le bouton — il passe à 🟢 Détection active
- Testez en éloignant l’aimant — vous devez recevoir une notification
- Fermez le boîtier — le projet est opérationnel
✅ Une fois la détection activée, MailSense32 fonctionne de manière totalement autonome.
5.5 Conclusion — Page de statut
La page de statut est un outil précieux, particulièrement en phase de test et d’installation. Elle vous donne une visibilité complète sur l’état de votre MailSense32 sans avoir à brancher un câble USB ni ouvrir le moniteur série d’Arduino.
Une fois votre boîtier fermé et installé dans la boîte aux lettres, cette page reste votre interface de contrôle principale. Elle vous permet de vérifier d’un coup d’œil que tout fonctionne, de modifier la configuration si nécessaire, et de tester une notification sans attendre le facteur.
💡 Pensez à noter l’adresse IP de votre ESP32 (visible dans le moniteur série au premier démarrage). Vous pouvez également configurer une IP fixe dans votre routeur pour que l’adresse ne change jamais.
6. Conclusion
MailSense32 est un projet maker complet qui combine plusieurs aspects essentiels de l’électronique embarquée : la gestion de l’énergie avec le deep sleep, la connectivité WiFi, les interfaces web embarquées et la notification multi-plateforme.
Conçu pour fonctionner sur batterie pendant 1 à 3 ans sans intervention, il s’adapte à tous les environnements grâce à son wizard de configuration accessible depuis n’importe quel téléphone. Que vous soyez dans un appartement, une maison ou un immeuble avec des boîtes aux lettres communes, MailSense32 s’installe discrètement et fonctionne de manière totalement autonome.
Le code source complet est disponible sur GitHub sous licence MIT — vous êtes libre de le modifier, l’améliorer et le partager. Si ce projet vous a été utile, n’hésitez pas à laisser une étoile sur le dépôt et à partager l’article autour de vous.
Quelle méthode de notification choisir ?
MailSense32 supporte 4 méthodes de notification différentes, chacune avec ses avantages et contraintes. Le tableau ci-dessous vous aide à choisir celle qui correspond le mieux à votre situation.
La méthode se configure entièrement depuis le wizard — aucune recompilation du code n’est nécessaire. Vous pouvez en changer à tout moment en accédant au wizard via l’IP locale de l’ESP32 ou en maintenant le bouton BOOT 3 secondes.
💡 Vous hésitez ? Commencez par Email Gmail — c’est la méthode la plus simple et la plus universelle. Vous pourrez toujours migrer vers Ntfy self-hosted ou Telegram une fois le projet en place.
Un café aide à financer les prochains projets !
