Ich mache jetzt mal keine Wissenschaft draus, muss auch sagen, dass ich mir ausschließlich das erste Video von @Tristan im Galopp angeschaut habe.
Als Sensoren für den Forecast verwende ich hier mal OpenWeatherMap also weather.openweathermap
Auszug template.yaml
Code: Alles auswählen
- sensor:
# Die Niederschlagsvorhersage für heute
- name: 'Niederschlag Vorhersage heute'
state: |
{{ state_attr('weather.openweathermap', 'forecast')[0]['precipitation'] }}
state_class: measurement
unit_of_measurement: 'mm'
unique_id: niederschlag_vorhersage_heute
attributes:
Wahrscheinlichkeit: |
{{ state_attr('weather.openweathermap', 'forecast')[0]['precipitation_probability'] }}
# Die Niederschlagsvorhersage für morgen
- name: 'Niederschlag Vorhersage morgen'
state: |
{{ state_attr('weather.openweathermap', 'forecast')[1]['precipitation'] }}
state_class: measurement
unit_of_measurement: 'mm'
unique_id: niederschlag_vorhersage_morgen
attributes:
Wahrscheinlichkeit: |
{{ state_attr('weather.openweathermap', 'forecast')[1]['precipitation_probability'] }}
# Die Niederschlagsvorhersage für heute, morgen und übermorgen in Summe
- name: 'Niederschlag Vorhersage 3 Tage'
state: |
{{ state_attr('weather.openweathermap', 'forecast')[0]['precipitation'] + state_attr('weather.openweathermap', 'forecast')[1]['precipitation'] + state_attr('weather.openweathermap', 'forecast')[2]['precipitation']}}
state_class: measurement
unit_of_measurement: 'mm'
unique_id: niederschlag_vorhersage_3_tage
Für aktuelle und die Vergangenheitswerte nutze ich eine eigne Wetterstation in Verbindung mit der Ecowitt Custom Integration.
Auszug template.yaml
Code: Alles auswählen
- trigger:
- platform: time
at: "23:59:00"
sensor:
- name: "Niederschlag gestern"
unique_id: niederschlag_gestern
state: "{{ states('sensor.regenmenge_tag') | default(0) }}"
state_class: measurement
unit_of_measurement: "mm"
sensor.niederschlag_gestern
Zur Ermittlung ob die Bewässerung notwendig ist oder nicht, habe ich einen binary sensor erstellt.
Wenn gestern weniger als 5mm regen gefallen sind und der Vorhergesagte Niederschlag für die nächsten 3 Tage kleiner als 10mm ist und es gerade nicht regnet, ist das Ergebnis true,
also eine Bewässerung notwendig.
Auszug template.yaml
Code: Alles auswählen
- binary_sensor:
- name: Bewässerung notwendig
state: |
{{ states('sensor.niederschlag_gestern') | int < 5
and
state_attr('weather.openweathermap', 'forecast')[1]['precipitation'] < 5
and
states('sensor.niederschlag_vorhersage_3_tage') | int < 10
and
states('sensor.regen') | int == 0 }}
unique_id: bewaesserung_notwendig
binary_sensor.bewasserung_notwendig
Für die Berechnung der Bewässerungsdauer nutze ich drei Helfer vom Typ input_number
Das sind alles Variablen, die Ihr z.B. Im Dashboard setzen könnt.
Draus errechnet sich die notwendige Bewässerungsdauer.
Auszug template.yaml
Code: Alles auswählen
- name: 'Notwendige Bewässerungsdauer'
state: |
{{ (states('input_number.rasenflache') | int * states('input_number.bewasserungsmenge') | int / states('input_number.durchflussmenge') | int) | int }}
unit_of_measurement: 'min'
unique_id: notwendige_bewaesserungsdauer
sensor.notwendie_bewasserungsdauer
Des Weiteren kommt ein weiterer Helfer zum Einsatz und zwar ein Timer.
timer.bewasserungszeit
Die Automatisierung die dann täglich 2 Stunden vor Sonnenaufgang startet, kann dann so aussehen.
Habe sowohl das Starten des Timers wie auch das einschalten und Ausschalten der Bewässerung in einer Automatisierung gepackt.
Code: Alles auswählen
alias: Bewässerung Rasen Südseite
description: ""
trigger:
- platform: state
entity_id:
- timer.bewasserungszeit
to: active
id: Start
- platform: state
entity_id:
- timer.bewasserungszeit
to: idle
id: Stopp
- platform: sun
event: sunrise
offset: "-02:00:00"
id: täglich
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: Start
sequence:
- service: switch.turn_on
data: {}
target:
entity_id: switch.bewaesserung1
- conditions:
- condition: trigger
id: Stopp
sequence:
- service: switch.turn_off
data: {}
target:
entity_id: switch.bewaesserung1
- conditions:
- condition: trigger
id: täglich
- condition: state
entity_id: binary_sensor.bewasserung_notwendig
state: "on"
sequence:
- service: timer.start
data:
duration: >-
{{ (states('sensor.notwendie_bewasserungsdauer') | int * 60)|
timestamp_custom("%H:%M:%S.0", false) }}
target:
entity_id: timer.bewasserungszeit
default: []
mode: restart
Für das Dashboard kommen die Mushroom Custom Karten zum Einsatz.
Code: Alles auswählen
type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: Bewässerung Rasen Südseite
alignment: center
subtitle: ''
- type: horizontal-stack
cards:
- type: custom:mushroom-chips-card
chips:
- type: weather
entity: weather.openweathermap
show_conditions: true
show_temperature: true
- type: entity
entity: binary_sensor.bewasserung_notwendig
icon_color: green
use_entity_picture: false
icon: ''
- type: entity
entity: switch.bewaesserung1
icon_color: green
icon: mdi:sprinkler-variant
use_entity_picture: false
alignment: center
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: custom:mushroom-entity-card
entity: sensor.niederschlag_gestern
name: Niederschlag gestern
- type: custom:mushroom-entity-card
entity: sensor.regen
name: Niederschlag aktuell
- type: custom:mushroom-template-card
primary: Prognose Heute
secondary: >-
{{ states('sensor.openweathermap_forecast_precipitation') }} mm
({{
states('sensor.openweathermap_forecast_precipitation_probability')
}}%)
icon: mdi:water
icon_color: blue
- type: custom:mushroom-template-card
primary: Prognose Morgen
secondary: >-
{{ state_attr('weather.openweathermap',
'forecast')[1]['precipitation'] }} mm ({{
state_attr('weather.openweathermap',
'forecast')[1]['precipitation_probability'] }}%)
icon: mdi:water
icon_color: blue
- type: custom:mushroom-entity-card
entity: sensor.niederschlag_vorhersage_3_tage
name: Prognose 3 Tage
- type: vertical-stack
cards:
- type: custom:mushroom-entity-card
entity: input_number.durchflussmenge
icon_color: green
- type: custom:mushroom-entity-card
entity: input_number.rasenflache
icon_color: green
- type: custom:mushroom-entity-card
entity: input_number.bewasserungsmenge
icon_color: green
- type: custom:mushroom-entity-card
entity: sensor.notwendie_bewasserungsdauer
name: Bewässerungszeit
icon_color: orange
double_tap_action:
action: call-service
service: script.bewasserungs_timer
data: {}
target: {}
- type: custom:mushroom-template-card
primary: Bewässerung Status
secondary: >-
{% if state_attr('timer.bewasserungszeit', 'finishes_at') == none
%}
Inaktiv
{% else %}
Restdauer: {{ (as_timestamp(state_attr('timer.bewasserungszeit',
'finishes_at')) - as_timestamp(now())) | timestamp_custom("%H:%M",
false) }}
{% endif %}
icon: mdi:clock
icon_color: orange
tap_action:
action: more-info
hold_action:
action: call-service
service: ''
data: {}
target: {}
double_tap_action:
action: call-service
service: timer.finish
data: {}
target:
entity_id: timer.bewasserungszeit
- Mushroom - Bewässerung.jpg (123.46 KiB) 4655 mal betrachtet
Das erste Symbol rechts vom Wetter, gibt den Status des von binary_sensor.bewasserung_notwendig wieder
Das zweite Symbol rechts vom Wetter, den Status der Bewässerung, also An oder Aus.
Mit einem Doppel-Klick auf Bewässerung Status, könnt Ihr die laufende Bewässerung stoppen.
Mit einem Doppel-Klick auf Bewässerungszeit, manuell die Bewässerung starten. Dazu wird noch folgendes Script benötigt.
Code: Alles auswählen
alias: Bewässerungs Timer
sequence:
- service: timer.start
data:
duration: >-
{{ (states('sensor.notwendie_bewasserungsdauer') | int * 60)|
timestamp_custom("%H:%M:%S.0", false) }}
target:
entity_id: timer.bewasserungszeit
mode: single
Das ganze lässt Sich natürlich beliebig erweitern ergänzen.
Wie z.B. Nur Bewässerung alle x Tage durchführen, Bewässerung bei beginnenden Regen beenden, Bewässerungsmenge Abhängig von Höchsttemperatur, etc.
Ich hoffe Ihr könnt irgendwas damit anfangen, oder euch zumindest davon inspirieren lassen.
Gruß
Osorkon