การรู้ว่าวันนี้ฝนจะตกหรือไม่เป็นคำถามสำคัญที่ส่งผลต่อแผนการและกิจกรรมประจำวัน บทความนี้อธิบายวิธีการใช้ข้อมูลสภาพอากาศ Dark Sky ภายใน Home Assistant เพื่อตรวจสอบว่าคาดว่าจะมีฝนตกหรือไม่และดำเนินการโดยอัตโนมัติตามการพยากรณ์อากาศ
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 เพื่อติดตามว่าฝนตกเมื่อวานนี้หรือไม่ Boolean นี้จะถูกตั้งค่าโดยระบบอัตโนมัติและรีเซ็ตทุกเช้า
input_boolean:
rained_yesterday:
name: ฝนตกเมื่อวาน
icon: mdi:weather-pouring
ระบบอัตโนมัติจะทำงานทุกๆ ชั่วโมง 15 นาทีเพื่อตรวจสอบความรุนแรงของฝนในปัจจุบัน หากความรุนแรงเกินเกณฑ์ที่กำหนดไว้ล่วงหน้า (เช่น 0.5 มม./ชม. ซึ่งบ่งชี้ว่าฝนตกปานกลาง) ระบบจะตั้งค่า “rained_yesterday” boolean เป็นจริง
- alias: rain_meter
trigger:
# Run every 1h 15 minutes.
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” boolean จะยังคงเกี่ยวข้อง
- 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” boolean หาก boolean นี้เป็นเท็จ (ระบุว่าไม่มีฝนตกเมื่อวานนี้) และการพยากรณ์อากาศวันนี้ไม่ได้คาดการณ์ว่าฝนจะตก สคริปต์จะเปิดใช้งานสปริงเกอร์
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
ระบบนี้เป็นโซลูชันที่มีประสิทธิภาพสำหรับการตอบคำถาม “วันนี้ฝนจะตกหรือไม่” และดำเนินงานต่างๆ เช่น การควบคุมสปริงเกอร์โดยอัตโนมัติตามคำตอบ การใช้ความรุนแรงของฝนที่คาดการณ์ไว้ช่วยในการคาดการณ์ปริมาณน้ำฝนและหลีกเลี่ยงการรดน้ำที่ไม่จำเป็น