Contents
Intro
Dans ce projet, j’ai développé un module de pesage pour surveiller le poids de mon bidon de pH moins (acide pour réguler le pH de ma piscine). Ce système utilise un ESP8266 (Wemos D1 Mini), un capteur de poids HX711, et ESPHome pour une intégration simple dans Home Assistant. Voici les détails de cette réalisation, du matériel au code, pour ceux qui voudraient surveiller leurs produits chimiques de piscine de manière automatisée !
Objectif du Projet
L’objectif était de créer un dispositif capable de :
- Mesurer le poids du bidon de pH moins en temps réel.
- Afficher le poids dans Home Assistant pour suivre la consommation.
- Générer des alertes (via Telegram ou autre) lorsque le bidon est presque vide.
- Permettre un étalonnage précis pour des mesures fiables.
Ce module s’inscrit dans mon système global de gestion de piscine (voir mon article sur la gestion d’une piscine avec ESPHome).
Matériel Utilisé
Montage
- Carte ESP8266 : J’ai utilisé une Wemos D1 Mini pour sa compacité et sa compatibilité avec ESPHome. Disponible sur AliExpress pour environ 3€.
- Support de Pesage : Une petite plateforme pour poser le bidon, fixée à la jauge de contrainte.
- Alimentation : Un adaptateur USB 5V pour alimenter la Wemos D1 Mini.
- Capteur HX711

Capteur HX711 : Un module de pesage avec une jauge de contrainte (capacité 20 kg), parfait pour un bidon de pH moins (poids typique : 15-20 kg plein). Disponible sur AliExpress pour environ 5€.
Le montage est assez simple :
- Connexion du HX711 à la Wemos D1 Mini :
- Pin DT (ou DOUT) du HX711 → Pin D0 de la Wemos.
- Pin SCK du HX711 → Pin D1 de la Wemos.
- Alimentation : VCC du HX711 à 5V (via la Wemos), GND à la masse.
- Fixation de la Jauge : Les jauges de contrainte sont collées sur une plateforme stable, avec le bidon posé dessus.
- Alimentation : La Wemos est alimentée via un câble USB connecté à une prise 5V.
- Jauges de Containte:

le cablage des jauges de contrainte
Configuration et Code ESPHome
Le code ESPHome est conçu pour lire le poids via le HX711, appliquer des filtres pour stabiliser les mesures, et envoyer les données à Home Assistant. Voici le code complet, suivi d’une explication détaillée :
Code ESPHome
substitutions:
device_name: esp129-pesage-ph-moins
adress_ip: "192.168.0.129"
time_timezone: "Europe/Paris"
friendly_name: esp129
esphome:
name: "esp129-esp32-pesage-ph-moins"
esp8266:
board: d1_mini
framework:
version: recommended
# Enable Home Assistant API
api:
web_server:
port: 80
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
reboot_timeout: 5min
manual_ip:
static_ip: ${adress_ip}
gateway: 192.168.0.254
subnet: 255.255.255.0
captive_portal:
logger:
baud_rate: 0 # Disable UART logger if using UART0 (pins 1,3)
sensor:
- platform: uptime
type: seconds
name: "${friendly_name} Uptime"
- platform: hx711
name: "${friendly_name} poids ph moins"
dout_pin: D0 # DT
clk_pin: D1 # SCK
gain: 128
update_interval: 10s
accuracy_decimals: 1
# moyenne sur 15*10s-Affichage toutes les 5*10s avec un Update_interval à 10s en mode étalonnage
# L'offset correspond au poids du bidon vide
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 5
send_first_at: 1
- calibrate_linear:
- -262000 -> 0
- 174400 -> 15.5
#- offset: -1.4
unit_of_measurement: kg
switch:
- platform: restart
name: "${friendly_name} Restart"
binary_sensor:
- platform: status
name: "${friendly_name} Status"
Explication du Code
- Substitutions :
- device_name : Nom unique de l’appareil (esp129-pesage-ph-moins).
- adress_ip : Adresse IP statique (192.168.0.129) pour une connexion stable.
- friendly_name : Nom convivial pour Home Assistant (esp129).
- Plateforme :
- Utilisation d’un ESP8266 (Wemos D1 Mini) avec le framework recommandé.
- API Home Assistant activée pour l’intégration.
- Serveur web (port 80) et OTA pour les mises à jour à distance.
- WiFi :
- Connexion au réseau avec une IP statique.
- Redémarrage automatique après 5 minutes si la connexion est perdue.
- Capteur HX711 :
- Pins : D0 (DT) et D1 (SCK).
- Gain : 128 (standard pour le HX711).
- Intervalle de mise à jour : 10 secondes.
- Filtres :
- sliding_window_moving_average : Moyenne glissante sur 15 mesures (15 * 10s = 150s), avec envoi toutes les 5 mesures (50s). Cela stabilise les lectures en éliminant les fluctuations dues aux vibrations ou au mouvement du liquide.
- calibrate_linear : Étalonnage linéaire avec deux points :
- -262000 -> 0 : Poids du bidon vide (0 kg).
- 174400 -> 15.5 : Poids mesuré avec un bidon de 15.5 kg (poids connu, mesuré avec une balance de référence).
- Un offset commenté (-1.4) peut être utilisé pour ajuster finement si nécessaire.
- Unité : kg, avec une précision d’une décimale.
- Autres Capteurs et Switches :
- uptime : Temps de fonctionnement de l’appareil.
- status : État de la connexion.
- restart : Bouton pour redémarrer l’appareil depuis Home Assistant.
Étalonnage du HX711
L’étalonnage est crucial pour des mesures précises :
- Poids du Bidon Vide : J’ai placé le bidon vide sur la plateforme et noté la valeur brute du HX711 (environ -262000). Cela correspond à 0 kg.
- Poids Connu : J’ai ajouté un bidon plein (15.5 kg, mesuré avec une balance ) et noté la valeur brute (174400).
- Calibration Linéaire : Ces deux points sont utilisés dans le filtre calibrate_linear pour convertir les valeurs brutes en kg.
- Ajustement : Si les mesures dérivent, un offset peut être ajouté (ex. : -1.4 dans le code, commenté pour l’instant).
Intégration dans Home Assistant
Le module s’intègre automatiquement via l’API ESPHome. Dans Home Assistant, j’ai créé une carte Lovelace avec :
- Capteur de Poids : Affiche le poids du bidon en kg (ex. : esp129 poids ph moins).
- État : Indicateur de connexion (esp129 Status).
- Bouton de Redémarrage : Pour redémarrer l’appareil si besoin (esp129 Restart).
J’ai aussi configuré une automatisation pour envoyer une notification Telegram si le poids descend sous 2 kg (bidon presque vide) :
automation:
- alias: Alerte Bidon pH Moins Vide
trigger:
platform: numeric_state
entity_id: sensor.esp129_poids_ph_moins
below: 2
action:
- service: notify.telegram
data:
message: "⚠️ Bidon de pH moins presque vide ! Poids restant : {{ states('sensor.esp129_poids_ph_moins') }} kg"
Résultats
Après plusieurs mois d’utilisation (mars 2025) :
- Précision : Les mesures sont stables grâce à la moyenne glissante, avec une précision d’environ ±0.2 kg.
- Consommation : Mon bidon de 15 kg dure environ 2 mois (été 2024), avec une consommation moyenne de 0.2-0.5 L/jour (voir mon article sur la gestion de piscine).
- Alertes : Les notifications Telegram fonctionnent bien, m’avertissant à temps pour remplir le bidon.
Améliorations Possibles
- Ajouter un capteur de température (ex. : DS18B20) pour compenser les variations dues à la température (le HX711 peut dériver légèrement).
- Intégrer un second HX711 pour peser le bidon de chlore liquide.
- Affiner l’étalonnage avec plus de points (ex. : 0 kg, 5 kg, 10 kg, 15 kg) pour une meilleure linéarité.
- Ajouter un afficheur local (ex. : LCD 16×2) pour voir le poids sans passer par Home Assistant.
Conclusion
Ce module de pesage est une addition pratique à mon système de gestion de piscine. Il me permet de suivre précisément la consommation de pH moins et d’éviter les interruptions de régulation. Le coût total est très raisonnable (< 10€), et l’intégration dans Home Assistant est un vrai plus pour l’automatisation. Si vous avez des questions ou voulez le code complet, laissez un commentaire !
Liste des publications en lien avec cet article:
- Filtration avec ESPHome et ESP32
- Filtration avec « AppDaemon » ou avec « Pool Pump Manager«
- Mesure de puissance électrique
- Mise à niveau automatique
- Mesure du pH
- Régulation du Ph
- Mise Hors Gel
- Mesure de pression