了解今天是否会下雨对许多人来说至关重要,因为它会影响日常计划和活动。本文概述了一种在Home Assistant中使用Dark Sky天气数据来确定是否预期降雨并根据预测自动执行操作的方法。
Dark Sky的API允许检索当前和未来的天气状况。您可以指定要包含在预测中的天数和小时数,以及要跟踪的特定天气参数,例如降水概率和强度。这允许对接收到的数据进行精细控制。
sensor:
- platform: darksky
api_key: YOUR_API_KEY
forecast:
- 0
- 1
hourly_forecast:
- 0
- 1
monitored_conditions:
- precip_intensity
- precip_type
- precip_probability
由于Dark Sky不提供历史数据,因此使用输入布尔值来跟踪前一天是否下雨。此布尔值将由自动化设置,并在每天早晨重置。
input_boolean:
rained_yesterday:
name: 昨日降雨
icon: mdi:weather-pouring
自动化每小时15分钟触发一次,以检查当前的降水强度。如果强度超过预定义的阈值(例如,0.5毫米/小时,表示中雨),则“rained_yesterday”布尔值设置为true。
- alias: rain_meter
trigger:
# 每1小时15分钟运行一次。
platform: time_pattern
hours: "/1"
minutes: "15"
conditions:
# 如果已开启,则无需执行任何操作
- condition: state
entity_id: input_boolean.rain_meter
state: 'off'
# ... 其他验证降雨的条件 ...
action:
# 今天下雨了。 打开它。
service: input_boolean.turn_on
entity_id: input_boolean.rain_meter
另一个预定在上午5:30运行的自动化程序会检查当天的预测。如果预测的降水强度高于阈值,表明可能会下雨,则不采取任何措施。这是假设如果今天预测会下雨,“rained_yesterday”布尔值仍然有效。
- alias: Sprinkler Time
name: 如果不下雨则打开洒水器
trigger:
platform: time
at: "05:30:00"
condition:
platform: template
value_template: "{{ states('sensor.dark_sky_precip_intensity_1d') | float > 0.5 }}"
action:
service: script.turn_on_sprinklers_if_no_rain
data_template:
rain_yesterday: "{{ is_state('input_boolean.rain_meter', 'on') }}"
最后,一个脚本管理洒水器逻辑。它首先重置“rained_yesterday”布尔值。如果此布尔值为false(表示昨天没有下雨),并且今天的预测没有预测下雨,则脚本将激活洒水器。
script:
turn_on_sprinklers_if_no_rain:
sequence:
- service: input_boolean.turn_off
entity_id: input_boolean.rain_meter
- condition: template
value_template: "{{ not rain_yesterday}}"
- service: sprinkler.turn_on
entity_id: sprinklers.money_maker
该系统提供了一个强大的解决方案,可以回答“今天会下雨吗?”这个问题,并根据答案自动执行洒水器控制等任务。使用预测的降水强度有助于预测降雨并避免不必要的浇水。