找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 1|回覆: 0

    天氣整合的實用做法:會不會下雨、要不要收衣服

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005752
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    天氣資料在 HA 裡很好用,但大部分人只是拿來顯示。

    這篇講怎麼把它變成有用的自動化。



    資料來源的選擇

    HA 內建的


    • Met.no —— 挪威氣象局,免費、不用金鑰、全球覆蓋
    • OpenWeatherMap —— 要註冊拿免費金鑰
    • AccuWeather —— 免費版有次數限制


    台灣的資料


    • 中央氣象署有開放資料,可以用 RESTful sensor 接
    • 社群有做 HACS 整合
    • 在地的資料通常比國際的準(尤其是降雨)


    自己的感測器

    最準的還是自己家的。


    • 室外溫濕度計(放在遮陰通風處)
    • 雨滴感測器
    • 照度計


    混合使用


    • 預報用外部資料
    • 現況用自己的感測器


    weather 實體的結構
    1. {{ states('weather.forecast_home') }}
    2.   → 現在的天氣狀態(sunny / rainy / cloudy...)
    3. {{ state_attr('weather.forecast_home', 'temperature') }}
    4. {{ state_attr('weather.forecast_home', 'humidity') }}
    5. {{ state_attr('weather.forecast_home', 'wind_speed') }}
    6. {{ state_attr('weather.forecast_home', 'pressure') }}
    複製代碼

    重要的改變

    HA 2024 之後,預報資料不再是屬性
    要用動作取得
    1.       - action: weather.get_forecasts
    2.         target:
    3.           entity_id: weather.forecast_home
    4.         data:
    5.           type: hourly
    6.         response_variable: 預報
    複製代碼

    然後用 預報['weather.forecast_home'].forecast 取資料。



    實用自動化一:要下雨了,收衣服
    1. automation:
    2.   - alias: 快下雨了
    3.     id: rain_warning
    4.     mode: single
    5.     triggers:
    6.       - trigger: time_pattern
    7.         minutes: "/30"
    8.     conditions:
    9.       - condition: state
    10.         entity_id: input_boolean.衣服晾在外面
    11.         state: "on"
    12.     actions:
    13.       # 取得未來幾小時的預報
    14.       - action: weather.get_forecasts
    15.         target:
    16.           entity_id: weather.forecast_home
    17.         data:
    18.           type: hourly
    19.         response_variable: 預報
    20.       - variables:
    21.           未來三小時: >
    22.             {{ 預報['weather.forecast_home'].forecast[:3] }}
    23.           會下雨: >
    24.             {{ 未來三小時
    25.                | selectattr('precipitation_probability', 'defined')
    26.                | selectattr('precipitation_probability', 'gt', 60)
    27.                | list | count > 0 }}
    28.       - condition: template
    29.         value_template: "{{ 會下雨 }}"
    30.       - action: script.通知
    31.         data:
    32.           等級: 重要
    33.           標題: 三小時內可能下雨
    34.           訊息: >
    35.             降雨機率
    36.             {{ 未來三小時 | map(attribute='precipitation_probability')
    37.                | list | join('% / ') }}%
    38.             ,衣服要收了
    複製代碼

    幾個設計重點


    • 用 input_boolean 記錄「衣服晾在外面」 —— 不然會一直通知
    • mode: single + 每半小時檢查
    • 降雨機率門檻 60%(太低會一直誤報)


    更聰明的做法:用雨滴感測器
    1. automation:
    2.   - alias: 下雨了
    3.     triggers:
    4.       - trigger: state
    5.         entity_id: binary_sensor.雨滴感測器
    6.         to: "on"
    7.     actions:
    8.       - action: script.通知
    9.         data:
    10.           等級: 緊急
    11.           標題: 下雨了
    12.           訊息: 立刻收衣服
    13.       # 如果有電動遮雨棚
    14.       - action: cover.close_cover
    15.         target:
    16.           entity_id: cover.遮雨棚
    複製代碼

    雨滴感測器很便宜(一兩百塊),而且比預報準。

    用 ESPHome 做一個
    1. binary_sensor:
    2.   - platform: gpio
    3.     pin:
    4.       number: GPIO34
    5.       inverted: true
    6.     name: 下雨了
    7.     device_class: moisture
    8.     filters:
    9.       - delayed_on: 10s
    10.       - delayed_off: 5min
    複製代碼

    delayed_off: 5min —— 停止感應後要等五分鐘才算「沒下雨」
    (感測器上的水要蒸發)。



    實用自動化二:開窗建議
    1. template:
    2.   - binary_sensor:
    3.       - name: 適合開窗
    4.         unique_id: good_window
    5.         state: >
    6.           {% set 外溫 = state_attr('weather.forecast_home', 'temperature')
    7.                         | float(99) %}
    8.           {% set 內溫 = states('sensor.客廳溫度') | float(0) %}
    9.           {% set 天氣 = states('weather.forecast_home') %}
    10.           {% set aqi = states('sensor.空氣品質指標') | float(0) %}
    11.           {{ 天氣 not in ['rainy', 'pouring', 'lightning', 'lightning-rainy']
    12.              and aqi < 100
    13.              and 外溫 < 內溫 - 1
    14.              and 外溫 > 18 }}
    複製代碼

    四個條件


    • 沒在下雨
    • 空氣品質可以
    • 外面比裡面涼(差一度以上)
    • 外面不會太冷


    再加上前面講的絕對濕度判斷會更準。

    實用自動化三:颱風準備
    1. automation:
    2.   - alias: 颱風警報
    3.     triggers:
    4.       - trigger: numeric_state
    5.         entity_id: sensor.風速
    6.         above: 12
    7.     actions:
    8.       # 收遮陽篷
    9.       - action: cover.close_cover
    10.         target:
    11.           entity_id: cover.遮陽篷
    12.       # 關窗
    13.       - action: cover.close_cover
    14.         target:
    15.           entity_id: cover.電動窗
    16.       # 檢查有沒有窗戶開著
    17.       - if:
    18.           - condition: state
    19.             entity_id: binary_sensor.有門窗開著
    20.             state: "on"
    21.         then:
    22.           - action: script.通知
    23.             data:
    24.               等級: 緊急
    25.               標題: 風很大但有窗戶開著
    26.               訊息: >
    27.                 {{ state_attr('binary_sensor.有門窗開著', '清單')
    28.                    | join('、') }}
    複製代碼

    實用自動化四:冷氣的天氣連動
    1. automation:
    2.   - alias: 明天會很熱,提早預冷
    3.     triggers:
    4.       - trigger: time
    5.         at: "06:00:00"
    6.     actions:
    7.       - action: weather.get_forecasts
    8.         target:
    9.           entity_id: weather.forecast_home
    10.         data:
    11.           type: daily
    12.         response_variable: 預報
    13.       - variables:
    14.           今日高溫: >
    15.             {{ 預報['weather.forecast_home'].forecast[0].temperature }}
    16.       - condition: template
    17.         value_template: "{{ 今日高溫 | float(0) > 33 }}"
    18.       - action: script.通知
    19.         data:
    20.           等級: 一般
    21.           標題: 今天會到 {{ 今日高溫 }} 度
    22.           訊息: 建議中午前就把冷氣打開
    複製代碼

    實用自動化五:日出日落的應用

    sun 實體比固定時間好用太多
    1.     triggers:
    2.       - trigger: sun
    3.         event: sunset
    4.         offset: "-00:30:00"      # 日落前 30 分鐘
    複製代碼

    可用的屬性
    1. {{ state_attr('sun.sun', 'elevation') }}      仰角
    2. {{ state_attr('sun.sun', 'azimuth') }}        方位角
    3. {{ state_attr('sun.sun', 'next_dawn') }}      下次黎明
    4. {{ state_attr('sun.sun', 'next_dusk') }}      下次黃昏
    5. {{ state_attr('sun.sun', 'next_midnight') }}
    6. {{ state_attr('sun.sun', 'next_noon') }}
    7. {{ state_attr('sun.sun', 'next_rising') }}
    8. {{ state_attr('sun.sun', 'next_setting') }}
    複製代碼

    用仰角判斷「天黑了」比用日落時間準
    1.       - condition: numeric_state
    2.         entity_id: sun.sun
    3.         attribute: elevation
    4.         below: 3
    複製代碼

    為什麼


    • 日落之後還有一段時間是亮的(暮光)
    • elevation 可以精細調整
    • 陰天可以搭配照度感測器


    最準的做法
    1. template:
    2.   - binary_sensor:
    3.       - name: 該開燈了
    4.         state: >
    5.           {{ states('sensor.室外照度') | float(9999) < 200
    6.              or state_attr('sun.sun', 'elevation') | float(90) < 2 }}
    7.         delay_off: "00:10:00"
    複製代碼

    有照度感測器就用照度,沒有就用太陽仰角當備援。



    天氣儀表板
    1. type: vertical-stack
    2. cards:
    3.   - type: weather-forecast
    4.     entity: weather.forecast_home
    5.     forecast_type: daily
    6.     show_current: true
    7.   - type: entities
    8.     entities:
    9.       - entity: binary_sensor.適合開窗
    10.         name: 現在適合開窗嗎
    11.       - entity: binary_sensor.該開燈了
    12.       - entity: sensor.室外溫度
    13.         name: 室外(自己的感測器)
    14.       - entity: sensor.室外濕度
    15.       - entity: sensor.空氣品質指標
    16.   - type: conditional
    17.     conditions:
    18.       - condition: state
    19.         entity: input_boolean.衣服晾在外面
    20.         state: "on"
    21.     card:
    22.       type: markdown
    23.       content: >
    24.         ### 👕 衣服晾在外面
    25.         未來三小時降雨機率:{{ ... }}
    複製代碼

    幾個實用的小提醒


    • 預報不準是正常的 —— 不要完全依賴
    • 台灣的午後雷陣雨很難預測 —— 雨滴感測器比較實在
    • weather 整合的更新間隔通常是一小時
    • 用 homeassistant.update_entity 可以強制更新


    ---

    下一篇:植物照顧 ——
    土壤濕度、光照、自動澆水。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-24 11:26 , Processed in 0.094986 second(s), 24 queries .

    快速回覆 返回頂部 返回列表