Water level IBC avec Home assistant

Introduction

L’objectif ici est de mesurer le niveau d’eau restant de notre cuve IBC grâce à ESPHome. ESPHome permet de connecter des composants électroniques (potentiellement qui n’existeraient pas encore sous forme de devices Zigbee) à Home Assistant.

Nous allons utiliser l’outil ESPHome qui bénéficie aujourd’hui d’une très grande communauté. ESPHome est un projet open source fondé par Nabu Casa (https://www.nabucasa.com/).

Pour plus de détails, consultez : https://esphome.io/guides/faq.html

Installation

Le composant nécessaire pour notre mesure est le HC-SR04 :

Sans rentrer dans les détails, le HC-SR04 est un capteur à ultrasons qui permet d’évaluer les distances d’un objet cible en émettant des ondes ultrasonores. Ce capteur convertit le son réfléchi en un signal électrique.

PS : Les ondes ultrasonores voyagent plus vite que la vitesse du son audible (c’est-à-dire le son que les humains peuvent entendre).

1. Câblage

Le câblage est assez simple. Connectez le HC-SR04 à un microcontrôleur compatible avec ESPHome, tel qu’un Wemos D1 Mini ou un ESP32. Vous devrez connecter les broches VCC, GND, Trig et Echo du capteur aux broches correspondantes du microcontrôleur.

2. Création du container

Il existe plusieurs façons de générer son code pour l’uploader sur un ESP (Wemos).

J’ai choisi la méthode avec le container. On se rend dans le dossier où l’on souhaite démarrer notre container et on écrit notre compose :

vi docker-compose.yaml

Puis on y colle le contenu suivant :

version: '2.4'
services:
  web:
    container_name: esphome
    image: esphome/esphome
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    network_mode: host

On peut à présent démarrer notre container avec la commande :

docker-compose up -d

Et se rendre sur la page web d’administration : http://IP_de_votre_container:6052/

3. Création des secrets

Maintenant, nous allons définir nos secrets en haut à droite.

On remplit nos secrets :

4. Notre code

Puis, nous allons écrire notre premier code. Dans notre exemple, on souhaite mesurer la quantité d’eau dans une cuve IBC. En s’inspirant des codes générés par la communauté. —> https://esphome.io/components/sensor/ultrasonic.html#

On clique en bas à droite pour créer notre code :

Puis on colle le code suivant :

esphome:
  name: water_tank_level_sensor
  platform: ESP8266
  board: d1_mini

# WiFi connection, replace these with values for your WiFi.
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Enable logging
logger:

# Enable Home Assistant API
api:

# Enable over-the-air updates.
ota:

# Enable Web server.
web_server:
  port: 80
# Sync time with Home Assistant.
time:
  - platform: homeassistant
    id: homeassistant_time

# Text sensors with general information.
text_sensor:
  # Expose ESPHome version as sensor.
  - platform: version
    name: water_level_sensor ESPHome Version
  # Expose WiFi information as sensors.
  - platform: wifi_info
    ip_address:
      name: water_level_sensor IP
    ssid:
      name: water_level_sensor SSID
    bssid:
      name: water_level_sensor BSSID

# Exposed switches.
# Switch to restart the water_level_sensor.
switch:
  - platform: restart
    name: "water_level_sensor Restart"

sensor:
  # Uptime sensor.
  - platform: uptime
    name: water_level_sensor Uptime

  # WiFi Signal sensor.
  - platform: wifi_signal
    name: water_level_sensor WiFi Signal
    update_interval: 60s

  - platform: ultrasonic
    trigger_pin: D1
    echo_pin: D2
    name: "Water level en litre"
    update_interval: 3s
    filters:
    - lambda: return (100-(x*100))*10 ;
    unit_of_measurement: "L"

Puis on clique sur “INSTALL” en bas à droite

Il existe plusieurs choix pour téléverser notre code. Dans mon cas j’ai fais le choix de générer le binaire puis de le téléverser.

On choisir modern :

La compilation du binaire peut prendre quelques minutes en fonction de votre processeur.

Une fois terminé un fichier sera téléchargé sur votre ordinateur.

5. Téléverser le code

Pour téléverser notre code nous allons utiliser ESPHome-Flasher sous windows que vous pouvez trouver ici : https://github.com/esphome/esphome-flasher/releases Si ce n’est pas déjà fait, il faut installer le bon driver pour notre Wemos. Vous pouvez le trouver ici :

CP2102 (square chip) –> https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers CH341: –> https://github.com/nodemcu/nodemcu-devkit/tree/master/Drivers

Plus d’information ici : https://esphome.io/guides/faq.html

Une fois le code téléversé nous pouvons nous connecter sur l’interface WEB avec l’adresse IP du Wemos qu’il aura récupéré :

6. Intégration home assistant

Une fois notre code flashé on peut faire l’intégration avec home assistant

Photos

Quelques photos de mon installation (qui est encore en phase de prototype) pour donner des idées :