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.