Il s’agit d’un projet pilote, d’un prototype pour un projet ultérieur plus grand qui prendra l’eau collectée de la pluie et la distribuera à des pots de plantes et à une serre. Je veux qu’il ait une autonomie totale.

Disposition du projet

Le système est composé d’un capteur d’humidité et d’une pompe. Les valeurs reliées par le capteur d’humidité contrôleront le fonctionnement de la pompe. Parce que je prévois d’avoir plusieurs emplacements pour arroser, et en conclusion, plusieurs capteurs, chacun de ces composants fonctionnera de manière indépendante et autonome.

La station de capteurs

La station d’humidité n’est qu’une légère variation de la station météorologique, elle a la même disposition et un capteur d’humidité capacitif supplémentaire. Cela fonctionne de la même manière que le capteur de niveau de batterie, en signalant la différence de tension.

Sous ce paragraphe se trouve le delta entre la configuration de la station météorologique et de la station humide.

  - platform: adc
    pin: $v_moist
    name: "Soil Moisture"
    id: moist
    update_interval: 100ms
    attenuation: 11db
    unit_of_measurement: "%"
    filters:
    - median:
        window_size: 75
        send_every: 75
        send_first_at: 75
    - calibrate_linear:
        - 2.60 -> 0.00
        - 2.10 -> 100.00
    - lambda: if (x < 1) return 0; else return (x);
    accuracy_decimals: 0
    on_value: 
      lambda: |-
        id(updates)++;        

La pompe

La configuration de la pompe est construite sur le même cadre que les stations car elle sera alimentée par batterie/solaire. Il dormira donc la plupart du temps. Au moment du réveil, il mettra à jour ses indicateurs et activera la pompe ou se rendormira.

J’utilise l’API esphome pour contrôler les pompes à l’aide d’assistants de saisie dans homeassistant. Dans la majorité des cas, la pompe sera hors ligne lorsque le signal d’arrosage arrivera, je réutilise donc la même méthode que pour l’ota_update. Ce sont les services que j’ai mis à disposition pour l’utilisation dans homeassistant.

    - service: start_pompe1
      then:
        - switch.turn_on: p1
        - logger.log: "Moisture switch p1 enabled"
    - service: start_pompe2
      then:
        - switch.turn_on: p2 
        - logger.log: "Moisture switch p2 enabled"
    - service: stop_pompe1
      then: 
        - switch.turn_off: p1
        - logger.log: "Moisture switch p1 disabled"
    - service: stop_pompe2
      then: 
        - switch.turn_off: p2
        - logger.log: "Moisture switch p2 disabled"

Le commutateur de session contrôle l’exécution du script, le script force en fait la mise à jour des capteurs et la fonction de veille.

  - platform: template
    id: session_switch
    name: "session_switch"
    lambda: |-
      if (id(session)) {
        return true;
      } else {
        return false;
      }      
    turn_on_action:
      - lambda: |-
          id(session) = 1;          
    turn_off_action:
      - lambda: |-
          id(session) = 0;          
    on_turn_on:        
      then: 
        - logger.log: '********************** Script is Running *************************'        
        - script.execute: check_stuff

Les pompes sont contrôlées à distance via les services home assistant qui à leur tour contrôlent le commutateur de sessions, donc si une pompe est activée, elle reportera automatiquement l’exécution du script.

switch:
  - platform: gpio
    id: p1
    name: "Pompe 1"
    pin: GPIO4
    on_turn_on: 
      then:
        switch.turn_off: session_switch
    on_turn_off: 
      if:
        condition: 
          switch.is_off: p2
        then:
          switch.turn_on: session_switch

  - platform: gpio
    id: p2
    name: "Pompe 2"
    pin: GPIO5
    on_turn_on: 
      then:
        switch.turn_off: session_switch
    on_turn_off: 
      if:
        condition: 
          switch.is_off: p1
        then:
          switch.turn_on: session_switch

J’espère avoir le temps et l’énergie pour donner une description plus complète et une vision approfondie de ce projet, ainsi que des résultats.