เช็กฝนวันนี้ด้วย Dark Sky ใน Home Assistant

การรู้ว่าวันนี้ฝนจะตกหรือไม่เป็นคำถามสำคัญที่ส่งผลต่อแผนการและกิจกรรมประจำวัน บทความนี้อธิบายวิธีการใช้ข้อมูลสภาพอากาศ 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 

ระบบนี้เป็นโซลูชันที่มีประสิทธิภาพสำหรับการตอบคำถาม “วันนี้ฝนจะตกหรือไม่” และดำเนินงานต่างๆ เช่น การควบคุมสปริงเกอร์โดยอัตโนมัติตามคำตอบ การใช้ความรุนแรงของฝนที่คาดการณ์ไว้ช่วยในการคาดการณ์ปริมาณน้ำฝนและหลีกเลี่ยงการรดน้ำที่ไม่จำเป็น

Leave A Comment

Name*
Message*