Skip to content

Latest commit

 

History

History
191 lines (145 loc) · 7.65 KB

README.fr.md

File metadata and controls

191 lines (145 loc) · 7.65 KB

Détecteur de pluie pour ESPHome

Read this in other language: English

Photo globale de la station météo

Présentation

Précision: Cet appareil sert à détecter au plus tôt une averse afin de déclencher des actions. Le but n'est pas de mesurer la quantité de précipitation sur une période donnée (préférez utiliser un système à godet basculant).

Suite au développement de la station météo à base d'ESPHome, j'ai souhaité avoir un système permettant de détecter le plus rapidement possible une averse afin de pouvoir déclencher des automations dans Home Assistant, notamment celle utilisée conjointement avec le capteur d'ouverture de fenêtre de toit.

La station météo embarque bien un capteur de pluie mais il s'agit d'un dispositif de mesure de précipitations. Il fonctionne via le remplissage de coupelles calibrées montées sur un balancier et le temps qu'une première coupelle soit remplie afin de faire basculer le dispositif, il a déjà plu l'équivalent de 0.2794mm: c'est déjà trop tard.

J'ai imaginé pas mal de chose avant de partir sur la voie la plus simple: Mesurer la résistance entre 2 conducteurs séparés de quelques millimètres dans l'espoir de détecter une goutte d'eau qui se serait posée à cheval entre les 2.

Cette technique à le mérite d'être simple mais pose toutefois quelques problèmes dont le plus gros est la corrosion des éléments conducteurs, mais en s'y prenant correctement, on va pouvoir limiter la casse.

Photo du capteur

Caractéristiques

  • Intervalle de tentatives de détection de la pluie réglable (5 secondes par défaut)
  • Mesure de la température / humidité relative / pression atmosphérique
  • Led de statut RGB à base de WS2812
  • Coût modeste
  • Toutes les fonctions utilisables avec ESPHome

Comme on peut le voir sur la photo d'introduction, le module est installé dans une boitier étanche (dont les vis se sont complètement oxydées malgré tout) attaché au bout d'un mat tout en haut de la station météo mais le dispositif est totalement indépendant et aurait pu être installé autre part.

Installation

Afin d'installer le firmware sur l'ESP32, je vous invite à suivre la démarche décrite sur le site d'ESPHome: Getting Started with ESPHome

Pistes d'améliorations

  • Faire chuter la consommation en mettant en veille l'ESP entre 2 mesures

Explications

Détection de la pluie

Le capteur utilisé provient d'un kit de détection de pluie facilement trouvable en ligne dont la photo est ci-dessous.

Photo du capteur
Après 6 mois dehors, les pistes sont plutôt en bon état.

Le kit comporte 1 entrée pour le capteur, 1 potentiomètre de réglage du seuil, 2 LED et 2 sorties: une analogique et une numérique.

Le kit est pratique mais n'est pas idéal, en plus de fonctionner en permanence (ce qui va avoir un impact sur l'autonomie et l'oxydation des pistes), ces LEDS et son potentiomètre ne nous serviront à rien, j'ai préféré n'utiliser que le capteur afin d'avoir plus de contrôle sur les mesures via le logiciel.

L'idée est donc de mesurer à intervalle régulier la résistance, entre chaque mesure, la tension appliquée aux bornes des pistes du circuit de détection est coupée afin de limiter la corrosion de ces dernières.

Photo du capteur

Cycle:

  • Par défaut, à sec, la résistance est très élévée.
  • Lorsque le capteur est détecté comme sec, toutes les 5 secondes (variable $measure_interval_dry), une mesure est réalisée et moyennée, si la valeur + le seuil de détection de pluie ($rain_detection_threshold) est inférieur à la dernière mesure réalisée, alors, on considère qu'il pleut (ou neige).
  • Dans le cas ou la résistance moyenne du capteur moins le seuil de détection sec $dry_detection_threshold devient supérieure à la dernière valeur lue, on considère que le capteur est en train de sécher.

Il y a pas mal de variable de configuration qui permettent de configurer le tout.

Note: Pour le cas de la neige, les seuils ne sont peut être pas les même et il est peut être possible de distinguer la pluie de la neige.

Au niveau de la configuration ESPHome, le tout est principalement articulé autour de 3 déclarations:

  • La déclaration du convertisseur analogique numérique
  • La plateforme resistance qui utilise adc afin de faire la mesure de résistance qui nous intéresse
  • Et enfin, un switch GPIO qui est la source de courant pour la mesure
sensor:
  - platform: adc
    id: source_sensor
    pin: GPIO33
    name: ADC
    attenuation: 11db
    internal: true

    # It is important to have a low update interval so that
    # the measurement has time to be done correctly during
    # the activation of the voltage AND taking into account the median filter
    update_interval: 250ms

    filters:
      - multiply: 0.846153 # 3.9 (11db attenuation full-scale voltage) -> 3.3V
      - median:
          window_size: 7
          send_every: 4
          send_first_at: 3

  - platform: resistance
    sensor: source_sensor
    id: real_resistance_sensor
    #name: "${friendly_name} resistance"
    configuration: DOWNSTREAM
    resistor: $resistor_value
    reference_voltage: 3.3V
    internal: true
    icon: "mdi:omega"
    filters:
      - lambda: 'return max((float)$min_resistance, x);'
      - lambda: 'return min((float)$max_resistance, x);'
    on_value:
      then:
        - if:
            condition:
              lambda: |-
                  return (
                      id(real_resistance_sensor).state > $min_resistance
                      &&
                      id(real_resistance_sensor).state <= $max_resistance
                  );
            then:
              - sensor.template.publish:
                  id: resistance_sensor
                  state: !lambda "return id(real_resistance_sensor).state;"

switch:
  - platform: gpio
    id: resistance_bias
    name: "${friendly_name} resistance bias"
    icon: "mdi:power"
    pin:
      number: GPIO19
      mode: OUTPUT

Schéma de raccordement du capteur de détection de pluie

Schéma de raccordement du capteur de détection de pluie

Mesure de température / humidité / pression atmosphérique

J'ai repris exactement la même configuration que pour la station météo.

Ces 3 grandeurs sont mesurées par un capteur Bosch BME280 et sa configuration dans ESPHome est la suivante:

  - platform: bme280
    address: 0x76
    update_interval: 60s
    iir_filter: 16x
    temperature:
      name: "${friendly_name} temperature"
      oversampling: 16x
    humidity:
      name: "${friendly_name} humidity"
      oversampling: 16x
    pressure:
      name: "${friendly_name} pressure"
      oversampling: 16x

LED de status

Une LED RGB de type WS2812 permet d'informer de l'état de fonctionnement du montage via un script flashing.

Si vous alimentez le montage via un panneau solaire ou une source de courant faible, préférez désactiver l'utilisation de la LED.

light:
  - platform: fastled_clockless
    chipset: WS2812
    id: status_light
    name: "${friendly_name} status light"
    pin: GPIO18
    num_leds: 1
    rgb_order: GRB
    restore_mode: ALWAYS_OFF

Fichiers

  • raindetector.yaml: Le fichier de configuration ESPHome
  • network.yaml: Les informations de votre réseau
  • secrets.yaml: Les informations secrètes relatives à votre réseau