Un capteur de température et d’humidité compatible avec HomeAssistant pour mon bureau.

Un capteur de température et d’humidité compatible avec HomeAssistant pour mon bureau.

Depuis quelques années je me suis mis à Home Assistant pour gérer des automatisations dans mon bureau. Cette plateforme est simple, efficace, régulièrement mise à jour et surtout… gratuite!

Je fais donc tourner ce système dans une VM sur mon petit homelab:

M’étant récemment équipé d’une imprimante 3D et m’intéressant à la plateforme ESPHome qui permet d’intégrer des équipements à base d’ESP32 dans Home Assistant, j’ai donc entrepris de me fabriquer un petit capteur de température et d’humidité connecté pour quelques euros.

Choix du matériel

J’ai sous la main quelques modules ESP32 qui me servent pour d’autres projets. Ceux-là sont des Diymore NodeMCU (https://amzn.to/49Ho5EL) mais je pense que d’autres modèles pourrait s’adapter.

Pour le capteur de température, j’ai choisi un module DHT22, un DHT11 marchait aussi mais il est moins précis et ça ne coûte vraiment pas cher (AZDelivery 3X DHT22 AM2302). J’ai choisi un produit fixé sur un PCB, avec les broches, ça m’évite de faire des soudures et d’ajouter une résistance (flemme).

En bonus, je suis tombé sur des lots de petits écrans OLED de moins d’un pouce qui sont compatibles. Pour le fun je les ai pris (moins de 20€ les 6!). Module d’écran OLED de 0,96 pouces.

On arrive donc à un coût total par appareil de 21€:

  • ESP32 : 7,5€ pièce
  • Capteur : 11,5€ pièce
  • Ecran : environ 3€ pièce

Assemblage

Comme je ne veut pas faire de soudure, j’assemble tout avec des câbles dupont (re-flemme).

  • ESP32 (3v3) sur le + du capteur
  • ESP32 (GND) sur le – du capteur
  • ESP32 (PIN 19) sur le ‘OUT’ du capteur
  • ESP32 (5V) sur le VCC de l’écran
  • ESP32 (GND) sur le GND de l’écran
  • ESP32 (22) sur le SDA de l’écran
  • ESP32 (23) sur le SCL de l’écran

Il y a plusieurs GND sur les ESP32, chacun le sien. J’ai choisi d’alimenter l’écran en 5v, il pouvait aussi l’être aussi en 3.3 mais ça m’obligeait à faire une dérivation.

Code

J’ai choisi d’installer tout avec ESPHome car c’est tout intégré à HomeAssistant et que c’est très simple. Il suffit de suivre le process d’installation sur leur site (https://esphome.io/guides/getting_started_hassio/) et de rédiger le code sur ESPHome Builder qui apparait dans l’interface Home Assistant.

Je vérifie la valeur des capteurs toutes les minutes et les affiches sur l’écran en dessous du nom de la pièce défini en haut du fichier

Si vous vouler reproduire le même capteur, je vous partage mon code:

substitutions:
  area_name: "bureau"

esphome:
  name: "capteur${area_name}"
  friendly_name: "capteur${area_name}"
          
esp32:
  board: nodemcu-32s
  framework:
    type: arduino

logger:
  level: verbose

api:
  port: 6053
  batch_delay: 50ms  # Reduce latency for real-time applications
  encryption:
    key: "PTe337+xBl8Ap1AAqfCODEHzLU695mJbfkDfR367ESA="


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

ota:
  - platform: esphome
    password: "caeaa610fd9d2cebb073ac915752xxxx"

sensor:
  - platform: dht
    pin: 19
    temperature:
      id: temperature
      name: "Temperature ${area_name}"
    humidity:
      id: humidity
      name: "Humidité ${area_name}"
    update_interval: 60s

i2c:
  sda: 22
  scl: 23
  scan: True
  id: bus_a

font:
  - file: "arial.ttf"
    id: arial_font
    size: 14

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    lambda: |-
      it.print(0, 0, id(arial_font), "${area_name}");
      it.printf(0, 14, id(arial_font), "Temp: %.1f°C", id(temperature).state);
      it.printf(0, 28, id(arial_font), "Humi: %.1f/100", id(humidity).state);

Il suffit de définir le nom de la pièce (area_name), votre clé pour l’api et votre mot de passe pour l’OTA (pour pouvoir mettre à jour via HomeAssistant). J’ai poussé le code via ESPHome Web pour la première fois, pour les mises à jour je pousse tout via le wifi.

Boitier

Pour ranger tout ça, et comme j’ai ma petite Bambulab, j’ai dessiné une boite pour tout caser. C’est perfectible mais ça a le mérite d’exister. Après quelques essais et un bon moment passé sur Fusion 360, j’ai enfin quelque chose de pratique:

En moins d’une heure pour une impression de bonne qualité, voici le résultat assemblé:

Pas de colle (mais c’est possible), pas de soudure et ça fonctionne! Je peux désormais commencer à créer mes automatisations.

Si ce type de projets vous plait, je peux en réaliser d’autre. Dites le moi!

Les prix sont à jour à la création de l’article, ils peuvent varier en fonction des promotions
Les liens sont affiliés (pas de modifications des prix pour vous mais je peux toucher une petite commission sur vos achats)

Avatar de Mathgen

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.