Je n'ai pas vraiment la main verte et et mon jardin ressemble souvent à un no man's land, mais au printemps dernier une amie m'a convaincu de créer un carré d'herbes aromatiques, l'idée à fait son chemin et au centre on a même planté des plants de tomates qui produisent bien cet été ! Bon, vous imaginez bien que je ne vais pas ici vous conter ma vie privée mais plutôt la part domotique de cette réalisation !
En Provence, si on veut un peu de verdure et espérer manger ses propres tomates, il n'y a pas de secret, il faut arroser ! J'ai donc commencé par disposer un tuyau poreux sur mon carré. Ensuite j'ai acheté un robinet Zigbee et préparé un petit scheduler qui me permet facilement d'activer ou pas la plage journalière d'arrosage. J'ai fait quelque chose de simple en m'inspirant de ce que j'avais fait pour mon chauffe eau. Je publie ici le code suite à quelques demandes, même si ça n'a pas une grande valeur ajoutée.
Pour l'instant ça ne prends pas en compte les valeurs remontés sur les capteurs de plantes car je n'en suis pas satisfait.
L'offre en matière de capteurs de plantes n'est pas énorme :
- Le capteur Xiaomi (ou ses copies) qui fonctionnent en Bluetooth et que l'on trouve sur Amazon ou Ali Express : C'est ce qui fonctionne le "mieux", mais cela nécessite un proxy BLE à l'extérieur que l'on peut facilement se bricoler avec un ESP sous ESPHome.
- Le capteur Rehent en Zigbee que j'ai acheté chez Domadoo : Et là c'est la déconvenue. Il est un peu encombrant mais ne pose pas de soucis particulier pour l'appairer en ZHA ou Z2M (ou sur une passerelle Tuya), sauf que si ce capteur remonte parfaitement la température du sol, l'humidité du sol reste invariablement entre 75% et 85% (voir les sources au bas de cet article). Et bien sur chez Domadoo on est pas chez Amazon, le client a tort et l'éventuel retour est à votre charge. Bref capteur et fournisseur à éviter ! Il semblerait qu'autres séries de ce capteur que l'on trouve chez AliExpress fonctionnent, mais là il faudra aussi oublier le retour...
J'utilise une vanne Zigbee Woox qui alimente le tuyaux poreux (que je devrais remplacer par un un goute à goute). Pour avoir un réseau Zigbee fiable à l'extérieur, j'ai installé sous la toiture de la terrasse des prises Zigbee dont le relais est HS mais qui continuent à remplir parfaitement leur rôle de routeur Zigbee.
Tout cela reste très expérimental... Coté intégration j'utilise Home Assistant Plant et la carte qui va avec.
Automation
Une automation de schedule simple et visuelle :
input_datetime:
watering_start:
has_date: false
has_time: true
watering_stop:
has_date: false
has_time: true
input_boolean:
watering_day_monday:
name: "WATERING : Lundi"
icon: mdi:toggle-switch
watering_day_tuesday:
name: "WATERING : Mardi"
icon: mdi:toggle-switch
watering_day_wednesday:
name: "WATERING : Mercredi"
icon: mdi:toggle-switch
watering_day_thursday:
name: "WATERING : Jeudi"
icon: mdi:toggle-switch
watering_day_friday:
name: "WATERING : Vendredi"
icon: mdi:toggle-switch
watering_day_saturday:
name: "WATERING : Samedi"
icon: mdi:toggle-switch
watering_day_sunday:
name: "WATERING : Dimanche"
icon: mdi:toggle-switch
automation:
- id: 'xx8d0e1-fcb6-4412-abvxx-99c4d37be5xx'
alias: 'WATERING ON'
trigger:
- platform: template
value_template: '{{ states.sensor.time.state == states.input_datetime.watering_start.state[0:5] }}'
condition:
condition: or
conditions:
- '{{ (now().strftime("%a") == "Mon") and is_state("input_boolean.watering_day_monday", "on") }}'
- '{{ (now().strftime("%a") == "Tue") and is_state("input_boolean.watering_day_tuesday", "on") }}'
- '{{ (now().strftime("%a") == "Wed") and is_state("input_boolean.watering_day_wednesday", "on") }}'
- '{{ (now().strftime("%a") == "Thu") and is_state("input_boolean.watering_day_thursday", "on") }}'
- '{{ (now().strftime("%a") == "Fri") and is_state("input_boolean.watering_day_friday", "on") }}'
- '{{ (now().strftime("%a") == "Sat") and is_state("input_boolean.watering_day_saturday", "on") }}'
- '{{ (now().strftime("%a") == "Sun") and is_state("input_boolean.watering_day_sunday", "on")}}'
action:
- service: switch.turn_on
entity_id: switch.vanne_woox_switch
- service: notify.slack_hass_canaletto
data:
message: "{{now().strftime('%d/%m/%Y, %H:%M')}} > WATERING | START | Soil : {{ states.sensor.soil_01_soil_moisture.state }}%"
- id: 'zz9csdfsef-76dd-4fdd-9dzz-40bfsdq158zz'
alias: 'WATERING OFF'
trigger:
- platform: template
value_template: '{{ states.sensor.time.state == states.input_datetime.watering_stop.state[0:5] }}'
action:
- service: switch.turn_off
entity_id: switch.vanne_woox_switch
- service: notify.slack_hass_canaletto
data:
message: "{{now().strftime('%d/%m/%Y, %H:%M')}} > WATERING | STOP | Soil : {{ states.sensor.soil_01_soil_moisture.state }}%"
La carte Lovelace :
type: vertical-stack
cards:
- type: entities
entities:
- entities:
- entity: automation.watering_on
name: false
- entity: sensor.energy_total_yearly_1pm_watering
name: false
unit: kWh
format: precision2
- entity: sensor.soil_01_soil_moisture
name: false
entity: switch.vanne_woox_switch
name: Arrosage
icon: mdi:watering-can-outline
show_state: false
state_color: true
type: custom:multiple-entity-row
- type: horizontal-stack
cards:
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_monday
name: Lundi
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_tuesday
name: Mardi
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_wednesday
name: Mercredi
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_thursday
name: Jeudi
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_friday
name: Vendredi
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_saturday
name: Samedi
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: custom:button-card
color_type: card
entity: input_boolean.watering_day_sunday
name: Dimanche
show_last_changed: false
show_state: false
tap_action:
action: toggle
state:
- value: 'on'
color: green
icon: mdi:water-boiler
- value: 'off'
color: grey
icon: mdi:water-boiler-off
styles:
card:
- height: 60px
- border-radius: 5px
- font-size: 12px
- type: conditional
conditions:
- entity: automation.watering_on
state: 'on'
card:
type: custom:vertical-stack-in-card
cards:
- type: horizontal-stack
cards:
- type: markdown
content: '#### <center> Heure de début'
- type: markdown
content: '#### <center> Arrosage'
- type: markdown
content: '#### <center> Heure de Fin'
- type: horizontal-stack
cards:
- entity: input_datetime.watering_start
type: custom:time-picker-card
name: Début
layout:
align_controls: center
embedded: true
hide:
name: true
icon: true
- type: glance
show_state: true
show_name: false
entities:
- switch.vanne_woox_switch
- entity: input_datetime.watering_stop
type: custom:time-picker-card
layout:
align_controls: center
embedded: true
hide:
name: true
icon: true
- color_thresholds:
- color: '#039BE5'
value: 0
- color: '#0da035'
value: 19
- color: '#e0b400'
value: 25
- color: '#e45e65'
value: 2400
color_thresholds_transition: hard
entities:
- entity: sensor.plant_01_moisture
name: Humidité du sol
- entity: sensor.plant_01_temperature
name: Températire du sol
- color: rgba(0,0,255,1)
entity: binary_sensor.night_reworked
name: Nuit
show_line: false
y_axis: secondary
group: false
hour24: true
hours_to_show: 24
line_width: 2
name: Humidité et température du sol
points_per_hour: 4
show:
extrema: true
fill: fade
icon: true
labels: false
name: true
state: true
state_map:
- label: Day
value: 'off'
- label: Night
value: 'on'
type: custom:mini-graph-card
- type: custom:flower-card
entity: plant.jardin
show_bars:
- illuminance
- humidity
- moisture
- conductivity
- temperature
- dli
battery_sensor: sensor.demo_battery
Souces
Capteur Rehent