Domotique DIY #1 – Capteur distance MQTT + Home Assistant

Publié le Catégorisé comme DIY, Domotique, ESP8266 & ESP32, Hardware, Microcontrôleurs, Software Étiqueté , , , , , , , ,
Capteur distance wemos ESP8266

Pour monitorer le bon fonctionnement de mon adoucisseur d’eau, j’ai besoin de connaitre la hauteur de sel dans le réservoir. L’appareil fait déjà ce monitoring, mais se contente d’un beep dans la cave que personne ne remarque.

Ce petit « tuto » peut-être appliqué pour n’importe quelle mesure de distance avec un capteur ultrason HC-SR04 (présence d’une voiture dans le garage, …)

Le HC-SR04 est un capteur ultrason permettant une mesure (plus ou moins précise) entre 2 cm et 400 cm (en théorie). J’ai porté mon choix sur ce capteur pour son prix et l’absence de la nécessité d’une mesure précise.

Selon gadgetsthatgo.com, le capteur émet 8 cycles d’un ultrason à 40 kHz depuis sa partie émettrice (Trig). Ce son rebondi sur l’objet présent devant le capteur et revient à ce dernier (Echo). La vitesse du son étant connue et en ignorant sur une si courte distance que la vitesse du son n’est pas une constante. Il suffit de diviser le temps de parcours du son par 58 pour obtenir l’information en centimètres. Je vous invite à lire les sources pour plus d’informations.

Si vous souhaitez installer un serveur (broker) MQTT suivez mon article : Installer un broker MQTT (Mosquitto).

Liste des courses

  • ESP8266 (Wemos D1 Mini dans mon cas) -1€,
  • Capteur ultrason HC SR-04 -1€,
  • Un peu de fil,
  • Câble + Alim USB.

Dans mon cas, j’ai déjà un serveur MQTT fonctionnant déjà en local pour ma domotique.

Montage

Schéma de connexion du capteur au Wemos

HC-SR04 -> Wemos

VCC -> 5V

Trig -> D5

Echo -> D6

GND -> G

Code source

Ligne 81, 82 & 84 : la valeur 80 est la hauteur du réservoir de sel dans mon cas afin de permettre le calcul du pourcentage de sel restant dans la cuve.

Le code est donné en l’état sans garantie et sans support.

Intégration à Home Assistant

Dans mon configuration.yaml j’ajoute simplement :

  - platform: mqtt
    name: "Niveau Sel"
    state_topic: "42/cave/sensors/sel"
    unit_of_measurement: 'Cm'
    value_template: "{{ value_json.niveaucm }}"
  - platform: mqtt
    name: "Niveau Sel"
    state_topic: "42/cave/sensors/sel"
    unit_of_measurement: '%'
    value_template: "{{ value_json.remplissage }}"

Résultat

Pour le moment, le capteur est simplement collé avec un morceau de collant double face épais en attendant une petite boite imprimée en 3D.

Le résultat de la mesure arrive bien dans Home Assistant, ce qui me permet d’avoir une bonne idée du niveau de sel.

Les prochaines étapes :

  • Ajouter une alerte et notification si le niveau devient trop bas pour le fonctionnement de la machine,
  • Passer la sonde en OTA,
  • Ajouter un deep sleep plutôt qu’un delay.

Observations

@andreadonno m’a fait remarqué l’existence du projet ESPHome qui semble faciliter la vie pour l’intégration à Home Assistant. Voir le tweet.

Sources